Featured image of post filter2Dで任意のカーネルを扱う

filter2Dで任意のカーネルを扱う

本記事はQrunchからの転載です。


OpenCVではいろいろなカーネルによる演算が用意されていますが、自分で定義したカーネルを使いたいこともあります。 そんなときにはfilter2Dが活躍します。

filter2Dの使い方

filter2Dのシンプルな利用例としては次のようになります。

res = cv2.filter2D(img, ddepth=cv2.CV_8U, kernel=kernel)

ddepthに返り値の型を指定します。ここでは符号なしの8ビット整数を指定しています。 kernelに自分で定義したカーネルを指定します。

filter2Dを使ってみる

次の画像にfilter2Dを使った平滑化を適用してみます。

ksize = 11
kernel = np.ones([ksize, ksize]) / (ksize ** 2)

res = cv2.filter2D(img, ddepth=cv2.CV_16U, kernel=kernel)
plt.imshow(res)
plt.gray()
plt.show()

一応、cv2.blurと等しいかを調べてみます。 次のようにすると等しい結果になったかが分かります。

blur = cv2.blur(img, ksize=(ksize, ksize))
print((blur - res).sum()) # output: 0
comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。