본문 바로가기
Image Processing (Python)

Embossing (엠보싱)

by HanByol Jang 2021. 11. 18.
728x90

함수 설명

엠보싱의 사전적 정의는 종이나 금속판 등에 올록볼록한 형태의 윤곽 또는 무늬를 뜻한다.

엠보싱 효과를 줄 수 있는 mask를 생성 후 필터링을 통해 이미지에 엠보싱 느낌이 나도록 변환해주는 함수이다.

 

엠보싱 필터

위의 3x3 mask를 적용하면 대각선 방향으로 픽셀값의 변화가 적은 부분은 0으로 만들고, 픽셀값의 변화가 큰 경계부분은 명암을 주어 밝거나 어둡게 만듭니다.


코드 설명

python OpenCV 라이브러리를 사용했습니다.

 

kernel = np.array([[-1, -1, 0], [-1, 0, 1], [0, 1, 1]])

cv2.filter2D(src, ddepth, kernel)

1) src : 바꾸고 싶은 source 이미지

2) ddepth : 출력 영상의 데이터 타입. -1 입력시 src와 동일한 타입으로 출력

3) kernel : 필터링을 실시한 mask 행렬


예제

흑백 이미지를 통해 embossing 효과를 확인하는 코드입니다.

 

import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage import io

# Image Load
image = io.imread('flower.jpg')

# Grayscale
gray_image = np.float32(cv2.cvtColor(image, cv2.COLOR_RGB2GRAY))

embossing = np.array([[-1, -1, 0], [-1, 0, 1], [0, 1, 1]])

# Embossing 확연히 볼 수 있도록 pixel 값에 +128
output = cv2.filter2D(gray_image, -1, embossing) + 128

# uint8 처리
output[output > 255] = 255
output[output < 0] = 0
output = np.uint8(output)

# View
plt.subplot(1,2,1)
plt.title('Original')
plt.axis('off')
plt.imshow(image, cmap='gray')

plt.subplot(1,2,2)
plt.title('Embossing')
plt.axis('off')
plt.imshow(output, cmap='gray')
plt.show()

 

경계가 급격히 변하는 꽃의 잎사귀 주변에 embossing 효과가 나타난 것을 확인 할 수 있습니다.

728x90

'Image Processing (Python)' 카테고리의 다른 글

Color Space Change (색공간 변경)  (0) 2021.11.22
Gamma Correction (감마 보정)  (1) 2021.11.19
Smoothing  (0) 2021.11.17
Flip (대칭)  (0) 2021.11.16
Sharpening (샤프닝)  (1) 2021.11.15

댓글