2022. 7. 14. 11:54ㆍVision
1. 프로젝트 개요

2. 예제 이미지




(퍼즐의 결과가 상상되시나요?!)
3. 기본적인 알고리즘 설명
3-1. 기준이 되는 고정 블록(왼쪽과 윗쪽)과 이동하며 비교하는 이동 블록으로 구분한다.

고정 블록과 이동 블록 사이의 픽셀값의 차이를 찾아 가장 차이가 적은 블록을 고정 위치로 이동시키며
블록을 완성시킨다.







4. 문제점
조각 1~3은 알고리즘 한번에 맞춰졌다. (놀랐잖아)
하지만, 조각 4번의 경우 글자의 경계선에서 픽셀 차이가 모호한 부분이 발생했다.

4-1 해결방법
하나의 알고리즘으로 모든 조각을 맞추기 위해 정말 다양한 방법을 적용해봤다.
조각을 맞추는 경로를 바꿔보기도 하고, 적용 필터를 바꿔보기도 하고, 회전과 반전을 반복하며 맞춰보기도 했다.
하지만, 정보가 별로 없는 블록에서 계속해서 문제가 발생하였다.
나는 이미지 자체의 근본적인 한계로 보고, 원본 이미지의 픽간 차이를 명확하게 만들기 위해 히스토그램 평활화를 진행했다.



5. 평활화 결과의 문제점
좌측 경계면은 큰 차이가 없지만, 고정 블록의 하단에 글자가 있는 블록이 들어가야 된다는 명확한 정보가 없어 이동 블록이 자신의 위치로 찾아가지 못했다.

5-1 문제 해결
이번에도 여러 알고리즘을 적용해봤지만, 쉽게 해결되지 않았다. 그러던 중 맞춰지지 않은 상단 부분의 가중치를 줄이면
퍼즐이 맞춰지지 않을까? 라는 생각에 가중치를 조절했다.

6. 결과 이미지
결과적으로 적절한 이미지가 얻어졌다.
(하지만 가로, 세로 방향의 차이에 대한 가중치를 조절하는 방법은 주어진 퍼즐 이외엔 적절하지 않다고 생각한다.)




7. MFC UI

8. 코드 설명









