본문 바로가기

Image Processing (Python)17

Gamma Correction (감마 보정) 함수 설명 이미지가 너무 어둡거나 밝은 경우, 픽셀 값의 변화를 통해 밝기를 보정하는 작업을 합니다. 간단한 방법으로는 모든 픽셀 값을 동일한 비율만큼 증가시키거나 감소시키는 것입니다. 이를 선형적 방법이라고 부릅니다. 하지만 선형적 방법으로 보정을 하게 되면 전체적인 밝기가 일괄적으로 변화하게 됩니다. 반면, Gamma correction (감마 보정)은 모든 픽셀을 동일한 비율로 변화시키지 않습니다. 위의 식처럼 픽셀 값들이 각각 다른 비율로 변하게 되고, 이러한 변화방법을 비선형 방법이라고 부릅니다. 아래 그래프처럼 감마 값에 따라 변화의 방향이 달라집니다. gamma > 1이면 어두운 영역의 변화폭은 크고 밝은 영역의 변화폭은 작습니다. 그러므로 밝은 영역이 급격하게 밝아지지 않고 유지되면서, 어.. 2021. 11. 19.
Embossing (엠보싱) 함수 설명 엠보싱의 사전적 정의는 종이나 금속판 등에 올록볼록한 형태의 윤곽 또는 무늬를 뜻한다. 엠보싱 효과를 줄 수 있는 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와.. 2021. 11. 18.
Smoothing 함수 설명 이미지에 흐림효과를 주어 번져보이게 하는 함수입니다. 주로 이미지안에서 노이즈를 줄이거나 경계선을 흐리게 할 때 사용합니다. Smoothing filter에 따라 결과가 달라집니다. 주로 많이 사용하는 4가지 filter에 대해 소개하겠습니다. 1. Averaging Filter Averaging 방법은 주변 픽셀값들의 평균을 취하는 형태입니다. 아래와 같은 filter를 곱해 새로운 픽셀 값을 도출합니다. 2. Gaussian Filter Gaussian filter는 가운데 부분의 값을 좀 더 큰 값으로 할당하여 중심 값을 보존하면서 주변의 값에 대한 평균을 취하는 형태입니다. 아래와 같이 Gaussian 분포를 가지는 filter를 곱해 새로운 픽셀 값을 도출합니다. 3. Median F.. 2021. 11. 17.
Flip (대칭) 함수 설명 이미지를 좌우 또는 상하 반전을 할때 사용하는 함수입니다. 이미지의 중심 픽셀을 기준으로 좌우 반전은 y축 대칭, 상하반전은 x축을 대칭을 통해 새로운 픽셀 값을 획득합니다. 코드 설명 python에서 이미지 대칭을 할 수 있는 방법은 다양합니다. 그 가운데 몇가지 방법에 대해 소개하도록 하겠습니다. 1. OpenCV 라이브러리 import cv2 cv2.flip(src, flipCode) 1) src : 바꾸고 싶은 source 이미지 2) flipCode : 대칭 방향 -1 : 좌우, 상하 반전 0 : 상하 반전 1 : 좌우 반전 2. numpy 라이브러리 import numpy as np np.flip(src, (0, 1)) : 좌우, 상하 반전 np.flipud(src) : 상하 반전 .. 2021. 11. 16.
Sharpening (샤프닝) 함수 설명 Sharpening이란 주변 pixel과의 차이를 극대화시켜 경계 부분의 명암 비를 증가시키는 작업을 뜻합니다. 이러한 처리를 통해 이미지의 구조적 정보 및 edge를 강조시켜 보다 선명한 이미지를 얻을 수 있습니다. 해당 픽셀만 강조하기 위해 주변부의 픽셀의 값을 감소시켜야합니다. 위처럼 강조될 강도를 maks 중앙에 지정하고(9), 주변부의 값을 줄여 총합이 1이 되도록 mask를 생성합니다. 생성된 mask를 가지고 이미지를 필터링하면 강조된 이미지를 얻을 수 있습니다. 코드 설명 python3 기반 OpenCV 라이브러리를 사용했습니다. kernel = np.array([ [(1 - strength) / 8, (1 - strength) / 8, (1 - strength) / 8], [(.. 2021. 11. 15.
Image Read (이미지 불러오기) 함수 설명 컴퓨터상에서 우리가 눈으로 보고 있는 이미지는 디지털 이미지로, 이는 숫자로 이루어진 데이터입니다. 위처럼 각각 값을 가지는 픽셀들이 촘촘히 뭉쳐서 하나의 이미지를 이루고 있는 것입니다. 여기서 픽셀 값은 디지털 카메라에서 촬영시 들어온 빛의 양을 나타냅니다. 그러므로 픽셀 값이 클수록 밝은 영역이고 값이 작을수록 어두운 영역을 표현하고 있습니다. 아래처럼 밝고 어두움을 나타내는 이미지를 Grayscale (회색조) 이미지라고 합니다. 다음으로, Color 이미지는 빛의 삼원색(빨강, 초록, 파랑)의 조합을 통해 모든 색상을 만들어냅니다. 즉, 우리가 보고 있는 color 이미지는 R, G, B 채널이라고 부르는 3개의 Grayscale 이미지의 합으로 이루어져있습니다. 각 채널의 값이 높을수.. 2021. 11. 11.
728x90