2017-01-08 23 views
0

私は画像を保存する必要があります。しかし、同じ次元を維持しようとすると、ピクセル値が変化します。両方をそのまま維持する方法はありますか?寸法とピクセルを同じにしてイメージを保存するにはどうすればいいですか?

C=imread('download.jpg'); 



C=rgb2gray(C); 

%convert to DCT 
[r1 c1]=size(C); 
    CDCT=floor(dct2(C)); 
    dct=floor(dct2(C)); 
    [r c]= size(dCipherText); 
    bye=c; %lenght of message bits 
    for i=r1:r1 

for j=c1:-1:c1-28 


.....%some operation on CDCT 

    end 

end 
imshow(idct2(CDCT),[0 255]) 
i=idct2(CDCT); 

set(gcf,'PaperUnits','inches','PaperPosition',[0 0 c1 r1]) 
print -djpeg fa.jpg -r1 
end 

答えて

1

画像を保存するためにプリントを使用しないでください。 用途:

imwrite(i,'downdload_dct.jpg') 

printではなく、画像データそのものよりも、あなたの姿に定義用紙寸法などを使用します。 imwriteiのデータを使用します。イメージを再保存するだけの場合は、imshowは必要ありません。

- アップデート - 申し訳ありませんが、「スケーリング」を意味するときは、画像のスケーリングを意味するのではなく、ピクセル値のスカラーからカラーへの変換を意味します。 imshowは実際のデータではなく、画面上のものだけ「縮尺する」。だからあなたは手動/数値でそれを行う必要があります。このようなものは、iが本当であると仮定して動作します。

% ensure i ranges from 1 to 255 
i = 1 + 254*(i-min(i(:))*(max(i(:))-min(i(:))) ; 
% convert indices to RGB colour values (m x n x 3 array) 
i = ind2rgb(i,jet(256)); 

テストされていません!

+1

「.jpg」は使用しないでください。 '.png'のような可逆フォーマットを使用してください。 – beaker

+0

中古pngも同様です。うまくいきません:/ – user3102085

+0

私はその前にimshowをやっていないと、画像を拡大/縮小する方法を教えてください。画像は基本的にDCTの逆であるため、そのまま保存すると結果の画像は異なります – user3102085

関連する問題