최상의 이미지 축소 알고리즘 (품질 측면)은 무엇입니까?


80

래스터 그림의 크기를 줄이는 데 사용할 수있는 가장 좋은 알고리즘을 찾고 싶습니다. 가장 좋은 결과를 제공하는 것을 의미합니다. 바이 큐빅에 대해 알고 있지만 아직 더 나은 것이 있습니까? 예를 들어 Adobe Lightroom에는 내가 사용하던 표준 바이 큐빅보다 더 나은 결과를 생성하는 일종의 독점 알고리즘이 있다는 이야기를 들었습니다. 안타깝게도이 알고리즘을 소프트웨어에서 직접 사용하고 싶기 때문에 Adobe의 신중하게 보호되는 영업 비밀은 사용하지 않습니다.

추가 :

Paint.NET을 확인했는데 놀랍게도 사진을 축소 할 때 Super Sampling이 bicubic보다 나은 것 같습니다. 그래서 보간 알고리즘이 전혀 갈 길이 아닌지 궁금합니다.

또한 내가 "발명"했지만 구현 한 적이없는 알고리즘을 떠올리게했습니다. 나는 그것도 이름을 가지고 있다고 생각한다. 슈퍼 샘플링이 가장 가까운 것입니다.

아이디어는 이것이다-대상 그림의 모든 픽셀에 대해 소스 그림의 위치를 ​​계산합니다. 아마도 하나 이상의 다른 픽셀을 오버레이 할 것입니다. 그런 다음 이러한 픽셀의 영역과 색상을 계산할 수 있습니다. 그런 다음 대상 픽셀의 색상을 얻기 위해 단순히 이러한 색상의 평균을 계산하고 해당 영역을 "가중치"로 추가합니다. 따라서 대상 픽셀이 노란색 소스 픽셀의 1/3과 녹색 소스 픽셀의 1/4을 덮는다면 (1 / 3 * yellow + 1 / 4 * green) / (1 / 3 + 1/4).

이것은 당연히 계산 집약적이지만 가능한 한 이상에 가까워 야합니다.

이 알고리즘의 이름이 있습니까?


1
수퍼 샘플링이 정확히 어떻게 작동하는지 설명합니다. bicubic은 소스 이미지에서 더 많은 픽셀을 차지하기 때문에 bicubic보다 낫지 않습니다.
homm

2
저는이 아주 오래된 질문을 다시 여는 것에 투표합니다. 좋은 질문이기 때문입니다. "가장 잘 보인다"는 말은 주관적으로 들리지만 이것을 연구하는 사람들은 좋은, 비 주관적, 합의 된 답변을 가질 수있을만큼 충분히 정량화합니다.
tom10

@ tom10-솔직히 Lanczos 옵션은 이미 대부분의 목적에 충분하다고 생각합니다.
Vilx-

답변:


76

안타깝게도 원래 설문 조사에 대한 링크를 찾을 수 없지만 할리우드 촬영 감독이 영화에서 디지털 이미지로 이동하면서이 질문이 많이 나왔기 때문에 누군가 (아마도 SMPTE 일 수도 있고 ASC 일 수도 있음)는 여러 전문 촬영 감독을 모아서 영상을 보여주었습니다. 다양한 알고리즘을 사용하여 재조정되었습니다. 그 결과 거대한 영화를 보는이 전문가들에게는 Mitchell (고품질 Catmull-Rom이라고도 함)이 확장에 가장 적합하고 sinc 가 축소에 가장 적합 하다는 합의가있었습니다 . 그러나 sinc는 무한대로 이동하여 완전히 구현할 수없는 이론적 필터이므로 실제로 'sinc'가 무엇을 의미하는지 모르겠습니다. 아마도 sinc의 잘린 버전을 가리킬 것입니다. Lanczos는 단순히 자르는 것만으로도 개선을 시도하는 몇 가지 실용적인 sinc 변형 중 하나이며 스틸 이미지를 축소하기위한 최상의 기본 선택 일 것입니다. 그러나 평소처럼 이미지와 원하는 항목에 따라 다릅니다. 예를 들어 선을 유지하기 위해 선화를 축소하는 것은 꽃 사진을 축소 할 때 환영받지 못하는 가장자리를 유지하는 데 중점을 두는 경우입니다.

Cambridge in Color 의 다양한 알고리즘 결과에 대한 좋은 예가 있습니다.

fxguide 의 사람들은 살펴볼 가치있는 스케일링 알고리즘에 대한 많은 정보 (합성 및 기타 이미지 처리에 대한 다른 많은 정보 와 함께) 를 모았 습니다 . 또한 자체 테스트를 수행하는 데 유용 할 수있는 테스트 이미지도 포함됩니다.

이제 ImageMagick은 리샘플링 필터에 대한 광범위한 가이드 를 제공합니다.

이미지를 축소하는 것에 대해 더 많은 논란이 있다는 것은 아이러니합니다. 이론적으로는 정보를 버리는 것뿐이기 때문에 완벽하게 수행 할 수있는 것입니다. t 존재합니다. 그러나 Lanczos부터 시작하십시오.


유한 한 범위의 신호에서 잘림없이 sinc 필터를 구현할 수 있다는 점을 지적하고 싶습니다. 우리가 알고있는 영역 밖에서 모든 샘플이 0이라고 가정하면 Whittaker-Shannon 보간 공식의 추가 항이 사라지고 유한 합계를 얻습니다. 그것은 정확하지 않더라도 원래 데이터에 대한 유효한 해석입니다 (세계는 우리 시야 밖에서 검은 색이 아닙니다). 이 필터는 인과 관계가 아니기 때문에 라이브 오디오 및 비디오에 사용할 수 없지만 중요하지 않은 이미지에 사용하기위한 것입니다.
Tim Seguine 2015

나는 파티에 늦었지만 여기에 내 의견이 있습니다. 이미지를 축소하는 적절한 방법은 하나 뿐이며 두 가지 방법의 조합입니다. 1) x2로 축소하고 다음 축소가 대상 크기보다 작을 때까지 계속 축소합니다. 각 스케일링에서 모든 새 픽셀 = 평균 4 개의 이전 픽셀이므로 이것이 유지되는 최대 정보량입니다. 2) 마지막으로 축소 된 2 단계에서 BILINEAR 보간을 사용하여 대상 크기로 축소합니다. 이중 선형은 벨소리를 전혀 일으키지 않기 때문에 중요합니다. 3) (보너스) 선형 공간에서 스케일링을 수행합니다 (degamma-> scale down-> regamma).
Alex

@Alex는 이미지에서 "중요한"것이 무엇인지에 대한 보편적 인 정의가없고 "중요하지 않은"것보다 보존되어야하며 버릴 수 있기 때문에 이미지를 축소하는 보편적으로 "적절한"방법이 없습니다. 알고리즘이 일부 이미지에 적합 할 수 있지만 흑백 선 그리기가 밝은 회색 흐림으로 바뀝니다.
Old Pro

네, 저는 사진에 대해 이야기하고 있었지만 선화도 더 잘 처리 할 것이라고 생각합니다. 확실히 당신은 벨소리가 없다는 것을 알고 있습니다. 0처럼. 일치하는 필터가 없습니다. 그러나 예, 특정 이미지의 경우 가장 가까운 이웃이나 범용 알고리즘보다 더 적절한 다른 작업을 수행하는 것이 좋습니다.
알렉스

@Alex : 더 나아가 "sinc"와 같은 알고리즘이 갖는 필터링 효과를 고려하고 있지 않습니다. 디지털 카메라로 찍은 많은 사진에는 특히 높은 ISO에서 사진을 찍을 때 노이즈가 발생합니다 (고르게 분포 됨). 이미지를 축소 할 때 필터링 할 수 있습니다.
2017 년

21

에는 Lanczos 샘플링 바이 큐빅보다 느리지 만 높은 품질의 이미지를 생성합니다.


이미 .NET에 구현이 있습니까? 시간을 절약 할 수 있습니다. :)
Vilx-

@ Vilx- github.com/dlemstra/Magick.NET 나는 그것을 사용했고 (MagickImage image = new MagickImage (path)) {image.FilterType = ImageMagick.FilterType.Lanczos;를 사용하여 lanczos에 대해 완벽하게 잘 작동합니다. image.Resize (145,145); // 이미지를 tiff image.Write ( "c : /workbackup/jay_Lanczos.png"); }
jayant singh

15

(Bi-) linear 및 (bi-) cubic 리샘플링은 1/2보다 작은 요소로 축소 할 때 추악 할뿐만 아니라 끔찍하게 부정확합니다. 1/2 배로 다운스 캠핑 한 다음 가장 가까운 이웃 다운 샘플링을 사용하면 얻을 수있는 것과 유사한 매우 나쁜 앨리어싱이 발생합니다.

개인적으로 나는 대부분의 다운 샘플링 작업에 (면적) 평균화 샘플을 권장합니다. 매우 간단하고 빠르며 거의 최적입니다. 가우스 리샘플링 (반경이 계수의 역수에 비례하여 선택됨, 예를 들어 1/5로 다운 샘플링하는 경우 반경 5)은 더 많은 계산 오버 헤드로 더 나은 결과를 제공 할 수 있으며 수학적으로 더 건전합니다.

가우시안 리샘플링을 사용하는 한 가지 가능한 이유는 대부분의 다른 알고리즘과 달리 리샘플링 계수에 적합한 반경을 선택하는 한 업 샘플링과 다운 샘플링 모두에 대해 올바르게 작동한다는 것입니다 (아티팩트 / 앨리어싱을 도입하지 않음). 그렇지 않으면 두 방향을 모두 지원하려면 다운 샘플링을위한 영역 평균화 (업 샘플링을 위해 가장 가까운 이웃으로 저하됨)와 업 샘플링을 위해 (bi-) cubic (다운 샘플링을 위해 가장 가까운 이웃으로 저하됨)과 같은 두 개의 별도 알고리즘이 필요합니다. 가우시안 리샘플링의이 멋진 속성을 수학적으로 보는 한 가지 방법은 반경이 매우 큰 가우스가 면적 평균에 가깝고, 반경이 매우 작은 가우스가 (이중) 선형 보간에 가깝다는 것입니다.


3
반경은 모두 중요합니다. 축소에서 bicubic이 자주 실패하는 이유는 반경이 조정되지 않고 축소에 작동하는 동일한 반경이 사용되기 때문입니다. 이것은 단순히 작동하지 않으며 극단적으로 가장 가까운 이웃보다 더 나빠집니다. 반경을 적절하게 조정하면 면적 평균보다 더 나은 결과를 얻을 수 있습니다.
Mark Ransom 2014 년

4
4 개의 샘플로 제한하는 큐빅 필터에는 고유 한 것이 전혀 없으며,이를 넓히고 가중치의 합으로 나누면 수식이 제대로 작동합니다. 사실 Catmull-Rom은 Lanczos-2와 유사하며 거의 동일하게 조정할 수 있습니다.
Mark Ransom 2014 년

1
@MarkRansom : 큐빅 필터 의 정의 는 곡선의 4 개 점에 의해 고유하게 정의 된 큐빅 다항식에 의한 곡선의 근사치입니다.
R .. GitHub의 STOP 돕기 ICE

2
그럴 수도 있지만 수학은 상관하지 않습니다. 언젠가 그것을 시도하고보십시오.
Mark Ransom 2014 년

3
최상의 다운 스케일링 방법을 조사한 결과 최상의 결과를내는 영역 방법도 발견했습니다. 결과가 만족스럽지 않은 상황은 이미지를 작은 요소로 축소하는 경우입니다. 이 특별한 경우 영역 방법은 일반적으로 이미지를 흐리게하지만 가장 가까운 이웃은 놀랍게도 잘 수행 할 수 있습니다. 가우시안 다운 스케일링을 사용할 때 재미있는 점은 이미지를 먼저 블러 링 한 다음 가장 가까운 이웃을 사용하여 다운 스케일링하는 것과 거의 동일하다는 것입니다.
jahu 2015-06-30

7

얼마 전에 Slashdot에서 Seam Carving 에 대한 기사를 보았는데 살펴볼 가치가있을 것입니다.

Seam 조각은 Shai Avidan과 Ariel Shamir가 개발 한 이미지 크기 조정 알고리즘입니다. 이 알고리즘은 크기 조정이나 자르기가 아니라 중요도가 거의없는 이미지에서 픽셀을 지능적으로 제거 (또는 픽셀 추가)하여 이미지의 크기를 변경합니다.


나는 이것을 보았다. 내가 염두에 두었던 것이 정확히는 아니었지만 확실히 살펴 보는 것은 좋은 생각입니다! 감사! 이 알고리즘은 어디에서나 공개적으로 사용할 수 있습니까?
Vilx-

3
실제로 이음새 조각은 크기 조정이 아니라 대상 변경입니다. 그들은 다른 결과를 낳습니다. @Vilx : 예, 여기에 김프 플러그인이 있습니다 : liquidrescale.wikidot.com
Can Berk Güder

다음은 dotNET 구현입니다. blogs.msdn.com/mswanson/archive/2007/10/23/…
Craz

이음새 조각 리 타게팅 알고리즘이 Photoshop 4에 적용되었으므로이 알고리즘에 대한 특허 부담이 크다고해도 놀라지 않을 것입니다.
Lasse V. Karlsen

3
Seamcarving은 Gimp의 액체 크기 조정 및 Photoshop CS4의 콘텐츠 인식 크기 조정과 동일한 아이디어입니다. 스케일링을위한 것이 아니라 이미지가 늘어난 것처럼 보이게하지 않고 이미지의 종횡비를 변경하기위한 것입니다.
mk12 2010

4

설명하는 알고리즘을 선형 보간이라고하며 가장 빠른 알고리즘 중 하나이지만 이미지에서 최고는 아닙니다.


OP를 제외하고는 서브 픽셀 글꼴 렌더링이 수행하는 방식으로 서브 픽셀의 공간 위치를 고려합니다. 이것은 약간의 해상도를 얻을 수있는 정말 멋진 방법 일 수 있지만 이상한 이미지 효과를 초래할 수도 있으며 주어진 하위 픽셀 아키텍처에 따라 달라집니다.
Adam Tolley

아니요, 선형 보간은 일종의 컨볼 루션 알고리즘입니다. 진정한 수퍼 샘플링으로 설명됩니다.
homm

@AdamTolley 나는 정상적인 이미지에 대한 서브 픽셀 AA가 수용 가능해 보일 것이라고 심각하게 의심합니다. 그것은 단지 두 가지 색상 심지어이 흰색 이외의 다른 색상을 가지고 있기 때문에 텍스트와 함께 작동 문제입니다
RecursiveExceptionException

1
@itzJanuary 경계 색상이 서브 픽셀 구성표와 일치하면 괜찮을 것이라고 생각하지만, 가끔 발생하는 경우가 있습니다. 그 결과 최상의 일관성이없는 유용성과 픽셀 샘플링의 기본 주파수가 최악의 경우 이상한 지각 인공물을 생성합니다
Adam Tolley

2

이 알고리즘의 이름이 있습니까?

문헌에서는 "상자"또는 "창"리샘플링이라고 할 수 있습니다. 실제로 생각하는 것처럼 계산 비용이 적게 듭니다.

또한 1/2보다 많이 다운 샘플링 될 때 앨리어싱을 방지하기 위해 쌍 입방 보간에서 나중에 사용되는 중간 비트 맵을 만드는 데 사용할 수도 있습니다.


-1

관심있는 사람이 있다면 영역 평균 스케일링 알고리즘의 C ++ 구현입니다.


4
다른 사람들이 배울 수 있도록 당신의 대답에 약간의 설명을 추가하세요
니코 하세
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.