opencv线性滤波(滤波与模糊的区别)
生活随笔
收集整理的這篇文章主要介紹了
opencv线性滤波(滤波与模糊的区别)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
濾波與模糊的區別:
? ? 濾波與模糊是很容易混淆的概念:圖像濾波是在保留圖像細節特征的情況下盡可能對目標的噪聲進行抑制,而模糊本質就是濾波。
? ? ?大家都知道圖像的細節保存在高頻區域,圖像的輪廓保存在低頻區域;對于高斯濾波器而言,當使用高斯低通濾波器時,圖像細節被濾除,只保留圖像輪廓,這就是模糊;當使用高斯高通濾波器時,圖像輪廓被濾除,只保留圖像細節,這就是銳化。
圖像線性濾波的綜合實例
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<vector>
#include<time.h>
#include<opencv2/core/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//--------------------------------------【main( )函數】-----------------------------------------
// 描述:控制臺應用程序的入口函數,我們的程序從這里開始執行
//-------------------------------------------------------------------------------------------------
Mat src = imread("D:\\VC\\c++\\opencv源碼\\opencv源碼\\12.bmp");
Mat dst1, dst2, dst3;int boxfilter = 3;//方框濾波參數值
int meanfilter = 3;//均值濾波參數值
int gaussfilter = 3;//高斯濾波參數值//方框濾波回調函數
void on_box(int, void*)
{boxFilter(src, dst1,-1,Size(boxfilter+1, boxfilter+1));imshow("方框濾波圖", dst1);
}//均值濾波回調函數
void on_mean(int, void*)
{blur(src, dst2, Size(meanfilter + 1,meanfilter + 1),Point(-1,-1));imshow("均值濾波圖", dst2);
}//高斯濾波回調函數
void on_gauss(int, void*)
{blur(src, dst3, Size(gaussfilter + 1, gaussfilter + 1));imshow("高斯濾波圖", dst3);
}int main()
{double time0 = static_cast<double>(getTickCount());//記錄起始時間namedWindow("原圖", WINDOW_FREERATIO);imshow("原圖", src);//方框濾波namedWindow("方框濾波圖", WINDOW_FREERATIO);createTrackbar("內核值", "方框濾波圖", &boxfilter, 20, on_box);on_box(boxfilter, 0);//均值濾波namedWindow("均值濾波圖", WINDOW_FREERATIO);createTrackbar("內核值", "均值濾波圖", &meanfilter, 20, on_mean);on_mean(meanfilter, 0);//高斯濾波namedWindow("高斯濾波圖", WINDOW_FREERATIO);createTrackbar("內核值", "高斯濾波圖", &gaussfilter, 20, on_gauss);on_gauss(gaussfilter, 0);time0 = ((double)getTickCount() - time0) / getTickFrequency();cout << "此方法運行時間:" << time0 << "秒" << endl;//輸出運行時間waitKey(0);return 0;
}
?
?
?
總結
以上是生活随笔為你收集整理的opencv线性滤波(滤波与模糊的区别)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv感兴趣区域ROI的图像混合操
- 下一篇: 非线性滤波(opencv)