PyImageSearch (13) 썸네일형 리스트형 OpenCV - 감마 보정(Gamma Correction) 사람의 눈 VS 카메라 센서실제 눈으로 보는 것 보다 카메라로 찍으면 다른데?! 하는 순간이 있는데, 그건 사람의 눈과 카메라 센서는 빛을 인식하는 부분에 있어 차이가 있기 때문이다. 사람의 눈 카메라 센서광량이 두배가 되어도 체감 밝기는 두배만큼 밝게 인식하지 않음밝은 톤보다 어두운 톤에 훨씬 민감함광량에 비례해서 신호를 생성함따라서, 이 차이를 보정하기 위해 감마보정(Gamma Correction)이 필요하다. 2. 감마 보정이란? (Power Law Transform)감마 보정은 픽셀 강도를 전형적인 전원 법칙(power-law) 변환으로 매핑하는 기법입력 영상의 픽셀 값을 [0,255] 범위에서 [0.0,1.0] 범위로 정규화아래 식을 적용하여 보정I = 정.. CDF(누적 분포 함수) 이전 게시물에서 Histogram Equalization과 histogram Matching을 할 때 CDF 를 사용해서 Equalization 및 matching 하였다.여기서 CDF가 뭐지? 하는 궁금증이 생겨 공부해 본 부분을 남긴다 CDF ( Cumulative Distribution Function) 이란? 한국어로는 "누적 분포 함수"히스토그램에서 누적된 모든 히스토그래의 합으로 계산된다.따라서 전체 픽셀수로 나누면 그래프는 "누적 확률 분포"가 된다. 히스토그램이 각 강도 값에서의 빈도(혹은 확률)를 보여준다면, CDF는 “이 값 이하의 픽셀이 전체의 몇 %인가”역할히스토그램 평활화(Equalization) 에서는 이 CDF를 이용해 픽셀 값들을 새로운 값으로 매핑(mapping)CDF값을.. OpenCV - Histogram Matching 히스토그램 매칭이란? 입력 영상(source)의 내용은 그대로 유지하면서 픽셀 강도 분포를 참조 영상(reference)의 분포에 맞추는 이미지 처리 기법이를 통해 조명 조건이 다른 두 장의 사진을 “정규화(normalization)”하여 일관된 처리 파이프라인을 구축할 수 있음. from skimage import exposure# 히스토그램 매칭 수행# 컬러 이미지인지 확인(channel>1 이면 multi=True 넘겨줌)channel_axis = -1 if src.ndim == 3 and src.shape[-1] > 1 else Nonematched = exposure.match_histograms(src, ref, channel_axis=channel_axis) 결과물(Matched)의 그래.. OpenCV - Histogram Equalization Histogram Equalization 이란? 이미지의 히스토그램이 특정영역에 너무 집중되어 있으면 contrast가 낮아 좋은 이미지라고 할 수 없음따라서 좌측 히스토그램 처럼 특정 영역에 집중되어 있는 분포를 오른쪽 처럼 골고루 분포하도록 하는 작업 1. Numpy로 CDF값을 이용해서 균일화 작업 하기import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('images/hist_unequ.jpg');hist, bins = np.histogram(img.flatten(), 256,[0,256])cdf = hist.cumsum()# cdf의 값이 0인 경우는 mask처리를 하여 계산에서 제외# mask처리가 되.. OpenCV - Image Histograms 1. 이미지 히스토그램이란 무엇인가?정의: 히스토그램은 이미지의 픽셀 강도 분포(색상 또는 그레이스케일)를 빈(bin) 단위로 집계한 그래프빈의 의미: 예를 들어 256개의 빈을 사용하면, 각 픽셀 값(0~255)이 몇 번 등장했는지 세어 막대 그래프로 표현 2. cv2.calcHist 함수 cv2.calcHist(images, channels, mask, histSize, ranges) 파라미터설명images히스토그램을 계산할 이미지 배열을 리스트 형태로 감싸서 전달 ( [image] )channels계산할 채널 인덱스 리스트.그레이스케일: [0]컬러(RGB): [0,1,2]mask히스토그램 계산에 포함할 픽셀 영역을 지정하는 바이너리 마스크. 전체 영역 계산 시 None.histSize각 채널별 빈 .. OpenCV - Edge detection 1. 엣지 검출이란?정의: 화소 강도(intensity)의 급격한 변화(discontinuity)를 검출하는 과정.목적: 물체의 윤곽이나 구조를 파악하여 이후 컨투어 추출, 객체 분할 등에 활용.문제점: 단순 그라디언트만으로는 내부 잡음(noise)까지 엣지로 검출되어 원하는 외곽선만 추출하기 어려움 2. 이미지 내 에지(edge)의 종류엣지종류그래프 설명Step edge픽셀 값이 순간적으로 변하는 계단 모양 변화Ramp edge계단이 완만하게 기울어진 형태짧은 거리에 걸쳐 값이 점진적으로 변화Ridge edge두 개의 Ramp Edge가 맞닿아 오르막-평지-내리막 형태Roof edgeRidge에서 꼭대기 부분이 평탄하지 않고 뾰족한 형태 3. Canny Edge Detection 4단계# 1) 영상 .. OpenCV - Image Gradients(엣지검출) Image Gradients란?정의: 각 픽셀에서 이웃 픽셀 간 변화량을 계산해, 변화 방향(orientation)과 크기(magnitude)를 추정활용 예시:에지 맵 생성(Edge Map)객체 외곽선 추출(Contour Detection)이미지 디스크립터 입력(예: HOG, SIFT) 1. 수동으로 그라디언트 계산하기3×3 이웃 픽셀에서 중심 픽셀(빨간색)에 대한 상하좌우 픽셀을 다음과 같이 정의North: I(x, y−1), South: I(x, y+1), East: I(x+1, y), West: I(x−1, y)수직 변화(Gy) = South − North수평 변화(Gx) = East − West그라디언트 크기: G = √(수평변화² + 수직변화²)그라디언트 방향: θ = arctan2(수직변화.. OpenCV - Thresholding(이진화) 1. Thresholding(이진화)이란?Thresholding은 그레이스케일 영상을 이진화하여 픽셀 값을 0 또는 255로 변환하는 기법픽셀 값 p가 임계값 T보다 작으면 0(검정), 크면 255(흰색)을 할당이 과정을 통해 전경(객체)과 배경을 손쉽게 분리가능Basic thresholding where you have to manually supply a threshold value, TOtsu’s thresholding, which automatically determines the threshold value 2. Basic thresholding : cv2.threshold(1) 함수 구조retval, dst = cv2.threshold(src, thresh, maxval, type) 파라미터s.. 이전 1 2 다음