이건 내가 만든 스마트폰 북 스캐너로 찍은 사진을 10분의 1로 축소한 것인데,
사진 속의 책(종이)가 비뚜름하게 있고, 검은색 배경이 있지...
종이 부분만 남기고 나머지 부분을 자동으로 없애는 프로그램을 궁리 중인데....
포토샵 같은 프로그램으로 하려고 들면 얼마든지 할 수 있지만,
회전+선택 영역 크기 조절+자르기+저장하기 버튼 클릭+이름 부여까지 하고, 이걸 반복하려면 아주 귀찮거든..
문득 방법 아이디어가 떠올랐는데, 누가 프로그램으로 구현을 한 번 해 보라고 올려둔다..
혹시 구현되거든 lietz4671@지메일닷컴으로 좀 보내주라... 윈도10 32비트 홈버전 사용중이다...
아이디어 1번. 사진 비교법
책(종이)를 넣지 않은 상태에서 스마트폰 카메라로 찍은 사진과
책(종이)를 넣은 상태에서 스마트폰 카메라로 찍은 사진을 비교한다...
그리고 비교해서 데이터(색깔)가 많이 달라진 부분만 추출하는 거지...
그리고 중심부를 회전하여 가로세로 수평을 잡도록 한다....
아이디어 2번. 모서리 검출법
(가로 좌표, 세로 좌표) = 1픽셀....
가로 좌표 증가, 세로 좌표 고정-->2 픽셀...
...... 반복
1픽셀과 2픽셀과....n픽셀의 색깔을 비교하여, 같은 검은색일 때는 그 가로 좌표는 메모리에서 제외한다..
배경은 검은색이므로, 색깔이 달라지는 픽셀이 발견되면, 그게 종이의 한 쪽 모서리일 가능성이 높다...(네모 반듯한 종이일 경우는 확실함.)
이 좌표를 첫 번째 모서리 좌표라고 부르자.
이 작업을 반대쪽에서 시작하여, 반대쪽 모서리를 검출(좌표)한다.
이 좌표를 두 번째 모서리 좌표라고 부르자.
이번에는 이 작업에서 가로 좌표는 고정하고, 세로 좌표를 증가시킨다.
이 좌표를 세 번째 모서리 좌표라고 부르자.
이 작업을 반대쪽에서 시작하여, 반대쪽 모서리를 검출한다.
이 좌표를 네 번째 모서리 좌표라고 부르자.
1, 2, 3, 4 모서리 좌표들이 있으므로,
1--2, 1--3, 1--4의 거리를 계산하면, 가장 거리가 먼 점이 바로 대각선 방향의 점이다.
따라서 어느 점과 어느 점이 이웃해 있는지 확정할 수 있다.
각각의 좌표들의 거리를 구하면, 가장 먼 거리의 좌표가 대각선 방향임을 알 수 있다.
각 좌표들을 연결하는 직선(사각형의 변)을 정할 수 있다.
사각형 네 모서리 좌표들의 기울기를 계산하면, .
직선의 기울기 k가 양수일 때와 음수일 때가 생기는데,
이 직선들의 교차점 안에 있는 점들은 그대로 남겨두면 바로 종이만 남게 된다....
한편
종이의 모서리가 몇 개 구겨지거나 해서 모서리를 정확히 찾지 못할 경우에는 추가로 보정하는 작업이 필요하다.
그 방법은 사각형 영역에서 마주 보는 두 변의 거리가 일정하다는 점에 착안하였다...
모서리가 구겨지거나, 종이 중간에 구멍이 뚫려 있더라도 무시하고, 좌표를 계속 증가시킨다...
추가)
보정을 위해서,
아이디어 1번의 비교법을 사용하여 사각형의 네 변의 기울기를 찾아내는 것도 좋겠다.
그러면 모서리 일부분이 구겨져도 없어져도 기울기를 찾아낼 수 있을 테니까...
추가) 비교법으로도 네 모서리 좌표를 구할 수 있을 듯하다...
나머지 과정은 모서리 검출법을 적용하고 말이다...
해당 댓글은 삭제되었습니다.
설치해서 써 봤는데, 스캔 품질이 구려서 글렀어....
그래서 그냥 카메라로 찍고, PC에 전송해서, PC 프로그램으로 종이만 자르려고 하는 거야..
난 프로그래머가 아니라서 부탁을 하는 거야...
해당 댓글은 삭제되었습니다.
스캔 품질이 글렀다니까... 카메라 앱으로 찍은 화질이 안 나오더라고.... 그래서 그냥 포기..
육안으로만 봐도 배경이랑 종이랑 대비가 심한데 그냥 대충 openCV 켜고 threshold 돌려서 종이 부분 찾고 사각형 구해서 돌아간 각도 구하고 마스크 하고 사각형영역 클리핑해서 뽑아내면 되는거 아니냐
나는 프로그래머가 아니야... 할 줄 몰라..
이런 프로그램 만들 줄 알면 좀 만들어줘.... 모든 사람이 공짜로 쓸 수 있으면 얼마나 좋겠어?
일당 20만원은 내가 줄게...
20?
더 주고 싶어도 내가 돈이 없어서리...
이 프로그램 만들어주면, 내가 강남역에 나가서 사람들에게 크라우드 펀딩을 해 볼게. 그러면 얼마쯤 더 모아서, 여러 기능 좀 더 붙이고, 디자인 좋게 만들고, ..... 그렇게 하면 못 벌어도 100만원은 더 벌 수 있지 않을까?