그레이 스케일 이미지가 있고 그 해상도를 높여야합니다. 어떻게 이것을 MATLAB에서 할 수 있습니까? 그것은 주로 예를 들어 이미지의 크기를 곱함으로써 주로 이루어 집니까?그레이 스케일 이미지의 해상도가 증가합니다.
답변
보간을 수행해야합니다. 이를 수행 할 수있는 많은 방법이 있습니다. 당신은 이미지 처리 도구 상자가없는 경우 imresize
(예를 들어, imgOut=imresize(img,scale,method);
가), 또는, 다음 코드를 고려 사용
function imres = resizeim(I,outsize,interpalg)
if nargin<3 || isempty(interpalg),
interpalg='cubic';
end
rows=outsize(1);
cols=outsize(2);
vscale = size(I,1)/rows;
hscale = size(I,2)/cols;
imgClass = class(I);
imres = interp2(double(I), (1:cols)*hscale + 0.5 * (1 - hscale), ...
(1:rows)'*vscale + 0.5 * (1 - vscale), ...
interpalg);
imres = cast(imres,imgClass);
참고 :이 거친 시작이다. 사전 필터링 또는 다른 변환을 수행해야하는 경우가 많이 있습니다. 또한 이 예제는 2D (회색 음영) 이미지 만 지원합니다. RGB의 경우 각 색상 평면을 처리하거나 루프의 각 평면을 단순하게 처리하려면이 옵션을 사용합니다. 다시 말하지만, 이것은 단지 예일뿐입니다.
가장자리 처리 외에도 앤티 앨리어싱을 해제 한 imresize
(즉, imresize(...,'Antialiasing',false)
)과 동일한 결과가 나타납니다.
가장자리 처리와 관련하여 extrapval
매개 변수에 대한 내용은 interp2
설명서를 참조하십시오. 코드가 추악 해지 긴하지만 보간 점 (interp2
입력)의 최소/최대 요소를 패치하여 가장자리에 정확하게 매핑하거나 extrapval
에 NaN
을 사용하고 imres
을 사용하면 NaN
을 다음으로 바꿀 수 있습니다. linspace(1,size(I,1),rows)
과 같은 지점에서 간단히 보간하면에 예상되는 눈금이 변경되지 않습니다.
또한 이미지를 푸리에 변환하고, 제로 패딩하고, 역 푸리에 변환하고, 절대 값을 취함으로써 sinc 보간을 수행 할 수 있습니다.
im_rz = abs(ifft2(padarray(fft2(im),[row_pad, col_pad])))
고해상도 세부 정보를 "환각"할 수 있습니다. 그 알고리즘의 구현을 찾을 수 2009
예를 Glasner 등 "Single image Super resolution" ICCV를 참조하십시오 here