2016-04-21 81 views
0
cvSmooth(img, dst, CV_BILATERAL, 3,3,0,0); 

根據函數定義,它應該工作,但我得到的輸入與沒有任何平滑效果的輸入相同。我不明白爲什麼其他平滑類型(高斯,中位數等)能夠很好地工作。cvSmooth()函數的雙邊濾波

+0

請提供[mcve]。你如何比較圖像?順便說一句,OpenCV C API是**棄用** – Miki

回答

0

嘗試增加您的西格馬值。 Sigma1確定顏色在內核中的交互方式。 Sigma2基於空間距離確定加權。雙邊濾波器中零值的西格瑪值意味着您正在使用零的空間和顏色域,這意味着不執行濾波。

+0

cvSmooth(img,dst,CV_BILATERAL,10,20,10,20);' 我也嘗試過這種方式,但沒有影響輸出圖像。 –

+0

還有一些誤解。雙邊濾波器的窗口大小必須爲正方形。你正在使用10,20。 cvSmooth將僅使用第一個大小參數,所以它實際上運行的是10x10內核光圈。你的空間西格馬是20,比內核大。根據輸入圖像的位深度,顏色西格瑪值可能太低而不能顯着影響圖像。如果輸入是8位嘗試類似(img,dst,CV_BILATERAL,10,10,120,10)。另外值得注意的是cvSmooth函數已被棄用。你應該使用bilateralFilter()來代替。 – BHawk