2010-06-21 3 views
6

이미지 크기 축소에 사용할 알고리즘은 무엇입니까?이미지 축소에 사용할 알고리즘은 무엇입니까?

더 빠릅니다.

플래시 및 실버 플레이어 및 html5와 같은 거물들이 이미지 크기 조정 (예 : 큰 600x600에서 매우 작은 6x6으로 축소)을 위해 어떤 알고리즘이 수행됩니까?

+1

한 가지 질문에 많은 질문이 있습니다. –

+4

어떤 선택을하든 관계없이 이미지 축소는주의와 연민으로해야합니다. 기억하십시오 : 이미지에도 가족이 있습니다. –

답변

7

바이 리니어는 가장 널리 사용되는 방법이며 가장 가까운 정확도가 가장 가까운 가장 가까운 이웃 다운 샘플링 알고리즘만큼 빠르게 실행되도록 만들 수 있습니다.

바이 리니어 샘플링의 순진한 구현에 대한 문제는 이미지를 반으로 줄이려면 가장 가까운 이웃에서 발생하는 것과 유사한 앨리어싱 인공물로 실행할 수 있다는 것입니다. 이에 대한 해결책은 피라미드 기반 접근 방식을 사용하는 것입니다. 기본적으로 600x600을 30x30으로 줄이려면 먼저 300x300, 150x150, 75x75, 38x38로 축소 한 다음 bilinear를 사용하여 30x30으로 줄입니다.

이미지를 반으로 줄이면 쌍 선형 샘플링 알고리즘이 훨씬 간단 해집니다. 기본적으로 각 픽셀 교번 행과 열의 :

y[i/2][j/2] = (x[i][j] + x[i+1][j] + x[i][j+1] + x[i+1][j+1])/4; 
+1

bilinear는 마지막 단계에서만 사용해야한다는 것을 의미합니까? – jayarjo

1

일반적으로 필자는 크기를 줄이기 위해 bilinear 필터를 사용합니다. 이미지를 크기가 작은 크기로 조정하려면 운이 좋지 않을 수 있습니다. 대부분의 아이콘은 손으로 픽셀을 수정하여 가장 잘 보이게 만듭니다.

Here은 개념을 아주 잘 설명하는 훌륭한 자료입니다.

1

코드 프로젝트에는 다양한 이미지 필터의 효과를 보여주는 훌륭한 article이 있습니다.

이미지 축소의 경우 바이 큐빅 알고리즘을 제안합니다. 자연스러운 선명 효과가 있으므로 이미지의 디테일이 더 작은 크기로 유지됩니다.

+0

해당 페이지에서 404 오류가 발생합니다. 스케일링 (scaling up)을 위해 바이 큐빅 (bicubic)을 제안 할 것이지만, 축소를 위해 필자는 필자의 쌍 일선 (bilinear)을 고수한다. 결국 그것은 큰 차이를 만들지 않을 것입니다. –

+0

@Ben, 링크가 고정되었습니다. 나는 동의하지 않는다. bilinear에는 확대 할 때 톱니 모양을 제거하는 부드럽게 효과가 있지만 크기를 줄일 때 디테일을 씻어내는 경향이 있습니다. 어쨌든, 기사를보십시오. –

3

한 특수한 경우가있다 :를 감압하지 않고,보다 8 재조정의 직접적인 요인 원료 JPG 데이터에 수행 될 수 8 배보다 JPG의하여 소형화 . JPG는 8x8 픽셀의 압축 된 블록으로 저장되며 평균 픽셀 값이 먼저옵니다. 결과적으로 디스크 또는 네트워크에서 파일을 읽는 데는 일반적으로 파일 크기를 줄이는 것보다 더 많은 시간이 걸립니다.

관련 문제