기초적인 이미지 처리 알고리즘
- The Grey level histogram
- Grey level histogram equalization
- Point operations
- Algebraic operations
The Grey level histogram(GLH)
- 보통 정규분포를 따름. 밝기에 따른 픽셀분포를 나타냄
- pixel당 RGB정보를 밝기정보로 교체(0~1) => byte로 저장(0~255)
- 사진이 어두울 경우, 왼쪽으로 쏠린 분포.
- 사진이 밝을 경우, 오른쪽으로 쏠린 분포.
=> 이럴경우, 몰린부분의 픽셀을 나누어 펼쳐야함. 결과적으로 정규분포를 따르도록
Image Segmentation
- 어두운부분과 밝은부분 나누기.
- 두 구역의 구분을 지을 Threshold를 잘 잡아서 물체를 분리한다.
Grey level histogram equalization
- non-linear grey scale transformation을 재배치하는것
- histogram의 누적합으로 histigram을 만든 후에(기울기 1 형태), 전부 비슷하게 조절한다.(y = 1 형태)
=> 흐린사진을 선명하게 표현할 수 있다. 왜? 밝기마다 픽셀을 골고루 분포하도록 했으니.
Point operations
- 각 점에 대해 다른색을 가지도록
- 포토샵에서 곡선을 통해 밝기를 조절하는 그것.
- input에 대한 output을 threshold를 통해 제어
Algebraic operations
- 2개의 이미지를 +(Addition)-(Subtraction)*(Multiplication)/(Division)
- Addition: 노이즈가 많은 이미지에 블러된이미지를 더하면 노이즈가 감소!
- Subtraction: background빼주면 background에서부터 분리!/ 움직임 감지에도 사용
- Multiplication: Mask를 씌워서 원하는부분만 보이도록
- Division: background부분을 0에 가깝게 나누어 원하는 부분만 보이게
Noise Reduction
- 어둡거나 카메라이상이있을 때 Noise가 발생하곤한다.
- N개의 이미지가 있다면 N개의 평균으로 출력. N은 8로 제한됨.
- Local Operation은 주변점과의 조합으로 수행가능.
1. Image smoothing
- noise cleaning
- edge enhancement
- boundary detection
- assessment of texture
Local Operations for Image Smoothing
- 자신의 위, 아래, 왼, 오른 pixel의 평균 => 색의 평균화
=> Noise감소, 큰 변화만 남게됨.
Filters
- low pass filter는 이미지를 부드럽게 만드는 필터로, 블러라고 생각하면 된다. 즉 노이즈를 줄인다.
- high pass filter는 Fourier Transform이 그렇듯 주변과의 차이를 남겨서 이미지를 선명하게 한다.
- median filter는 low pass와 다르게, 블러링 없이 노이즈를 줄여준다.
operator
average, sobel, laplacian(low pass), high pass
Frequency Methods
- Fourier Transform
- 주파수개념: 이미지에선 특정 pattern이 자주반복되면 Frequency가 높은것
- Spatial Frequency: x축 방향으로의 밝기변화를 탐색, 많이 변화하면 주파수가 높아짐
Fourier Filtering
- Discrete Fourier Transform 함수
- 이미지를 복원하거나 압축할 때. Noise해석에 많이 사용.
- 일정영역에 mask 더하거나 빼기: 없어진 부분을 복원하거나 nois를 없앨 수 있음
- 구겨진 영역 삭제
- 2D를 3D로. 선을 그리면 3차원으로 만들어줄 때.
Image Analysis
Segmentation(분리)
- 점단위로 분석, 주변 색 밝기따라 그래프 표현, Threshilding에 따라 객체 나누기
- t보다 작으면 0, 작거나 같으면 255 이런 방식
- 이를 통해, Edge detection, Template matching, Boundary tracking이 가능함
Adaptive Thresholding
- 햇빛이 강하다거나, 노이즈가 있다거나, Threshold가 애매해진 경우, 사용
- 그냥 그대로 두고, 각 곡선의 꼭대기를 잡아서 그 중앙점을 Threshold로 잡는다.
- 전체 큰 기울기를 찾아, x축의 모양으로 주욱 내려준다. 그리고 그 중앙점을 Threshold로 잡는다.
Edge Detection
- High pass filter(Gradiant, Laplacian)이용.
- Edge를 위한 filter, x, y, z를 찾아야함. (Sobel operator)
- 문제는 noise가 방해할지도, 색이비슷하면 잘 찾지못할지도..
Template ,matching
- 원하는 모양찾기
- 원래 픽셀 색상 * template 색의 결과의 합이 커질수록, 매칭이 된것.
- 특정 feature를 찾는데 좋음
Boundary tracking
- Edge를 뽑아서 Boundary trcking
- Edge를 따라가서 시작점과 비슷한 위치 => boundary
- 이 알고리즘은 GPU에서 실행하기 어려움. 왜? 다른점 계산결과 또는 내점을 계산한 결과가 다른계산에 적용되어야하기 때문.
Connectivity, Connected Objects
- 4-connectivity: 주변 4개 점 연결까지의 연결 한 물체
- 8-connectivity: 주변 8개 점 연결도 한 물체
Line Segment Encoding
- Scan line으로 떨어져있을 때는 다른 물체로 구분하다, 두 물체가 붙으면 하나로 생각.
Representation of objects(표현)
Object Membership Map(OMM)
- GPU에서도 간단.
- 특정물체 찾기 쉬움. 같은 물체는 같은 정수로 표현됨
- 단 이것도 Boundary Chain code는 GPU 어려움
Size measurements
Length, Width
- 길이, 폭 계산 합은 어려움.
- 최소, 최대는 병렬 프로그램을 사용하면 가능
Number of holes
- 오일러공식을 사용하여 edge, hole이 몇개인지 알 수 있음
Feature 찾기
- Rectangularity: 직사각형에 가까운지?
- Aspect ratio: 비율이 어떠한지?
=> 길이를 이용하면 됨
- Circularity: 곡면이 균일한지?
=> 면적대비 boundary 길이 계산
Texture Analysis
- 균일한 pattern인지?
- 4도에 뭐가 있고, 10도에 뭐가있고 이런식으로 pattern을 찾아 진행
총정리
- GPU를 써야해! 1/500초만에 4K(4000 * 2000 이상) 이미지를 픽셀당 전부 계산할 수 있어
- 그러니까 GPU로 구현할 수 있는것, 없는것을 구분할 줄 알고
- 구현하기 어렵다면, 어떻게 하면 될까를 생각해보자