프로젝트의 요구 사항 : 동전 영상에서 동전의 위치와 개수 파악하기
요구 사항 분석 :
1. 노이즈가 있는 영상은 해당 노이즈에 맞는 방법으로 영상 개선을 해준다.
( -> 어떤 이미지가 들어오든 노이즈 개선을 할 수 있어야함)
2. 배경과 동전 영역을 구분해준다.
3. 동전 인식을 한다.
4. 동전 종류를 파악하기 위해 동전의 크기를 구해 어떤 동전 종류인지 인식한다.
1. 영상 개선
임의의 영상을 입력받았을 때, 해당 영상을 파악하고 개선한다.
- 임의의 영상 입력받음
- 입력받은 임의의 영상을 파악하여 영상 개선함
- 대조비 개선을 위해 히스토그램 평활화함
이미지를 입력으로 받아올 수 있게 함.
순서는 이미지를 받아오고 해당 이미지를 파악한 후 영상 개선을 해주고 대조비 개선을 위해 히스토그램 평활화를 해준다.
이미지가 들어왔을 때 해당 영상의 히스토그램을 구해준다.
솔트앤페퍼 노이즈는 이름처럼 흰 색과 검은색으로 되어있는 노이즈이기 때문에
히스토그램 상에서 히스토그램 평균보다 0과 255값이 크다면 솔트앤페퍼에 효과적인 메디안 필터를 적용해준다.
영상이 너무 밝거나 어둡다면 감마 보정을 통해 조정해준다.
2. 동전 검출
이진화, 오프닝, 동전 검출의 과정을 거친다.
- 배경과 동전의 구분을 위해 영상을 이진화시킴
- 동전 간의 분리를 위해 opening (침식 -> 팽창)을 해줌
- 허프 변환으로 동전 인식함
배경과 동전을 분리시키기 위해 먼저 이진화를 해준다.
서로 붙어있는 동전들이 존재하기 때문에 동전의 분리를 위해서 침식을 해준 뒤 원래와 비슷한 모양이 될 수 있도록 다시 팽창시켜준다.
허프 변환을 통해 동전을 검출해준다.
허프 변환이란 픽셀기반의 이미지에서 기하학적 성분을 추출하는 방법이라고 한다.
y = ax + b 같은 직각좌표계를 (r, theta) 좌표계로 변환한다
한 점을 통과하는 직선은 무수히 많아서 이 직선을 좌표계변환하게 되면 (r, theta)평면에 곡선으로 표현할 수 있다.
원은 (Cx, Cy, R)로 표현된다. 한 edge 점에서 반지름 R만큼 떨어진 점을 찾는 원의 Centre라고 생각하고..
이렇게 찾은 centre점들 중 임계치 이상을 탐색하여 원을 찾는 것이다.
3. 동전 분류
각각의 동전을 인식한다.
- 동전의 반지름을 구해 텍스트 파일에 반지름, 동전 종류로 저장을 해줌.
- 텍스트 파일을 읽어 각 종류별 대표값을 구함.
- 동전 별로 대표값과의 차이를 구해 가장 차이가 적은 것을 해당 동전의 종류로 정함.
동전을 검출했을 때 얻을 수 있는 반지름 값으로 텍스트 파일에 반지름, 동전 종류를 입력해놓는다.
각 값들을 불러와 동전 종류별로 대표값을 계산해준다.
하나의 동전 값이 들어오면 해당 동전의 반지름을 미리 계산해둔 동전 종류별 대표값들과의 차이를 구한다.
종류별로 차이를 다 구해보고 그 중에서 가장 차이가 적게 나는 것을 내 동전 종류으로 인식한다.
시스템 테스트 및 평가
1. 영상 개선
개선 전 영상 / 개선 후 영상
coin1-gaussian
coin3-spnoise3
coin4
coin5-spnoise5
대체로 개선이 잘 되었다.
가우시안노이즈는 심하게 들어간 것인지 가우시안 노이즈에 맞는 가우시안블러를 사용했는데도 불구하고 많이 개선이 되지 않은 것 같다.
2. 동전 검출
동전 검출한 영상
coin1-gaussian
coin3-spnoise3
coin4
coin5-spnoise5
대체로 동그라미가 잘 검출이 되었다.
영상에서 깎인 부분도 있고 정확한 동그라미의 모양이 아니라 조금의 차이값은 존재하는 듯하다.
3. 동전 분류
이진화 영상이 아닌 일반 영상으로 출력해봄
coin1-gaussian
coin3-spnoise3
coin4
coin5-spnoise5
동전의 반지름의 오차도 있고 많은 데이터로 통계를 낸 게 아니라 오차가 발생했다.
'컴퓨터 그래픽스 > 영상처리' 카테고리의 다른 글
[OpenCV] Inverse FFT (LPF, HPF, HFEF) (0) | 2021.05.23 |
---|---|
[OpenCV] Filters (LPF, HPF, HFEF) (0) | 2021.05.23 |
[OpenCV] 2D FFT (Fast Fourier Transform) (1) | 2021.05.23 |
[OpenCV] spatial-domain filter (0) | 2021.05.23 |
[OpenCV] 공간 영역에서의 영상 개선 (0) | 2021.05.23 |