목록영상처리 (13)
Koo's.Co
1. 필터링(filtering) 영상에서 필요한 정보만 통과시키고 나머지는 걸러내는 작업 ① 주파수 영역 필터링(Frequency domain filtering) - 저주파 성분과 고주파 성분을 convolution 연산을 통해 처리 ② 공간적 필터링(Spatial domain filtering) - 영상의 픽셀 값을 직접 이용하는 필터링 방법 - 마스크 연산, convolution 연산을 이용 마스크의 형태에 따라 필터의 역할이 결정됨 영상 부드럽게 만들기 영상 날카롭게 만들기 edge 검출 잡음 제거 ... 2. 공간적 필터링: 마스크 연산 1) 픽셀들을 순환하면서 2) 그 주변값들과 mask값들의 값을 곱하여 3) 새로운 값을 연산 최외곽 픽셀의 경우, 마스크에 해당하는 부분을 대칭으로 넘겨 동일한..
1. 히스토그램 평활화(Histogram Equalization) - 히스토그램이 그레이스케일 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법 - 히스토그램 균등화, 균일화, 평탄화라고도 한다 - 누적함수를 이용해 입력 영상의 명암비를 조절 픽셀의 히스토그램 분포를 보면 기존 이미지는 좁게 분포해있지만 stretching과 equalization을 적용한 픽셀의 분포는 넓게 분포한 것을 알 수 있다. stretching은 넓어지는 범위가 일정한 반면, equalization은 cdf를 사용하기 때문에 분포에서 값이 뭉쳐있는 범위가 더 넓게 퍼지게 된 것을 확인할 수 있다. 2. 컬러 영상 Histogram Equalization BGR 색상 영역에서 split을 한 후 equalizat..
1. 명암비(Contrast) - 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이 - 컨트라스트, 대비 - 보통 영상처리를 할 때, 명암비를 높여 영상을 선명하게 만듬 - 글씨나 물체를 좀 더 잘 인식하기 위한 용도로 사용 가능 2. 명암비 조절 - src 이미지에 일정한 가중치를 곱한 후 saturate 연산을 적용 전체적으로 포화가 되는 부분이 많아지거나 최대 밝기가 너무 낮아지는 문제가 있다. import sys import cv2 import numpy as np src = cv2.imread('image.bmp', cv2.IMREAD_GRAYSCALE) if src is None: sys.exit() alpha = 1.0 dst = np.clip((1 + alpha) * src - 128..
1. split BGR로 구성된 영상을 3개의 grayscale 이미지로 나누어 반환함 각 grayscale은 해당 색상 성분이 많을수록 흰색에 가깝게, 적을수록 검정색에 가깝게 표현됨 cv2.split(m, mv=None) -> dst - m: 다채널 영상(B, G, R)로 구성된 영상 - mv: 출력 영상 - dst: 출력 영상 리스트, BGR 순서에 맞는 grayscale 영상을 3개 반환함 2. merge split을 이용해 나눈 3개의 grayscale 영상을 다시 합치는 함수 cv.merge(mv, dst=None) -> dst - mv: 입력 영상 리스트, BGR 순서에 맞는 grayscale 영상 리스트 - dst: 출력 영상 3. cvtColor 영상 색상에 따라 다양한 색영역을 지원함 ..
1. add saturate 연산이 사용되어 포화된 값을 변환시켜 준다 - 최대가 255, 최소가 0 - 최대 밝기 이상인 경우 255로 변환 - 최소 밝기 이하인 경우 0으로 변환 cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst - src1: 첫번째 영상 or 스칼라 - src2: 두번째 영상 or 스칼라 - dst: 덧셈 연산 결과 영상 - mask - dtype: 출력 영상 타입: ex) cv2.CV_8U, cv2.CV_32F ... * src의 영상 타입이 다른 경우 출력 영상의 타입을 지정해주어야 한다 * numpy 자료형이 아닌 opencv의 자료형을 사용해야 한다 2. weighted sum cv2.addWeighted(src1, a..
1. ROI(Region of Interest) 연산에서 특정 연산을 수행하고자 하는 임의의 부분 영역 2. 마스크 연산 - openCV는 일부 함수에 대해 ROI 연산을 지원, 마스크 영상을 인자로 함께 전달해야 한다 - 마스크 영상은 cv2.CV_8UC1 (grayscale image) - 마스크 영상의 픽셀값이 0이 아닌 위치에서만 연산이 수행됨 (픽셀 0 = 검정색) - 마스크 영상으로는 0, 255로 구성된 binary image를 사용 3. copyTo cv2.copyTo(src, mask, dst=None) -> dst - src: 입력 영상 - mask: 마스크 영상, cv2.CV_8U (numpy.uint8) - dst: 출력 영상. src와 크기, 타입이 같은 dst를 입력으로 지정하면..
openCV 라이브러리 외에 matplotlib을 이용하여 영상을 출력할 수 있다. 1. 영상 출력 - opencv와 다르게 RGB 순서로 색상 정보를 입력 받음 - cv2.imread()로 불러온 영상의 색상 정보를 BGR->RGB로 바꿔주어야 함 - cv2.cvtColor() 함수를 사용 - 그레이스케일 영상은 plt.im show()에서 cmap='gray'로 지정 import matplotlib.pyplot as plt import cv2 imgBGR = cv2.imread('image.jpg') imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB) imgGray = cv2.imread('image.jpg', cv2.IMREAD_GRAY) plt.subplot(1..
1. imread cv2.imread(filename, flags=None) -> retval - filename: str : 불러올 영상 파일 - flags: 영상 파일 옵션 플래그 cv2.IMREAD_COLOR BGR 컬러 영상 읽기 (default) shape = (rows, cols, 3) cv2.IMREAD_GRAYSCALE 그레이스케일 영상 읽기 shape = (rows, cols) cv2.IMREAD_UNCHANGED 영상 파일 속성 그대로 읽기 PNG: alpha channel 사용 가능 2. imwrite cv2.imwrite(filename, img, params=None) -> retval - filename: 저장할 영상 파일 이름 - img: numpy.ndarray : 저장할 영..