OpenCV探索之路(三):滤波操作
濾波處理分為兩大類:線性濾波和非線性濾波。OpenCV里有這些濾波的函數,使用起來非常方便,現在簡單介紹其使用方法。
線性濾波:方框濾波、均值濾波、高斯濾波
方框濾波
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std; using namespace cv;int main() {Mat img = imread("lol4.jpg");imshow("原始圖", img);Mat out;boxFilter(img, out, -1, Size(5, 5));//-1指原圖深度imshow("方框濾波", out);waitKey(0);}均值濾波
均值濾波就是方框濾波的一個特殊情況。
均值濾波的缺點就是不能很好地保護細節,在圖像去燥的同時也破壞了圖像的而細節部分,從而使圖像變得模糊,不能很好的去除噪點。
高斯濾波
高斯濾波,可以消除高斯噪聲,廣泛應用于圖像處理的減噪過程。
從效果看出,高斯濾波的而模糊感明顯降低
非線性濾波:中值濾波、雙邊濾波
中值濾波
基本思想就是用像素點的領域灰度的中值來代替該像素點的灰度值,該方法在去除脈沖噪聲、椒鹽噪聲的同時又能保留圖像的細節(不會出現邊緣模糊的情況)。
中值濾波跟均值濾波的思想看起來很相似,只是一個取平均值,一個取中位數而已
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std; using namespace cv;//中值濾波 int main() {Mat img = imread("lol4.jpg");imshow("原始圖", img);Mat out;medianBlur(img, out, 7);//第三個參數表示孔徑的線性尺寸,它的值必須是大于1的奇數imshow("中值濾波", out);waitKey(0);}現在說說中值濾波與均值濾波的比較:均值濾波中噪聲成分會被加入到平均計算,所以輸出是受到噪聲的影響的。但是中值濾波中,由于噪聲成分很難選上,所以基本不影響輸出。當然好的性能也需要付出一點代價的,中值濾波花費的時間是均值濾波的5倍以上。
中值濾波一般采用奇數的卷積核。
中值濾波對一些細節多(特別是細、尖頂的)的圖像不太適合。
雙邊濾波
雙邊濾波的最大特點就是做邊緣保存。
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std; using namespace cv;//雙邊濾波 int main() {Mat img = imread("lol4.jpg");imshow("原始圖", img);Mat out;bilateralFilter(img, out, 25, 25 * 2, 25 / 2);imshow("雙邊濾波", out);waitKey(0);}效果圖看來,雙邊濾波是所有濾波中最清晰的。
轉載于:https://www.cnblogs.com/skyfsm/p/6873188.html
總結
以上是生活随笔為你收集整理的OpenCV探索之路(三):滤波操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 06款别克君越车内顶灯和车门灯一起亮锁了
- 下一篇: C# Aes CryptoStream