2024-1학기 동국대학교 인간컴퓨터상호작용 팀 설계과제 (5조)
본 프로젝트의 핵심 기술 중 하나인 '최소 단위 이미지(MinChunk Image)'를 구하는 알고리즘은 그 독창성과 학술적 가치를 인정받아 SCI 저널인 Applied Sciences에 정식 게재되었습니다.
- 논문 링크(DOI): https://doi.org/10.3390/app16052314
- 해당 논문에는 픽셀 아트 및 최소 단위 이미지에 대한 엄밀한 수학적 정의와, 이를 찾는 과정의 상세한 의사코드(Pseudocode)가 수록되어 있습니다.
- PixelZoom 프로젝트 전체에 대한 프레젠테이션(발표 자료)은 PixelZoom.pdf에서 확인하실 수 있습니다.
- 일반적으로 픽셀 아트(도트 이미지)라고 불리우는 장르의 이미지는, 그 이미지의 확대나 축소를 할 때 "Nearest Neighbor" 보간법을 적용하여야 그 의미를 잃지 않고 확대 축소됨이 널리 알려져 있습니다.
- 이 프로시저는 후술할 세 모듈을 통해 구동되는 이미지 확대-축소기로, 구체적으로는 입력받은 이미지가 픽셀 아트인지 아닌지 구분하고, 그 형태에 알맞는 리사이징을 실행 하는 것을 목적으로 합니다.
- opencv-python
python PixelZoom.py <image_path> <scale> [-speed | -quality]<image_path>에 지정된 이미지가 픽셀 아트일 경우, 자동으로 "Nearest Neighbor" 보간법을 이용합니다.<image_path>에 지정된 이미지가 온전한 픽셀 아트(후술) 일 경우, 최소 단위 이미지(후술) 로의 변환을 거친 뒤 이미지를 리사이징합니다.-speed와-quality는 선택(optional) 인수로, 픽셀 아트가 아닌 이미지의 리사이징에 이용할 보간법을 선택합니다.-speed선택 시 "Bilinear" 보간법을 이용합니다.-quality선택 시 "Bicubic" 보간법을 이용합니다. (기본값).
- 입력받은 이미지가 픽셀 아트인지 아닌지 판별하는 알고리즘
- 입력받은 이미지를 입력받은 유리수 배율로 확대-축소하는 프로시저
- 입력받은 이미지가 온전한 픽셀 아트인지 판별하고, 이를 기반으로 최소 단위 이미지를 구하는 알고리즘
- OpenCV의 Sobel 연산자를 사용하여 이미지의 x방향 및 y방향 기울기(gradient)를 계산합니다.
- 계산된 기울기의 크기와 방향(불연속성)을 분석하여 픽셀 아트 특유의 계단 현상(Aliased edges)을 감지합니다.
- 전체 엣지 픽셀 수 대비 계단 현상이 감지되지 않은 픽셀의 비율(노이즈 레벨)을 계산합니다.
- 해당 노이즈 레벨이 0.5 미만일 경우, 해당 이미지를 픽셀 아트로 판별합니다.
- 일반 이미지 리사이징: 이미지가 일반 이미지로 감지될 경우
normal_resizer.py를 호출하여 보간법을 이용한 리사이징을 진행합니다.- 사용자가 선택한 모드에 따라
-quality(기본값) 입력 시 바이큐빅 보간법(cv2.INTER_CUBIC)을 사용합니다. -speed입력 시 선형 보간법(cv2.INTER_LINEAR)을 사용하여 새로운 크기로 리사이즈합니다.
- 사용자가 선택한 모드에 따라
- 픽셀 아트 리사이징: 픽셀 아트로 감지될 경우, 이미지의 내용물은 유지하면서 사이즈를 변경하기 위해 배경을 제거하는
dot_resizer_v3.py를 호출하여 전용 리사이징 프로세스를 거칩니다.
- 이미지 전처리를 통해 알파 채널(투명도)이나 하얀 배경을 기준으로 마스크를 생성하고, 외곽선을 찾아 실제 내용물(content)의 경계 상자를 추출합니다.
- 추출된 내용물 이미지의 가로(width)와 세로(height) 길이에 대한 공약수 리스트를 1부터 두 값 중 작은 값까지 반복하여 구합니다.
- 큰 공약수부터 역순으로 이미지를 축소(최소 단위 변환)했다가 원본 크기로 다시 확대(
INTER_NEAREST사용)한 후, 원본 이미지와 비교(cv2.absdiff)하여 픽셀 차이가 없는지 검증합니다. - 두 이미지 간 차이가 없다면, 해당 이미지를 온전한 픽셀 아트로 판별하고 당시의 공약수를 최소 단위 묶음(Chunk Size)으로 확정합니다.
- 최소 단위 탐색에 실패한 경우, 배율을 가장 근접한 정수배로 반올림하여 일반적인 리사이즈를 수행합니다.
💡 학술적 배경: 이 과정에서 사용된 '픽셀 아트'에 대한 수학적 정의와, 공약수를 활용하여 최소 단위 이미지를 판별하고 추출해 내는 전체 과정의 상세 의사코드(Pseudocode)는 논문(Applied Sciences, https://doi.org/10.3390/app16052314)에 자세히 수록되어 있습니다.
- 리사이징 검증 과정(축소 후
INTER_NEAREST를 통해 원본 크기로 재확대)을 거쳤을 때, 원본 이미지와 비교하여 픽셀의 차이가 전혀 없는(non-zero count == 0) 상태의 이미지를 의미합니다. - 즉, 모든 도트가 일정한 크기의 픽셀 청크(Chunk) 블록으로 정확히 떨어져 구성되어 있는 완벽한 패턴의 픽셀 아트입니다.
- 온전한 픽셀 아트에서 탐색해 낸 청크 사이즈(공약수)를 바탕으로, 원본 이미지를 해당 청크 사이즈만큼 나누어(축소하여) 생성한 이미지를 뜻합니다.
- 픽셀 아트 내의 시각적 도트 1개가 컴퓨터 상의 실제 1픽셀에 정확히 1:1로 대응되도록 극한으로 압축한 원형 데이터입니다.
- 이 이미지를 바탕으로 입력받은 스케일의 근접 배율을 곱해 최종 결과물을 생성합니다.