元の行列と同じサイズ​でjpeg画像を保存​することはできますか​?

13 vues (au cours des 30 derniers jours)
non
non le 21 Oct 2023
Commenté : non le 22 Oct 2023
test(214×407×3 uint8)をimshowで表示して、同じサイズ(214×407)の画像を保存することは可能ですか?
下記のコードでは、保存した画像が334×636で、元の行列と異なってしまいました。また、余白はなしで保存したいです。保存後に、画像を呼び出して、元とサイズ・値が同じ行列を得たいです。
何かご存じのことありましたら、ご教示いただきたいです。よろしくお願いいたします。
fig=figure;
imshow(test,'Border','tight');
path_jpeg = 'C:\Users\...\';
filename_jpeg = [path_jpeg,num2str(i)];
saveas(fig,filename_jpeg,'jpeg')
  2 commentaires
Atsushi Ueno
Atsushi Ueno le 21 Oct 2023
「なぜ質問の方法では目的通りにならないのか」原因が分かったら回答に記入致します。
目的に対して imwrite 関数を使うのがベストな手段です。サイズが一致する事は確認しました。JPEG形式は非可逆圧縮データなので元のイメージデータと完全に一致しませんでした。
load('test.mat');
path_jpeg = '.';
filename_jpeg = [path_jpeg,filesep,num2str(1),'.jpeg'];
imwrite(test,filename_jpeg,'jpeg');
test2 = imread(filename_jpeg); % saveas 関数ではなくimwrite 関数を使う
size(test) == size(test2) % イメージデータのサイズは一致した
ans = 1×3 logical array
1 1 1
imshow(double(test == test2)); % 見た目は同じだが、イメージデータは完全に一致しない
Hiroshi Iwamura
Hiroshi Iwamura le 21 Oct 2023
saveas() は表示されたfigureの保存に使います。
ボーダーや、colorbarが表示されていればそれごと保存されますので、イメージ部分より大きくなります。
Uenoさんが示されたとおり、イメージ行列のみの保存にはimwrite()を使ってください。

Connectez-vous pour commenter.

Réponse acceptée

Hiroshi Iwamura
Hiroshi Iwamura le 21 Oct 2023
Déplacé(e) : Atsushi Ueno le 21 Oct 2023
非圧縮で保存したい場合はtifを使うなどします。
jpg等のロスレスモードも指定できますが、一般的なビューアーではサポートされていないこともあります。
load('test.mat');
imwrite(test,"image.tif",'tif')
I2 = imread("image.tif");
max(abs(test-I2),[],'all')
ans = uint8 0
imwrite(test,"image.jpg",Mode="lossless")
I3 = imread("image.jpg");
max(abs(test-I3),[],'all')
ans = uint8 0
データ自体の保存目的であれば、画像データとして保存する必要はないかとは思いますが。
  3 commentaires
Hiroshi Iwamura
Hiroshi Iwamura le 21 Oct 2023
ああ、回答とコメントを特に気にせず書いてました。 (^-^;
お手数お掛けしました。
non
non le 22 Oct 2023
Hiroshi Iwamura様・Atsushi Ueno
早速のご回答をありがとうございます。疑問は解決いたしました。
自身の目的には、saveas関数ではなく、imwrite関数を使うべきだというご指摘、大変参考になりました。また、ファイルの保存形式が、使い分けるべきだという点も、大変勉強になりました。ありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur イメージ dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!