圖像處理之中值濾波

1.認識中值濾波

本文給大家介紹下中值濾波,中值濾波是一種典型的非線性濾波,是基於排序統計理論的一種能夠有效抑制噪聲的非線性信號處理技術,基本思想是用像素點鄰域灰度值的中值來代替該像素點的灰度值

,讓周圍的像素值接近真實的值從而消除孤立的噪聲點。該方法在取出脈衝噪聲、椒鹽噪聲的同時能保留圖像的邊緣細節。所以這些優良特性是線性濾波所不具備的。

1.1應用

在圖像處理中用於消除孤立的噪聲點,對於斑點噪聲和椒鹽噪聲來說尤其有用,因為這種方法不再依賴於鄰域內那些與典型值差別很大的值。

圖像處理之中值濾波


1.2優勢

中值濾波對消除椒鹽噪聲非常有效,能夠克服線性濾波器帶來的圖像細節模糊等弊端,能夠有效保護圖像邊緣信息,是非常經典的平滑噪聲處理方法。在光學測量條紋圖像的香味分析處理方法中有特殊作用,但在條紋中心分析方法中作用不大。

2.OpenCV函數示例

<code>void medianBlur(InputArray src, OutputArray dst, int ksize)/<code>

參數解釋如下:

  • inputArray src:輸入圖像,填1、 3、或者4通道的Mat類型的圖像。當ksize為3或5的時候,圖像深度需為CV_8U、 CV_16U、 CV_32F其中之一,而對於較大孔徑尺寸的圖片,它只能是CV_8U
  • inputArray src:輸入圖像,填1、 3、或者4通道的Mat類型的圖像。當ksize為3或5的時候,圖像深度需為CV_8U、 CV_16U、 CV_32F其中之一,而對於較大孔徑尺寸的圖片,它只能是CV_8U
  • int ksize:孔徑的尺寸,參數必須是大於1的奇數
    ,比如:3,5,7,9, 11, 13, 15等
  • OutputArray dst:輸出圖像,函數的輸出參數,同源圖像同尺寸,同類型

3.C++實現

<code>//--------------------------------------【程序說明】-------------------------------------------
//\t\t程序描述:中值濾波medianBlur函數的使用示例程序
//\t\t開發測試所用操作系統: Windows 10 64bit
//\t\t開發測試所用IDE版本:Visual Studio 2017
//\t\t開發測試所用OpenCV版本:\t3.4
//\t\t2020年3月 Created by @DL小寶
//\t\t2020年3月 Revised by @DL小寶
//------------------------------------------------------------------------------------------------

//-----------------------------------【頭文件包含部分】---------------------------------------
//\t描述:包含程序所依賴的頭文件
//----------------------------------------------------------------------------------------------
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

//-----------------------------------【命名空間聲明部分】---------------------------------------
//\t描述:包含程序所使用的命名空間
//-----------------------------------------------------------------------------------------------
using namespace cv;

//-----------------------------------【main( )函數】--------------------------------------------
//\t描述:控制檯應用程序的入口函數,我們的程序從這裡開始
//-----------------------------------------------------------------------------------------------
int main()
{
\t// 載入原圖

\tMat image = imread("zmm.jpg");

\t//創建窗口
\tnamedWindow("中值濾波【原圖】");
\tnamedWindow("中值濾波【效果圖】");

\t//顯示原圖
\timshow("中值濾波【原圖】", image);
\t//進行中值濾波操作
\tMat out;
\tmedianBlur(image, out, 7);

\t//顯示效果圖
\timshow("中值濾波【效果圖】", out);
\twaitKey(0);
}/<code>

4.可視化


圖像處理之中值濾波


圖像處理之中值濾波



分享到:


相關文章: