2012-01-05 4 views
2

필자는 2 차원 배열을 가지고 있습니다. 이것은 흑백 이미지의 해석입니다. 특정 크기로 크기를 조정하고 싶습니다. 품질은 필수적인 것은 아닙니다. 크기를 2x 또는 4x 크기로 조정해야하는 경우 가장 가까운 이웃 보간법을 사용하여 예를 들어 하나 대신 4 픽셀을 배치해도됩니다. 기본적으로 내 이미지를 x1.5로 삽입해야하는 경우 x3 크기를 늘리고 x2 크기를 줄입니다. 내가 맞습니까? 하지만 이미지를 3x 크기로 확대해야 할 때 어떻게해야합니까? 보간 된 배열에서 픽셀을 어떻게 배치해야합니까? 다른 사이트에 정보, 코드, 링크를 제공하면 좋을 것입니다.기본 보간법, 업 스케일링 및 다운 스케일링

답변

4

트릭은 반대 방향으로 생각하고 있습니다. 소스 이미지의 픽셀을 크기 조정 된 이미지에 배치하지 말고 소스 이미지에서 크기 조정 된 이미지에 배치해야하는 픽셀을 찾으십시오.

프로그램 때문에 오버런 배열의 충돌하지 않도록이 코드가, 오른쪽 아래의 이미지를 클램프 데모 용으로
float scaleFactor = 3.0f; 

for (int y=0; y < scaledImageHeight; y++) 
    for (int x=0; x < scaledImageWidth; x++) { 
    int sourceImageX = (int)std::max(x * 1.0f/scaleFactor, (float)(sourceImageWidth - 1)); 
    int sourceImageY = (int)std::max(y * 1.0f/scaleFactor, (float)(sourceImageHeight - 1)); 
    scaledImage[y * scaledImageWidth + x] = sourceImage[sourceImageY * sourceImageWidth + sourceImageX]; 
    } 

(즉, 어떤 표준입니다 : : :

이 그런 일을 보일 것이다 최대 값입니다).

+1

와우, 고마워, 이제이 코드 조각을 이해하려고 노력할 것이다. 희망은 모든 것입니다. – user1131662