Python과 OpenCV – 12 : Morphological Transformations

이 글의 원문은 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html#morphological-ops 입니다.

Morphological Transformations, 즉 형태변환은 흑과 백으로 구성된 바이너리 이미지에 대해 수행되는 연산으로 이미지가 나타내는 형태에 대한 변환을 발생시킵니다. 변환의 종류에는 Erosion(침식), Dilation(확장), Opening, Closing 등이 있습니다.

변환 종류별로 하나씩 살펴보겠습니다.

먼저 Erosion에 대한 예제입니다.

결과는 아래와 같습니다.

다음은 Dilation에 대한 예제입니다.

결과는 다음과 같습니다.

다음은 Opening 연산입니다.

결과는 다음과 같은데, 침식 연산을 먼저 수행하고 다음에 확장 연산을 수행한 결과와 같습니다.

다음은 Closing 연산입니다.

결과는 다음과 같은데, 먼저 확장 연산을 수행하고 다음에 침식 연산을 수행한 결과와 같습니다.

다음은 Morphological Gradient 연산입니다.

결과는 다음과 같은데, 확장 연산의 결과에서 침식 연산의 결과를 빼낸 이미지와 같습니다.

다음은 Top Hat 연산입니다.

결과는 다음과 같습니다.

다음은 Black Hat 연산입니다.

결과는 다음과 같습니다.

지금까지의 형태변환을 수행할때 사용한 커널 행렬 즉, Structuring Element는 numpy의 사각형 모양의 단위 행렬을 사용했는데.. 필요에 따라 원이나 십자가, 타원 모양의 행렬도 생성하여 형태변환을 수행할 수 있습니다. 아래의 예제는 이러한 다양한 Structuring Element를 생성하는 예제입니다.

위는 모두 5×5 행렬 3개를 생성하고 있는데, 각각의 결과는 다음과 같습니다.


[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]

[[0 0 1 0 0]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[0 0 1 0 0]]

[[0 0 1 0 0]
[0 0 1 0 0]
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]]

Python과 OpenCV – 11 : 이미지를 부드럽게 만들기

이 글의 원문은 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_filtering/py_filtering.html#filtering 입니다.

OpenCV를 이용해 다양한 저주파 필터(Low-pass filter)를 이용해 이미지를 부드럽게, 즉 블러링(Bluring) 처리를 하는 내용입니다.

2D Convolution, 같은 의미로써 이미지 필터링(Filtering)은 고주파, 또는 저주파 필터를 이용해 이미지를 처리하는 것을 의미합니다. 여기서 필터는 예를들어 아래와 같은 행렬입니다.

위의 필터가 이미지의 각 픽셀을 순회하면서 해당 픽셀 주위의 픽셀들와 곱해져 더해집니다. 위의 필터에 대한 이미지 필터링에 대한 예제 코드는 다음과 같습니다.

위의 7번 코드가 앞의 필터 행렬을 생성하고 있고 8번코드의 cv2.filter2D 함수가 이미지에 대해 해당 필터를 적용하여 그 결과 이미지를 반환합니다. 실행 결과는 다음과 같습니다.

다시 이글의 주제로 돌아와서 이미지를 부드럽게 처리하는 LPF로써 OpenCV에서 제공하는 4가지 필터를 정리합니다. 먼저 평균 필터인데, 이는 이미 앞의 예제 코드와 동일하며 다음과 같은 코드 역시 동일한 결과를 생성합니다.

다음은 가우시안 필터링(Gaussian Filtering)에 대한 예제입니다.

다음은 Median Filtering에 대한 예제인데, 이 필터는 잡음 제거 효과가 뛰어납니다.

다음은 Bilateral Filtering이며 잡음 제거 효과가 좋으면서, 가장자리를 보존하는데 효과적입니다. 단, 속도가 느리다는 단점이 있습니다.