BETA

OpenCV生活17日目 トップハットで明るい領域の検出

投稿日:2020-07-23
最終更新:2020-07-23

元画像とオープニング(縮小+膨張)の操作した画像の差分を取ることで、局所的に明るい領域を検出することができます。
この差分をとる操作をトップハットといい、今回はこれを扱います。

なお、オープニングを扱った記事を以前にあげていますので、参考までにどうぞ。
OpenCV生活15日目 膨張と収縮の組み合わせによるopeningとclosing

トップハットで局所的に明るい領域が検出できる理由

オープニングの処理によって局所的に明るい領域は暗い領域へ置き換えられてしまいます。
一方で、局所的に明るい領域を除けば、オープニング適用後の画像はあまり変化がありません。

ということで、元画像からオープニング適用後の画像を引けば、局所的に明るい領域だけが残った画像が得られます。

OpenCVでトップハット

次の画像に適用することを考えます。

トップハットは次のようにして実現できます。

kernel = np.ones((11, 11),np.uint8)  
erosion = cv2.erode(img, kernel, iterations=1)  
opening = cv2.dilate(erosion, kernel, iterations=1)  
tophat = img - opening  

オープニング適用後         tophat適用後

周辺より明るいヒゲの部分などが検出できています。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@opqrstuvcutの技術とか技術以外のブログ 最近フリーランスになりました

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう