Python
 Computer >> コンピューター >  >> プログラミング >> Python

OpenCVのdilate()関数を使った画像の膨張(ダイレーション)処理

この記事では、OpenCVライブラリに用意されているdilate()関数を使って、画像を膨張(ダイレーション)させる方法を解説します。

膨張とは、モルフォロジー変換(形態学的処理)の一種で、画像内のオブジェクトの境界部分にピクセルを追加していく操作です。これにより、白い領域が広がり、画像全体が四方へと拡大されたように見えます。ノイズ除去後の小さな穴を埋めたり、物体同士をつなげたりする前処理としてもよく使われます。

元画像

OpenCVのdilate()関数を使った画像の膨張(ダイレーション)処理

処理の流れ(アルゴリズム)

ステップ1:cv2 と numpy をインポートする。
ステップ2:cv2.imread() を使って画像を読み込む。
ステップ3:np.ones() 関数を使ってカーネルを定義する。
ステップ4:画像とカーネルを dilate() 関数に渡す。
ステップ5:処理結果の画像を表示する。

サンプルコード

import cv2
import numpy as np

image = cv2.imread('testimage.jpg')
kernel = np.ones((3,3), np.uint8)

image = cv2.dilate(image, kernel)
cv2.imshow('Dilated Image', image)
cv2.waitKey(0)

※ ウィンドウに画像を正しく表示して保持するために、cv2.waitKey(0) を追加しています。これがないとウィンドウがすぐに閉じてしまうことがあります。

出力結果

OpenCVのdilate()関数を使った画像の膨張(ダイレーション)処理

解説

出力結果を見ると、元の画像に比べて全体が膨張していることがわかります。画像のピクセルが周囲に向かって拡張されるため、輪郭が太くなり、画像全体がやや歪んでぼやけたように見えます。これは膨張処理の正常な挙動です。

カーネルサイズのポイント

サンプルでは np.ones((3,3), np.uint8) により3×3のカーネルを定義しています。このカーネルのサイズを大きくするほど、膨張の効果は強くなります。たとえば5×5や7×7のカーネルを使うと、より大きく領域が拡張されます。用途に応じてカーネルサイズを調整してみてください。

  1. Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説

    OpenCVによる画像処理OpenCV(Open Source Computer Vision)は、機械学習とコンピュータビジョンのために開発されたオープンソースのプログラミングライブラリです。コンピュータビジョンアプリケーション開発のための共通基盤を提供し、商用製品への機械学習の導入を迅速化します。OpenCVには、2,500以上の最適化されたアルゴリズムが含まれており、古典的な手法から最先端の手法まで、コンピュータビジョンと機械学習の両分野をカバーしています。これらの豊富なアルゴリズムにより、顔検出・認識、物体识别、動画内の人間の動作の分類、カメラの動きの追跡、複数画像の結合による高解像度

  2. OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方

    この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ