日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV图像锐化/增强

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV图像锐化/增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV圖像銳化/增強
0.綜述
1.Laplacian高通濾波算子
2.Laplacian銳化代碼實踐
3.USM銳化增強算法
4.USM代碼實踐
0.綜述
圖像的卷積計算除了可以完成我們前面介紹的模糊去噪、邊緣檢測等任務外,還可以實現圖像銳化/增強的功能。

圖像銳化是一種突出和加強圖像中景物的邊緣和輪廓的技術。在圖像中,邊緣可以看作是位于一階導數較大的像素位置,因此可以通過求圖像的一階導數來加強圖像的邊緣。同樣我們也可以通過求圖像的二階導數來完成圖像銳化。一般也通過Laplacian濾波加原圖權重像素疊加,關于Laplacian算子可以參考下面這篇博客:
https://blog.csdn.net/PecoHe/article/details/95080569

1.Laplacian高通濾波算子
常用的Laplacian高通濾波算子有:
H1=????1?1?1?1c?1?1?1?1??? H_1=\left[\begin{matrix}-1 & -1 & -1 \\-1 & c & -1\\-1 & -1& -1 \end{matrix}\right]
H?
1
??? ?
?=?
?
?
??? ?
??
?1
?1
?1
??? ?
??
?1
c
?1
??? ?
??
?1
?1
?1
??? ?
??
?
?
??? ?
?

當c大于8的時候表示圖像銳化,越接近8表示銳化效果越好。
當c等于8的時候表示對圖像進行高通濾波。
當c值越大的時候,圖像銳化效果在減弱,中心像素值的作用在提升。
H2=???0?10?15?10?10??? H_2=\left[\begin{matrix}0 & -1 & 0\\-1 &5 & -1\\0 & -1& 0 \end{matrix}\right]
H?
2
??? ?
?=?
?
?
??? ?
??
0
?1
0
??? ?
??
?1
5
?1
??? ?
??
0
?1
0
??? ?
??
?
?
??? ?
?

2.Laplacian銳化代碼實踐
?? ?Mat h1_kernel = (Mat_<char>(3, 3) << -1, -1, -1, -1, 8, -1, -1, -1, -1);
?? ?Mat h2_kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
?? ?
?? ?Mat h1_result,h2_result;
?? ?filter2D(input, h1_result, CV_32F, h1_kernel);
?? ?filter2D(input, h2_result, CV_32F, h2_kernel);
?? ?convertScaleAbs(h1_result, h1_result);
?? ?convertScaleAbs(h2_result, h2_result);

?? ?imshow("h1_result", h1_result);
?? ?imshow("h2_result", h2_result);

運行結果:


3.USM銳化增強算法
USM(Unshrpen Mask)算法是對原圖像先進行一個高斯濾波,然后用原來的圖像像素值減去一個系數乘以高斯濾波后的圖像像素值,然后把得到的像素值歸到0~255范圍內。USM銳化增強算法可以去除一些細小的干擾細節和圖像噪聲,比一般直接使用卷積銳化算子得到的圖像更可靠。

USM銳化公式如下:
原圖像?w?高斯濾波(原圖像)/(1?w) 原圖像-w*高斯濾波(原圖像)/(1-w)
原圖像?w?高斯濾波(原圖像)/(1?w)

其中w為上面所述的系數,取值范圍為0.1~0.9,一般取0.6。

4.USM代碼實踐
這里介紹一下OpenCV中的addWeighted函數:

void addWeighted(InputArray src1,?
?? ??? ??? ??? ? double alpha,?
?? ??? ??? ??? ? InputArray src2,
? ? ? ? ? ? ? ? ?double beta,?
? ? ? ? ? ? ? ? ?double gamma,?
? ? ? ? ? ? ? ? ?OutputArray dst,?
? ? ? ? ? ? ? ? ?int dtype = -1);

其中src1,src2分別為兩個輸入圖像,alpha是輸入圖像1的權重,beta是輸入圖像2的權重,gamma是輸入輸出圖像作和后添加的數值,該值不要太大。

?? ?Mat blur,usm;
?? ?GaussianBlur(input, blur, Size(0, 0), 25);
?? ?addWeighted(input, 1.5, blur, -0.5, 0, usm);
?? ?imshow("usm", usm);

運行結果如下:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的OpenCV图像锐化/增强的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。