전체 글185 CH06 Opencv-Python Hough Transform(직선, 원) 허프 변환(Hough transform) 직선 검출이란? • 2차원 영상 좌표에서의 직선의 방정식을 파라미터(parameter) 공간으로 변환하여 직선을 찾는 알고리즘 결국에는 y= a'x+b'에서의 한 점은 b= -xa+y에서의 한점을 지나는데 이 점은 y= a'x+b'에 들어가는 파라미터 값 구체적으로 보자면 축적배열(accumulation array) - 직선 성분과 관련된 원소 값을 1씩 증가시키는 배열 직선의 방정식 y = ax + b 를 사용할 때의 문제점 - y 축과 평행한 수직선을 표현하지 못함 ==> 극좌표계 직선의 방정식을 사용(Hough Transform) why? a = 0 이면 수평선은 만들 수 있지만 수직선은 a가 무한대로 가야하기때문 표현 불가능 cv2.HoughLinesP(i.. 2021. 12. 19. CH06 Opencv-Python 영상의 특징추출(Gradient) edge검출(detection)과 미분 에지(edge) • 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분 • 일반적으로 배경과 객체, 또는 객체와 객체의 경계 1. Step Function= 보통 사용하지 않음 2. 서서히 바뀌는 형태(일반적으로 pixel를 서서히 바뀜) 3. Noise가 껴있는 상태 4. Gaussian(blur를 통해서 미분을 진행) 미분(derivative) 미분이란? 미세한 부분에서 어떤 변화가 얼마만큼 발생하고있는지 판단하는 기법(= 순간변화률) ==> 변화가 얼마만큼 나타내는 척도 - 그림1. 작아지거나 커지는 부분을 미분 - 값이 급격하게 변하는 부분을 미분(= 해당 부분의 Edge를 검출하기위해서) *영상에서는 pixel 값이 연속함수가 아니기 때문에 그림3 처럼 나오게.. 2021. 12. 19. CH05 Opencv-Python 기하학적(Geometry) 변환 영상의 기하학적 변환(geometric transformation)이란? • 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업 • Image registration, removal of geometric distortion, etc 이동 변환(Translation transformation) • 가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환 • x축과 y축 방향으로의 이동 변위를 지정 영상의 전단 변환(Shear transformation) - 층 밀림 변환. x축과 y축 방향에 대해 따로 정의 cv2.warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None) -> ds.. 2021. 12. 18. CH04 Opencv-Python Cartoon_filter def cartoon_filter(frame): # 축소한 이미지에서 blur 진행시 단순화가 더 효과적으로 나타남 (h, w) = frame.shape[:2] frame2 = cv2.resize(frame, (w//2, h//2)) # 영상에선 가로 * 세로 # resize안하고 그대로 진행하면 좀 느림? resize 진행하고 적용 blr = cv2.bilateralFilter(frame2, -1, 10, 5) # 내부에서 grayscale변환함 # cv2.Canny로만 사용하면 edge가 흰색(255)가되고 배경이 검정(0) # so, 255 - cv2.Canny() : 반전 됨 # 가장자리 검출 cv2.Canny() edge = 255 - cv2.Canny(frame2, 60, 150) # cv2... 2021. 12. 18. CH04 Opencv-Python 필터링(filtering) - Median, bilateral 잡읍제거 영상의 잡음 제거 영상의 잡음? - 영상의 픽셀 값에 추가되는 원치 않는 형태의 신호 잡음(noise)종류 • 가우시안 잡음 (Gaussian noise) • 소금&후추 잡음, 솔트 패퍼 (Salt&Pepper) Median Filter • 주변 픽셀들의 값들을 정렬하여 그 중앙값(median)으로 픽셀 값을 대체 • 소금-후추 잡음 제거에 효과적 • Quailty가 좋지 않아서 잘 안쓰임 # 이미지에 노이즈 추가 함수 def noisy(noisy_type, image): if noisy_type == 'speckle': row,col,ch = image.shape gauss = np.random.randn(row,col,ch) gauss = gauss.reshape(row,col,ch) noisy = .. 2021. 12. 18. CH04 Opencv-Python 필터링(filtering) - blurring, Sharpening 영상의 필터링(image filtering) 영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업 1. 주파수 공간에서의 필터링(수학적 이론이 필요함) *저주파 = 부드러운 성분 *고주파 = 픽셀 값이 급격하게 바뀌는 성분 2. 공간의 필터링(Correlation, Deep Learning ==> Conv) *영상의 픽셀 값을 직접 이용하는 필터링 방법 *대상 좌표의 픽셀 값과 주변 픽셀 값을 동시에 사용 = 주로 마스크(mask) 연산을 이용함 (마스크 = 커널(kernel) = 윈도우(window) = 템플릿(template)) 다양한 모양과 크기의 마스크 마스크의 형태와 값에 따라 필터의 역할이 결정됨 • 영상 부드럽게 만들기(Mean filter, GaussianBlur) • 영상 날.. 2021. 12. 18. CH03 Opencv-Python Chroma_key Chroma_Key 합성 - 녹색 또는 파란색 배경에서 촬영한 영상에 다른 배경 영상을 합성하는 기술 import cv2 import sys import matplotlib.pyplot as plt # 녹색 배경 영상(여성만 추출) cap1 = cv2.VideoCapture('ch03\\video\\woman.mp4') # 예외처리 if not cap1.isOpened(): print('video open failed') sys.exit() # 비오는 배경 영상 cap2 = cv2.VideoCapture('ch03\\video\\raining.mp4') # 두 영상 크기, FPS 같다고 가정 frame_cnt1 = round(cap1.get(cv2.CAP_PROP_FRAME_COUNT)) frame_cn.. 2021. 12. 18. CH03 Opencv-Python Histogram backprojection 히스토그램 역투영(Histogram backprojection) * 영상의 각 픽셀이 주어진 히스토그램 모델에 얼마나 일치하는지를 검사하는 방법 * 임의의 색상 영역을 검출할 때 효과적 * 확률론적 의미를 가지고 있음(역투영 이미지) cv2.calcBackProject(images, channels, hist, ranges, scale, dst=None) -> dst import cv2 import sys import matplotlib.pyplot as plt src = cv2.imread('ch03\\images\\cropland.png') if src is None: print('Image load failed') sys.exit() # ROI 창 생성(드래그 할 수 있음) / spacebar 누르.. 2021. 12. 18. CH03 Opencv-Python Histogram, Contrast Histogram - 영상의 픽셀 값 분포(= 픽셀의 개수 Counting) 예를 들어 그레이스케일 영상에서 각 그레이스케일 값에 해당하는 픽셀의 개수를 구하고, 이를 막대 그래프의 형태로 표현 Histogram normalized(영상의 자동 명암비 조절) Histogram Stretching 영상의 히스토그램이 그레이스케일 전 구간에서 걸쳐 나타나도록 변경하는 선형 변환 기법 - 단순히 픽셀 개수를 GrayScale 값이 몇개 있다 counting하게 되면 이 영상이 작은 영상일 때와 큰 영상일때의 값을 비교하기가 애매(size를 normalized 할때도 있음) 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어준 것 해당 그레이스케일 값을 갖는 픽셀이 나타날 확률 영상과 히스토그램의 관계 cv2.ca.. 2021. 12. 18. 이전 1 ··· 10 11 12 13 14 15 16 ··· 21 다음