2009-05-18 10 views
11

다운 스케일링을 이해하려고 시도 중입니다. 바이 큐빅 (Bicubic)과 가장 가까운 이웃과 같은 보간 알고리즘을 업 스케일링 할 때 오래된, 알려진 점 (픽셀의 경우 이미지) 사이의 "빈칸 채우기"에 사용할 수있는 방법을 알 수 있습니다.다운 스케일링시 보간 알고리즘

하지만 축소? 어떤 보간 기술이 어떻게 사용될 수 있는지 나는 볼 수 없다. 채울 공백이 없습니다!

필자는 오래 동안 이걸 고집했습니다. 올바른 방향으로 움직였습니다. 사실, 알려진 데이터를 제거 할 때 어떻게 보간합니까?

편집 : 포인트 당 하나의 색상 채널이있는 1 차원 이미지가 있다고 가정합니다. 1,2,3,4,5,6 = (1 + 2)/2, (3 + 4)/2, (5 + 6) 등이 평균 픽셀 값에 의해 6에서 3 포인트 스케일링되는 축소 알고리즘입니다./2 나는 올바른 길을 가고 있는가? 이 보간법은 데이터를 버리는 것보다 크기를 줄이는 것입니까?

+0

수정 사항이 올바른 아이디어입니다. 1,2,3,4,5,6 -> 1.5, 3.5, 5.5. 또 다른 예는 6,0,6,0,6,0 -> 3, 3, 3입니다. 0,0,0 또는 6,6,6보다 좋습니다. – tom10

답변

5

여기에는 원본 이미지가 있고 중간에 순진한 제거 알고리즘이 있고 하단에 보간법이 있습니다.

큰 주목을 받으십시오. 중앙의 빛이 가장 밝고 가장자리의 빛이 어두워집니다. 더 멀리 빛을 낼 때, 광선이 갑자기 가장자리 근처의 어둠을 잃고 빛의 단단한 윤곽이 될 것이라고 기대합니까?

아니요, 여기에서도 stackoverflow 로고와 동일한 문제가 발생합니다. 첫 번째 축소에서 볼 수 있듯이 그림의 가장자리가 부드러 우며 끔찍하게 보입니다. 두 번째 다운 스케일링은 픽셀 주변을 평균화하여 가장자리에서 부드러움을 유지했습니다.

간단한 회선 필터를 사용하면 픽셀의 RGB 값과 주변 픽셀을 모두 추가하고 간단한 평균을 구할 수 있습니다. 그런 다음 픽셀을 해당 값으로 바꿉니다. 그런 다음 중앙 픽셀에 정보를 이미 포함 했으므로 인접한 픽셀을 삭제할 수 있습니다.당신은 그런에는 Lanczos와 같은 윈도우의 싱크 필터를 사용하는 경우

alt text

+0

따라서 평균을 계산하는 1 차원 다운 스케일 알고리즘은 다음과 같이 보일 수 있습니다 (6 포인트에서 3 포인트까지) : 1,2,3,4,5,6 = (1 + 2)/2, (3 + 4)/2 , (5 + 6)/2이다. 옳은? 여기서 샘플 그리드에는 규모에 따라 두 개의 점이 포함되지만 더 많은 방향으로 더 많은 점을 샘플링해야합니까? – Mizipzor

+0

예, 그렇게 할 수 있습니다. 샘플이 많으면 일반적으로 더 좋은 그림을 의미하지만주의해야합니다. 새 커널에서 멀리 떨어져있는 픽셀은 일반적으로 닫힌 픽셀보다 새 픽셀에 덜 기여합니다. – Unknown

+2

이미지가 누락 된 것 같습니다. 아니면 DVD 표지의 이미지를 실제로 표시하고 싶습니까? 이미지를 다시 게시 해 주시겠습니까? 그것은 많은 도움이 될 것입니다. – Joerg

8

업 스케일링이든 다운 스케일링이든 관계없이 "보간법"이 실제로 재 샘플링됩니다.

축소 된 버전의 샘플 수가 전체 샘플 수 (픽셀 등)의 짝수가 아닌 경우 단순히 데이터를 버리면 이미지에 "톱니 모양"으로 나타나는 샘플링 오류가 생성됩니다. 대신 새 샘플이 언급 된 알고리즘 중 하나를 사용하여 기존 샘플 사이의 공간에 삽입 될 위치를 보간하면 결과가 훨씬 더 부드러워집니다.

중간 크기 결과를 실제로 생성하지 않고 샘플을 삭제하여 이전 크기와 새 크기의 최소 공배수까지 첫 번째 크기 조정으로 개념화 한 다음 크기를 다시 낮추면됩니다.

+0

그러나 단순히 데이터를 버려서 짝수 제수 (2, 4, 8)로 축소하면 샘플링 오류가 발생합니다. 맞습니까? – Mizipzor

+1

예, 원본 데이터를 '실제로'다시 샘플링하는 것과 확실히 같지는 않습니다. 그러나 보간법은 상황이 어디 있는지 추측하지만 그것이 실제로 있다는 것을 보장하지는 않습니다. 원본 데이터가 정확하기를 원하면 원래 데이터를 다시 샘플링해야합니다. – sybreon

+2

"평균화 (Averaging)"는 버리는 것보다 낫습니다 - 더 부드럽게 축소 된 결과를 생성 할 수 있습니다. 경우에 따라 더 정교한 필터를 사용하여 축소시 포인트 그룹에 가중치를 부여 할 수 있습니다. 2D 이미지를 축소 할 때 몇 개의 인접한 점뿐만 아니라 많은 점을 클러스터해야합니다. –

9

원래 픽셀의 너비가 n 인 것으로 개념화하면 픽셀 중심이 양쪽 가장자리에서 n/2가됩니다.

픽셀 중심의이 지점이 색상을 정의한다고 가정 할 수 있습니다.

다운 샘플링하는 경우 개념적으로 이런 식으로 생각할 수 있습니다. 물리적 크기를 줄이고 대신 동일한 크기를 유지하면서 크기가 커지는 픽셀 수를 줄이더라도, 개념적으로). 그러면 하나는 수학을 할 수 있습니다 ...

예 : 이미지의 높이가 1 픽셀이고 너비가 3 픽셀이고 수평 만 낮추라고 말합니다. 이 값을 2 픽셀 너비로 변경한다고 가정 해 보겠습니다. 이제 원본 이미지가 3n이고 2 픽셀로 바뀌므로 각 새 픽셀은 원본 이미지 픽셀을 차지합니다 (3/2).

새로운 픽셀의 중심은 (3/4) n 및 (9/4) n [(3/4) + (3/2)]에 있습니다. 원래 픽셀의 중심은 (1/2) n, (3/2) n 및 (5/2) n에있었습니다. 따라서 각 중심은 원래 픽셀의 중심을 찾을 수있는 곳 사이에 있으며 원래 픽셀의 중심과 일치하지 않습니다. 첫 번째 픽셀을 (3/4) n으로 보겠습니다. 원래의 첫 번째 픽셀에서 (1/4) n 떨어져 있고 원래 두 번째 픽셀에서 (3/4) n 떨어져 있습니다.

부드러운 이미지를 유지하려면 반대의 관계를 사용하십시오. 첫 번째 픽셀의 색상 값을 + (1/4)로, 두 번째 색상 값의 색상 값을 (1/4) 센터는 개념적으로 두 번째 (3n/4 거리)보다 첫 번째 원본 픽셀 센터 (n/4 거리)에 더 가깝습니다.

따라서 데이터를 실제로 폐기 할 필요가 없습니다. 전체 이미지의 실제 크기가 변경되지 않는 개념적 공간에서 이웃과의 적절한 비율을 계산합니다. 엄격한 건너 뛰기/삭제보다는 평균입니다.

두 번째 이미지에서 비율은 계산하기가 더 복잡하지만 요지는 동일합니다. 보간하고 가장 가까운 원본 "이웃"에서 더 많은 가치를 이끌어냅니다. 결과 이미지는 다운 샘플이 심각하게 심각하지 않다면 원본과 매우 유사하게 보일 것입니다.

+1

아주 좋은 대답, 나는 갈 펜과 종이가 필요했지만 지금은 그것을 가지고 있다고 생각해. 그러나 크기를 몇 개의 짝수 (2,4,8)로 나누면 샘플 그리드가 이전 픽셀 격자와 완벽하게 정렬됩니다. 그러면 항상 샘플 그리드의 각 셀에서 각 픽셀의 픽셀 데이터를 동일한 양으로 가져 옵니까? – Mizipzor

+0

경우에도 평균 수 있습니다. 이미지의 크기를 조정하는 방법에는 여러 가지가 있습니다. – Demi

+1

또 다른 방법은 물리적 인 크기가 변경되지 않지만 픽셀의 너비가 동일한 원래의 픽셀 수와 새 픽셀이 소비하는 각 픽셀의 양을 고려하는 것과 같은 개념적 방식입니다. 이렇게하면 짝수에서 잘 작동합니다 (예 : 4 픽셀에서 2로 수평 확장 할 때 각 새 픽셀은 두 개의 오래된 픽셀을 소비하므로 평균적으로 동일하게 나타납니다). – Demi

6

이 스케치는 3 픽셀 (검정색 곡선)부터 시작하여 보간법 (파란색 곡선)을 사용하여 2 픽셀 (빨간색 곡선)으로 다운 샘플링되는 몇 픽셀의 단면을 보여줍니다. 보간은 원래의 3 픽셀로부터 결정되고 2 개의 최종 픽셀은 각 최종 픽셀의 중심에서 보간의 값으로 설정됩니다. (여기서 수직 축 쇼, 여기에 하나의 컬러 채널의 각 픽셀의 강도 불분명합니다.)

alt text http://img391.imageshack.us/img391/3310/downsampling.png

+0

이미지를 복원 할 수 있습니까? – nobar

+0

@nobar : 죄송하지만, 이미지가 어디로 갔는지, 그리고 5 년 된 사본이 없는지 전혀 알지 못합니다. 다행히 SO 또는 imageshack이 복원됩니다 ... 얼마나 오래 사라 졌는지 아십니까? 그렇지 않으면, 나는 그것을 다시 할 수있는 기회를 얻지 만, 나는 지금 그것을 가지고 있지 않다. – tom10

2

우리가 업 스케일링 또는 다운 스케일링하든, 우리가 어느 정도 (결정해야 정확도)에 따라 두 픽셀 사이의 한 지점에서의 색상 값이 결정됩니다.

픽셀의 단일 행 걸릴 수 있습니다 :

P  P  P  P  P  P  P  P  P 

을하고 우리는 우리가에서 중간 지점에서 사용하는 픽셀 값을 알고 싶어, 업 샘플링 :

P P P P P P P P P P P P P 

우리는 다운 샘플링 할 때 중간 지점에서 사용할 픽셀 값을 알고 싶습니다.

P  P  P  P  P  P  P 

(물론 우리는 이것을 하나의 차원이 아닌 2 차원으로 수행하는 것은 동일한 원리입니다.)

그래서 우리는 오른쪽 샘플 값을 결정하기 위해 보간을해야합니다. 우리가 결과를 원하는 정확도에 따라 다양한 보간 기법이 있습니다. 이상적으로, 우리는 모든 수학이 포함 된 상태에서 적절하게 리샘플링 될 것입니다 ...하지만 심지어 그것은 보간 작업입니다.

1

는, 실제로는 낮은 해상도로 표시 할 수없는 높은 주파수 정보를 필터링합니다. 평균화 필터는이를 수행하지 않고 아티팩트를 발생시킵니다. sinc 필터는 또한 더 선명한 이미지를 생성하고 업 스케일링 및 다운 스케일링 모두에 사용할 수 있습니다.

이미지를 sinc로 업 스케일 한 다음 원본 크기로 다시 축소하면 거의 동일한 이미지가 다시 표시되지만 크기를 축소 할 때 픽셀의 평균을 구하면 약간의 결과가 나타납니다 원래보다 흐리게. 푸리에 변환을 사용하여 윈도우 크기의 근사값을 계산하려고하면 크기를 조정할 때 반올림 오류를 제외하고 정확한 원래 이미지를 얻을 수 있습니다.

일부 사람들은 sinc 필터를 사용할 때 생기는 날카로운 모서리 주변의 경미한 울림을 좋아하지 않습니다. 나는 축소 된 벡터 그래픽을 위해 평균을 제안하고, 사진 크기를 줄이기 위해 sinc를 제안한다.