- Geometric Transformation (01:24:00~ ) : 기하학적 변환 ( 예 : 차선을 인식할수 있는 형태로 변환)
- Translation : 이동변환, 크기와 각도 보존 - Euclidean(Translation + Rotation) : 이동+회전, 크기와 각도 보존 - Similarity (Euclidean + Scaling) : 이동+회전+크기, 각도 보존 - Affine : 이동+회전+크기+반전, 3개의 점 기준으로 선 수평성을 유지하며 변환 - Perspective(Projective) : affine + 수평유지x , 4개의 점 기준 변
- Image Smoothing(01:37:30~) : 이미지 필터링 1단계 (예 : 부드럽게 만드는 작업)
- 고주파 이미지 : 밝기 변화가 많은 곳 (경계면) - 저주파 이미지 : 밝기 변화가 적은곳 (일반적인 배경) - LPF(Low Pass Filter) : 고주파 영역 제거 ( blur 처리 : 노이즈와 경계선 흐리게 함.) - HPF(High Pass Filter) : 저주파 영역 제거 ( 경계면 검출 : 배경 사라짐 ) - [cv2.filter2D()] 를 이용하여, 이미지에 필터(커널) 적용 - 커널 : 적용할 필터에 해당하는 행렬 => 행,열의 개수가 많을수록 이미지 전체가 blur처리가 많이 됨.
<filter 적용 방식> - 이미지의 각 픽셀에 커널 적용 => 5x5 윈도우를 올리고, 그 영역에 포함된 값을 곱하여 더한후, 25로 나누어서 현재 픽셀에 대입 (곱들의 합) / N ==> 윈도우 내부의 평균값으로 픽셀값 병
- Morphologicla Transformation(02:01:00~) : 이미지를 Segmentation 하여, 단순화&제거&보정을 통해 형태를 파악하기위해 사용.
=> 이진화된 이미지(흑백)에 사용
Erosion : Structuring Element를 적용해 하나라도 0이 있으면 대상 픽셀 제거 => 작은 Object 제거
Dilation : Structuring Element를 적용해 겹치는 부분이 하나라도 있으면 이미지 확장 => 경계면 부드럽게, 비워진 픽셀 채우기 Opening (Erosion => Dilation) : 작은 Object & 돌기 제거에 적합 Closing(Dilation => Erosion) : 전체적인 윤곽파악에 적합
- Image Gradient(03:25:00)
- Sovel & Scharr Filter : Gaussian Smoothing과 미분 활용, X축과 Y축을 미분하여 경계값 계산 - Laplacian : 가로&세로에 대한 Gradient를 2차 미분한 값, Sobel Filter에 대해 미분의 정도가 더해진 것과 결과물이 비슷함. Blob 검출 사용됨.
- Canny Edge Detection 1. Noise Resuction -> 5x5 Gaussian Filter를 이용하여, Noise 제거 2. Edge Gradient Detection -> 이미지에서 Gradient의 방향 및 크기를 확인 후, 경계값 후보군 선별 3. Non-Maximu Superssion -> 이미지에서 전체 픽셀을 확인, Edge가 아닌 픽셀 제거 4, Hysteresis Thesholing -> 현재까지 Edge로 판단된 결과를 진짜 Edge인지 확인하는 작업. => 최소및 최대값 지정해 약한 edge와 강한 edge 구분 후, 두 edge가 연결되어있으면 남기고 아니면 제거.
- Image Pyamid(03:27:00) : 동일 이미지의 다른 사이즈 set [cv2.pyrUp(),cv2.pyrDown)
1. 두개의 이미지에 대해 Gaussian Pyramid 생성 2. Gaussian Pyramid를 이용하여 Laplacian Pyramid를 생성 3. Laplacian Pyramid를 이용하여, 좌측 및 우측 결합 4. 가장 작은 이미지를 확대하면서 같은 사이즈의 결합 결과와 Add 하여 외곽선을 선명하게 처리.
결과
- Image Contours : Contour을 찾고 Contour을 그림.
=> 대상의 외형을 파악하는데 사용.
- Contour : 동일한 색,강도를 가지고 있는 영역의 경계선을 연결한 선.(등고선과 같은 역할)
- Image Histogram(03:41~) : 이미지의 밝기의 분포를 그래프로 나타낸것 (이미지의 밝기 분포 및 채도확인)
- Histogram : 이미지의 밝기 그래프를 나타낸 그래프, 전체 이미지의 밝기 분포 및 채도 확인 => [cv2calcHist(image,channels,mask,histSize,rages[, hist[,accumulate]]) (channels = 분석 채널, grayscale이면 [0], color면 [0],[0,1] 처럼 사용 (mask = 분석영역, None 값이면 전체이미지 분석)
Histogram Equalization : 히스토그램이 특정영역에 집중되어 있지 않게, 골고루 분포시키는 작업 - CLAHE(Contrast Limited Adaptive Histrogram Equalization) : 밝기의 불균형이 심해, 일반적인 Histogram Equalization 으로는 좋은 처리가 되지 않는 경우, 이미지를 나누어서 나누어진 영역에서 Equalization을 적용하는 방법.
- Templae Matching (03:48:00~): 원본 이미지에서 특정 이미지를 찾는 방법. cv2.matchTemplate()함수 이용
- 원본 이미지에 템플릿 이미지를 좌측 상단부터 이동하면서 비교 진행. - Return의 결과는 흑백이미지로, 원본과 템플릿이 유사한 정도를 나타냄. - cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED는 가장 어두운 곳이 매칭 지점이며, 나머지 방법은 밝은 곳을 기준으로 함.
- Hough Transformation : 이미지에서 모양을 찾는 방법. 이미지의 형태를 찾거나 누락&깨진 영역 복원할 수 있음.
- 허프 변환의 직선 방정식을 사용하며, 특징 점에서 r=xcon + ysin 의 식을 통해 세타를 변환 시키고 (r,세타) 2차원 배열 구함.
- 여러 점에 대해서 위의 과정을 반복한 후, r, 세타에 대한 그래프를 구한 후, 그래프의 선이 만나는 교점이 직선인 확률이 높은 점을 의미.