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

PythonでOpenCVを使用した画像の侵食と拡張


この問題では、PythonがOpenCVモジュールを使用して侵食や膨張などの形態学的操作を実行する方法を確認します。 OpenCVライブラリは、主にコンピュータビジョン用に設計されています。オープンソースです。もともとはIntelによって設計されました。これは、オープンソースBSDライセンスの下で無料で使用できます。

OpenCV機能を使用するには、 pipを使用してダウンロードする必要があります 。

sudo pip3 install opencv-python

Erosion Imageとは何ですか?

侵食では、前景オブジェクトの境界を侵食します。これは、画像から小さなホワイトノイズを除去するために使用されます。 Erosionを使用して、接続されている2つの画像を切り離すこともできます。

  • カーネルは画像から形成されます。カーネルは行列であり、順序は3、5、7のように奇数です。

  • 画像のピクセルが選択されます。このピクセルは、カーネルの下のすべてのピクセルが1の場合にのみ、1として選択されます。それ以外の場合は、侵食されます。

  • そのため、境界付近のすべてのピクセルが破棄されます。

  • そのため、前景オブジェクトの厚みが減少します。

拡張画像とは何ですか?

膨張では、オブジェクト領域が増加します。エロージョンはホワイトノイズを除去できますが、画像が縮小するため、エロージョン後に拡張を実行すると、より良いノイズ除去結果を得ることができます。膨張は、オブジェクトのいくつかの壊れた部分を結合するためにも使用できます。

  • カーネルは画像から形成されます。カーネルは行列であり、順序は3、5、7のように奇数です。

  • 画像のピクセルが選択されます。このピクセルは、カーネルの下のすべてのピクセルが1の場合にのみ、1として選択されます。

  • 画像の白い領域または前景オブジェクトのサイズを大きくします。

サンプルコード

import cv2 
import numpy as np
input_image = cv2.imread('TP_logo.jpg', cv2.IMREAD_COLOR)
 kernel = np.ones((3,3), np.uint8)       # set kernel as 3x3 matrix from numpy
#Create erosion and dilation image from the original image
erosion_image = cv2.erode(input_image, kernel, iterations=1)
dilation_image = cv2.dilate(input_image, kernel, iterations=1)
cv2.imshow('Input', input_image)
cv2.imshow('Erosion', erosion_image)
cv2.imshow('Dilation', dilation_image)
cv2.waitKey(0)       #wait for a key to exit

出力

PythonでOpenCVを使用した画像の侵食と拡張
  1. PythonでOpenCvを使用した画像の追加とブレンド

    画像関連の問題を解決するときは、行列を作成する必要があることを私たちは知っています。マトリックスの内容は、画像の種類によって異なります。バイナリ画像(0、1)、グレースケール画像(0-255)、RGB画像(255255255)のいずれかになります。したがって、2つの画像を追加する場合、それは非常に単純であることを意味し、それぞれ2つの行列を追加する必要があります。 OpenCVライブラリには、画像を追加するための関数cv2.add()があります。ただし、画像を追加する場合は、2つの画像のサイズを同じにする必要があります。 2つの画像の追加 import cv2 # Readingour I

  2. PythonOpenCvモジュールを使用したヒストグラムの等化

    これは、画像のヒストグラムを使用してコントラスト調整を行う画像処理の方法です。 実際、この方法は通常、多くの画像のグローバルコントラストを増加させます。特に、画像の使用可能なデータが近いコントラスト値で表される場合、この調整により、強度をヒストグラム上でより適切に分散でき、ローカルコントラストの低い領域が可能になります。より高いコントラストを得る。 OpenCVにはこれを行う関数cv2.equalizeHist()があり、その入力は単なるグレースケール画像であり、出力はヒストグラム均等化された画像です。 この手法は、画像のヒストグラムが特定の領域に限定されている場合に適しています。強度の