1. 程式人生 > >OpenCV入門:平滑處理 — 雙邊平滑

OpenCV入門:平滑處理 — 雙邊平滑

平滑處理 — 雙邊平滑

相關函式:

C++: void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, intborderType=BORDER_DEFAULT )

引數解析:

  • src – 源必須是8位或者浮點數,1或者3通道圖片。
  • dst – 輸出圖片,和輸入圖片相同大小和深度。
  • d – 在濾波過程中使用的各畫素鄰域直徑,如果這是一個非整數,則這個值由sigmaSpace
    決定。
  • sigmaColor – 顏色空間的標準方差。數值越大,意味著越遠的的顏色會被混進鄰域內,從而使更大的顏色段獲得相同的顏色。
  • sigmaSpace – 座標空間的標註方差。 數值越大,以為著越遠的畫素會相互影響,從而使更大的區域足夠相似的顏色獲取相同的顏色。當d>0,d指定了鄰域大小且與sigmaSpace無關。否則,d正比於sigmaSpace


相關例項:

#include<opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
#include"opencv2/imgproc/imgproc.hpp"  
#include <stdio.h>  

using namespace cv;

/*
雙邊平滑:void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, intborderType=BORDER_DEFAULT )

引數解析:
src – 源必須是8位或者浮點數,1或者3通道圖片。
dst – 輸出圖片,和輸入圖片相同大小和深度。
d – 在濾波過程中使用的各畫素鄰域直徑,如果這是一個非整數,則這個值由sigmaSpace決定。
sigmaColor – 顏色空間的標準方差。數值越大,意味著越遠的的顏色會被混進鄰域內,從而使更大的顏色段獲得相同的顏色。
sigmaSpace – 座標空間的標註方差。 數值越大,以為著越遠的畫素會相互影響,從而使更大的區域足夠相似的顏色獲取相同的顏色。當d>0,d指定了鄰域大小且與sigmaSpace無關。否則,d正比於sigmaSpace。
**/

int main() {
	cvNamedWindow("雙邊平滑原圖", 0);
	cvNamedWindow("雙邊平滑效果圖",0);

	Mat imageSrc = imread("寒冰射手.jpg");
	imshow("雙邊平滑原圖", imageSrc);
	Mat imageChange;

	//雙邊平滑處理
	bilateralFilter(imageSrc, imageChange, 3, 3 * 2, 3 / 2);
	//顯示效果圖  
	imshow("雙邊平滑效果圖", imageChange);

	waitKey(6000 * 100);
}

效果圖(好像沒多大區別。。。)