본문 바로가기

Algorithm

(3)
개선된 신경망 슈퍼 리졸루션 엔진, libsrcnn 변경점 소개 처음 '슈아 왕'에 의해 만들어진 OpenCV 를 이용한 super resolution 을 OpenMP 로 몇배 빠르게 만들었던 작업 뒤에 순수 C++ 로만 구동 되도록 만든 라이브러리 엔진을 작년에 만든 적이 있습니다. (관련글) 기존에 만들었던 엔진에 몇가지 문제가 있었는 점을 확인 한 바가, 내부에 사용된 미리 계산된 학습 데이터가 2배 이내의 이미지에 최적화가 되어 있다는 점 입니다. 그래서 2배를 초과하는 이미지에서는 해당 이미지의 해상도가 SRCNN 알고리즘에 정확히 동작하지 못하는 부분이 많이 발견 되었었 습니다만, 이를 개선하기 위해 2배 단위로 영상 단계별로 scaling 하도록 개선한 소스를 업데이트 하였습니다. 물론 이로 인해 속도가 매우 떨어지게 되는 점은 아쉬운 부분 입니다만, 원..
여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 마지막 날. 몇가지 잘못 구현된 부분을 수정 하고, 간략화 하여 어느정도 복잡도를 가지는 영역 내를 채우는 것을 성공리에 완성 하였습니다. 아직 테스트를 해 보면 매우 복잡한 영역은 여전히 node 에서 잘못 처리되는 경우가 발견 되긴 합니다만, 이 부분은 다음 구현으로 넘기고 이번엔 완료된 것을 통해서 약간의 알고리즘 설명을 남겨 보도록 하겠습니다. 먼저 참고한 알고리즘은 Darel Rex Finley 라는 사람의 페이지를 통해서 입니다. Polygon fill algorithm 알고리즘은 알고나면 꽤 간단 합니다. 먼저, 삼각형을 하나 그린다 치면, 아래 처럼 좌표계가 만들어 지고, 이 좌표계는 vector 에 차곡 차곡 쌓이게 됩니다. 여기서 vector 는 0번째와 마지막 이 ..
LZSS , LZMA(T) 압축 비교. 기존에 사용하던 LZSS 알고리즘 대신 LZMA(T) 알고리즘을 사용해 보았습니다. 코드는 C 로 만들어 져 있는 상태에서 LZSS 와 동일하게 obj 를 생성하여 함께 빌드 하였습니다. 352KB 의 단순한 구조의 BMP 를 가지고 압축을 비교 해 본 결과 LZSS 와 LZMA(T)는 많은 차이가 발생하였습니다. LZMA(T) 가 7zip 에서 사용하는 구조인 것을 감안할때 기대했던 만큼 높은 압축율을 보여 주는 듯 합니다. LZSS : 352KB -> 142KB (40% 만큼 크기 감소) LZMA(T) : 352KB -> 100KB (28% 만큼 크기 감소) 속도에 있어서는 CPU 가 빠른 이유로 차이를 못 느낀다고는 하지만, 일단 압축율을 비교해 보았을 때 LZMA(T) 의 압축알고리즘은 현존 최고..