2014-06-06 65 views
1

我已經獲得圖像的傅里葉光譜,並希望將結果圖像保存到我的代碼中指定的文件夾中。無法寫入'double'類型的圖像

但作爲結果圖像類型是「雙」,我無法保存它。我得到空白圖像在給定的文件夾。我該怎麼辦?

這裏是我的代碼

clc; 
clear all; 
close all; 
i=imread('D:\pendrive\test1.jpg'); 
i=rgb2gray(i); 
subplot(2,2,1),imshow(i);title('Test Image'); 

f=fftn(i); 
magnitude=abs(f); 
phase=angle(f); 

f1=log(1+fftshift(f)); 
subplot(2,2,2),imshow(f1,[]);title('Fourier spectrum'); 
a=strcat('C:\Users\Public\Pictures\Sample Pictures\results\Fourier spectrum\','.jpg'); 
imwrite(f1,a); 

回答

1

如果imwrite收到雙重圖像它假定範圍是0和1之間這意味着,如果你有什麼事情小於0,他們正在擴大到0(黑色),但最重要的是對於您的情況,超過1的所有東西都會縮小爲1(白色)。
這是因爲當接收雙圖像僅僅是

yourImage .* 255 

所以它與傳統範圍爲每個通道使用每像素8位圖像結束imwrite做什麼。

在調用imwrite之前,您可以通過縮放值來解決問題,例如在[0 ... 1]範圍內。這可以很容易地進行這樣:

yourImageScaled = (yourImage-min(yourImage(:)))./(max(yourImage(:))- min(yourImage(:))); 

或者你可以嘗試轉換通過簡單地做

uint8(yourImage) 

注意,以UINT8,取決於你的價值觀的UINT8轉換可能也產生非所需結果(例如,如果你的金融時報數量在2到20之間,一切都會看起來幾乎是黑色的)。出於這個原因,您最好執行結果值的縮放,以便最終結果更好地觀察。由於這最後一句話,我建議你我提出的第一個選項,即[0 ... 1]範圍內的縮放比例。

+0

對不起,先生我轉換圖像f1從雙重uint8,但我仍然在文件夾中獲得完全黑色圖像 – sagar

+0

我編輯了答案,你會發現原因:-) – cifz

+0

非常感謝,先生,其工作。我在文件夾中獲得相同的圖像。 – sagar

相關問題