cv2.GaussianBlur
とskimage.gaussian_filter
の両方のライブラリを使用してガウスぼかしを適用したイメージがありますが、結果は大きく異なります。なぜ私は好奇心が強いですし、skimage
の外観はcv2
のようになります。私はskimage.gaussian_filter
がscipy.scipy.ndimage.filters.gaussian_filter
のラッパーであることを知っています。その質問をはっきりと述べるために、なぜ2つの機能が異なっているのか、それをより似通ったものにするために何ができるのでしょうか?ここでなぜガウスフィルタはcv2とskimageで異なるのですか?
は私のテスト画像は、次のとおりです。ここで
はcv2
バージョン(ぼやけ表示されます)です。ここで
skimage
/scipy
バージョン(シャープに表示されます)されます。
詳細:
skimage_response = skimage.filters.gaussian_filter(im, 2, multichannel=True, mode='reflect')
cv2_response = cv2.GaussianBlur(im, (33, 33), 2)
だから、シグマ= 2とフィルタのサイズは、それが違いを作るべきではないと十分な大きさです。 Imagemagick covnert -gaussian-blur 0x2
は視覚的にcv2
に同意します。
バージョン:cv2
= 2.4.10、skimage
= 0.11.3、scipy
= 0.13.3
平滑化の量は、サイズではなくシグマによって制御されます。ピクセルは直線的に平均化されず、ガウスカーネルによって重み付けされます。サイズは計算を切り捨て、skimageは4 *シグマのサイズを計算します。バージョンは問題ではありません。これは古くて基本的な機能です。 – waldol1
私がここで読むことができる限り、非難されたfuntion gaussian_filter http://scikit-image.org/docs/dev/api/skimage.filters.html#skimage.filters.gaussian_filterを使用していますが、これは正しいことです基本的な機能です。シグマはカーネルのサイズに相関しています。しかし、私はあなたがscikitで使用している2のsigaがOpenCVのカーネルサイズ33に相当するはずである理由を理解していません。 – tfv
私は数学者ではありませんが、https://en.wikipedia.org/wiki/Gaussian_filter、[quote] "ガウシアンカーネルには{\ sigma} -1の値が6つ必要です3それは長さ17 "のカーネルが必要です。これは、あなたのsima = 2がサイズ6 * 2-1 = 11のカーネルと同等であることを意味します。申し訳ありませんが、私はこれに関する専門家ではありませんが、サイズの仮定を確認することができます。 – tfv