Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 OpenCV를 사용한 이미지 침식 및 팽창

<시간/>

이 문제에서는 Python이 OpenCV 모듈을 사용하여 침식 및 팽창과 같은 일부 형태학적 작업을 수행하는 방법을 볼 수 있습니다. OpenCV 라이브러리는 주로 컴퓨터 비전용으로 설계되었습니다. 오픈 소스입니다. 원래 인텔에서 설계했습니다. 오픈 소스 BSD 라이선스에 따라 무료로 사용할 수 있습니다.

OpenCV 기능을 사용하려면 pip를 사용하여 다운로드해야 합니다. .

sudo pip3 install opencv-python

침식 이미지란 무엇이며 어떻게 작동합니까?

침식에서는 전경 개체의 경계를 침식합니다. 이미지에서 작은 백색 노이즈를 제거하는 데 사용됩니다. 침식은 두 개의 연결된 이미지를 분리하는 데 사용할 수도 있습니다.

  • 커널은 이미지에서 형성됩니다. 커널은 3, 5, 7과 같이 순서가 홀수인 행렬입니다.

  • 이미지의 픽셀이 선택됩니다. 이 픽셀은 커널 아래의 모든 픽셀이 1인 경우에만 1로 선택됩니다. 그렇지 않으면 침식됩니다.

  • 따라서 경계 근처의 모든 픽셀은 삭제됩니다.

  • 따라서 전경 개체의 두께가 감소합니다.

Dilation Image란 무엇이며 어떻게 작동합니까?

Dilation에서는 물체 면적을 증가시킵니다. Erosion은 백색 잡음을 제거할 수 있지만 이미지를 축소하기도 하므로 Erosion 후에 Dilation을 수행하면 더 나은 노이즈 제거 결과를 얻을 수 있습니다. 팽창은 또한 개체의 일부 깨진 부분을 결합하는 데 사용할 수 있습니다.

  • 커널은 이미지에서 형성됩니다. 커널은 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를 사용한 이미지 침식 및 팽창