퐈니썬's LIfe - 잘 실패하자 RSS 태그 관리 글쓰기 방명록
상하반전 (1)
2022-01-21 00:19:05
728x90
반응형

<Introduction>

입력 이미지를 "상하좌우 대칭 변환 (Image Flip)"을 구현해 보고자 합니다.

opencv 라이브러리를 통해 간단하게 진행이 가능하지만, 전반적인 이미지 처리에 대한 이해를 다지고자 작성하였습니다. 

 

<Flip>

이미지 대칭 변환(Flip)은 2차원에서는 width 방향, height 방향에 대하여 반전이 가능합니다.

입력 이미지의 크기와 이미지 대칭 변환을 한 출력 이미지의 크기는 동일합니다. 

 

입력 이미지의 크기가 (w, h)일때, 입력 이미지 위의 좌표 (x, y)는 다음과 같은 수식의 형태로 결과 이미지에서 좌표 (x', y')에 매핑합니다. 

 

[상하 대칭 변환]

$$  x' = x $$

$$  y' = h -1 -y $$

 

[좌우 대칭 변환]

$$  x' = w -1 -x $$

$$  y' = y $$

 

<구현>

import cv2
import numpy as np
#Load image
img = cv2.imread('./../Image02.png')
height, width = img.shape[0], img.shape[1]
#Flip
output = np.zeros((height, width,3), dtype=np.uint8)

for x in range(height):
    for y in range(width):
        xp = height - x - 1       #상하 반전
        yp = width - y - 1        #좌우 반전
        output[x,y] = img[xp, y] #상하 반전
        # output[x, y] = img[x, yp] #좌우 반전

cv2.imwrite('./flip_implement.png', output)

 

 

728x90
반응형