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

OpenCVで画像にオープニング処理(開操作)を適用する方法

このプログラムでは、画像に対してオープニング処理(開操作)を実行します。オープニングとは、画像の前景から小さなオブジェクト(ノイズ)を取り除き、背景へと統合するモルフォロジー変換の一種です。また、この手法は画像内から特定の形状を検出する目的にも活用できます。

オープニング処理は、「収縮(エロージョン)→ 膨張(ダイレーション)」という一連の処理として定義されます。まず画像を収縮させて小さなノイズを消し、その後に膨張させることで元の形状をできるだけ復元する仕組みです。

この処理には cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) 関数を使用します。

元画像

OpenCVで画像にオープニング処理(開操作)を適用する方法

アルゴリズム

ステップ1: cv2 と numpy をインポートする。
ステップ2: 画像を読み込む。
ステップ3: カーネル(構造要素)を定義する。
ステップ4: 画像とカーネルを cv2.morphologyEx() 関数に渡す。
ステップ5: 出力結果を表示する。

サンプルコード

import cv2
import numpy as np

# 画像を読み込む
image = cv2.imread('testimage.jpg')

# 5x5 のカーネルを定義
kernel = np.ones((5,5), np.uint8)

# オープニング処理を適用
image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

# 結果を表示
cv2.imshow('Opening', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

コードの解説

  • np.ones((5,5), np.uint8): すべての要素が1の5×5行列を作成し、モルフォロジー処理用のカーネルとして使用します。カーネルサイズが大きいほど、より大きなノイズまで除去できます。
  • cv2.morphologyEx(): 第1引数に入力画像、第2引数に処理の種類(ここでは cv2.MORPH_OPEN)、第3引数にカーネルを指定します。

出力結果

OpenCVで画像にオープニング処理(開操作)を適用する方法

実行すると、前景にあった小さな白いノイズが除去され、滑らかな画像が出力されます。このようにオープニング処理は、ノイズ除去や形状解析の前処理として非常に有用なテクニックです。

  1. PythonとOpenCVを使って画像内の円を検出する方法

    OpenCVはPython向けにcv2ライブラリを提供しており、コンピュータビジョンにおけるさまざまな形状解析に活用できます。本記事では、OpenCVを使って画像の中から「円」を検出する方法を解説します。円の検出にはcv2.HoughCircles()関数を使用します。この関数は、ハフ変換(Hough Transform)を用いてグレースケール画像から円を検出するものです。以下の例では、入力画像を読み込んだ後、そのコピーを作成し、ハフ変換を適用することで画像内の円を検出して出力します。構文cv2.HoughCircles(image, method, dp, minDist)各引数の意味は次の

  2. Python・OpenCVでヒストグラム平坦化を実装する方法|cv2.equalizeHist()の使い方

    ヒストグラム平坦化(Histogram Equalization)とは ヒストグラム平坦化は、画像処理において画像のヒストグラムを利用してコントラストを調整する手法です。 この手法は、多くの画像の全体的なコントラストを向上させる効果があります。特に、画像内の有効なデータが近いコントラスト値で表現されている場合に威力を発揮します。この調整を行うことで、輝度値がヒストグラム上により均等に分布するようになり、局所的にコントラストが低い領域でも高いコントラストを得られるようになります。 OpenCVの cv2.equalizeHist() 関数 OpenCVには、この処理を実行するための関数 cv2