2012-02-12 2 views
1

Matlab에서 이미지 처리에 대해 배우기 시작했고 약간의 문제가 있습니다.Imshow() 출력 저장 - 스케일 된 이미지를 디스크에 저장

이미지의 FFT를 시각화하려고합니다. 함수 imshow는 빈 행렬 (예 : sintax imshow (image, [])을 제공 할 때 필요한 것을 수행합니다.

이제 imshow는 빈 행렬과 함께 제공 될 때 가장 낮은 그림에서 검정색 값은 흰색으로 가장 높고 흰색으로 가장 높게 조정됩니다. (최소한 내가 이해 한 방법입니다).

imshow가하는 배율은 훌륭합니다. 이미지를 취해 그런 종류의 스케일을 수행하는 MATLAB 함수? imshow를 사용한 후에 수동으로 그림을 저장하려고 생각했지만 프로그램으로이 작업을 수행하려고합니다.

멋진 Matlab이 있다고 가정합니다. 이 기능을 수행하지만, 인터넷 검색 후, 나는 해결책을 찾을 수 없습니다.

답변

1

원하는 것은 imwrite을 호출하기 전에 최소값이 0이고 최대 값이 255 (8 비트 이미지의 경우)가되도록 이미지의 크기를 조정하는 것입니다. 예를 들어

:

img = randn(100); 
figure,imshow(img,[]); %# show the image 

mx = max(img(:)); 
mn = min(img(:)); 

imgScaled = (img-mn)/(mx-mn); 

%# convert to uint8 and save 
imwrite(uint8(round(imgScaled*255))), 'test.tif'); 

%# reload and display without scaling 
%# if we have done everything correctly 
%# the images before and after should look alike 
imgLoaded = imread('test.tif'); 
figure,imshow(imgLoaded) 
+0

솔루션으로 Matlab 빌드가 있었으면 좋겠지 만, 이것은 훌륭하게 작동하고 정확히 내가 원했던 것입니다. 도와 주셔서 감사합니다! – MrMatlabUser

+0

@MrMatlabUser : 천만에요. 도움이된다면 제 대답을 수락하십시오. – Jonas

0

imagesc과 같은 소리는 here입니다. 그러나 자연스럽게 FFT를 표시하려면 복잡한 값을 제거해야합니다. 크기 생성, 위상 도표를 따로 따로 작성하십시오. 그러나 이것은 imshow이 이미 스케일링을 수행하는 Matlab 함수이므로 새로운 함수가 필요한 이유는 확실하지 않습니다. imagesc을 사용하면 최소한 색상을 얻을 수 있습니다.

저장하려면 imwrite을 사용하십시오.

+0

imshow는 저에게 큰 도움이됩니다. 하지만 imwrite를 사용하면 imshow가 제공하는 크기 조정없이 그대로 이미지를 저장하므로 이미지 저장은 제 문제입니다. 추신. 나는 그것이 중요한지 시각화하기 위해 FFT의 크기를 사용합니다. 기본적으로, imshow의 결과를 저장하는 것이지만, 저장하는 그림이 많기 때문에 '다른 이름으로 저장 ...'등을 클릭하지 않고 Matlab 코드에서 그렇게하는 것이 좋습니다. – MrMatlabUser

+0

@MrMatlabUser 알겠습니다. 그래서 Jonas가 지적했듯이, 미리 이미지 데이터의 크기를 조정할 수 있습니다. –

0

가이 좋은 답변을 많이하지만, 빠른 해킹에 대한 방금 대한 추가 정보를 원하시면 doc print를 참조 그림에서 보는 것과 print 할 수 있습니다.

관련 문제