[파이썬][Scipy] zoom, rotate, label, morphology 예제
Scipy의 이미지 처리 관련 함수인 zoom
, rotate
, label
, 그리고 morphology
의 예제를 제공하겠습니다.
zoom
함수 예제:
zoom
함수는 이미지를 확대 또는 축소하는 데 사용됩니다. 아래 예제에서는 이미지를 확대하는 방법을 보여줍니다.
mport numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import zoom
# 2D 배열로 이미지 생성
image = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 이미지 확대
zoomed_image = zoom(image, 2) # 2배 확대
# 결과 이미지 플로팅
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.title('원본 이미지')
plt.subplot(122)
plt.imshow(zoomed_image, cmap='gray')
plt.title('확대된 이미지')
plt.show()
rotate
함수 예제:
rotate
함수는 이미지를 회전시키는 데 사용됩니다. 아래 예제에서는 이미지를 45도 회전시키는 방법을 보여줍니다.
mport numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import rotate
# 2D 배열로 이미지 생성
image = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 이미지 회전
rotated_image = rotate(image, angle=45, reshape=False)
# 결과 이미지 플로팅
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.title('원본 이미지')
plt.subplot(122)
plt.imshow(rotated_image, cmap='gray')
plt.title('회전된 이미지 (45도)')
plt.show()
label
함수 예제:
label
함수는 연결된 객체를 레이블링하는 데 사용됩니다. 아래 예제에서는 이미지에서 연결된 객체를 레이블링하는 방법을 보여줍니다.
mport numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import label
# 2D 배열로 이미지 생성 (0은 배경, 1은 객체)
image = np.array([[0, 0, 1, 0],
[1, 1, 1, 0],
[0, 0, 0, 0],
[1, 0, 0, 1]])
# 연결된 객체 레이블링
labeled_image, num_features = label(image)
# 결과 이미지와 레이블 수 출력
print("레이블링된 이미지:\n", labeled_image)
print("객체 개수:", num_features)
# 결과 이미지 플로팅
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.title('원본 이미지')
plt.subplot(122)
plt.imshow(labeled_image, cmap='viridis')
plt.title('레이블링된 이미지')
plt.show()
morphology
함수 예제:
morphology
모듈은 형태학적 연산을 수행하는 데 사용됩니다. 아래 예제에서는 이진 이미지에 대한 침식과 팽창을 보여줍니다.
mport numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import binary_erosion, binary_dilation
# 이진 이미지 생성
binary_image = np.array([[0, 0, 0, 0, 0],
[0, 1, 1, 0, 0],
[0, 1, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 0]], dtype=bool)
# 침식 연산 수행
eroded_image = binary_erosion(binary_image)
# 팽창 연산 수행
dilated_image = binary_dilation(binary_image)
# 결과 이미지 플로팅
plt.subplot(131)
plt.imshow(binary_image, cmap='gray')
plt.title('원본 이미지')
plt.subplot(132)
plt.imshow(eroded_image, cmap='gray')
plt.title('침식된 이미지')
plt.subplot(133)
plt.imshow(dilated_image, cmap='gray')
plt.title('팽창된 이미지')
plt.show()
위의 예제들은 Scipy의 이미지 처리 함수인 zoom
, rotate
, label
, 그리고 morphology
함수를 사용하여 다양한 이미지 처리 작업을 수행하는 방법을 보여줍니다.