4

Matlabで多くの画像を処理し、結果を透明度のある画像ファイルに保存する必要があります。しかし、PNG圧縮は私には時間がかかりすぎます。圧縮せずにPNGを保存したり、透明度を使用してTIFFを保存したりするにはどうすればよいですか?圧縮せずに透明度を使用して画像を保存する他の方法はありますか?

これが私の最初の質問です。間違った質問がある場合は、英語が悪く、質問のスタイルが間違っていることをお詫びします。

4

3 に答える 3

4

MatlabのTIFFクラスを使用すると、透明性のあるTIFFを記述できます。

%# create a synthetic RGBA image
ch = checkerboard(100);
rgba = repmat(ch,[1,1,4]);
rgba(:,:,4) = rgba(:,:,4)==0;
rgba = uint8(round(rgba*255));

%# create a tiff object
tob = Tiff('test.tif','w');

%# you need to set Photometric before Compression
tob.setTag('Photometric',Tiff.Photometric.RGB)
tob.setTag('Compression',Tiff.Compression.None)

%# tell the program that channel 4 is alpha
tob.setTag('ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha)

%# set additional tags (you may want to use the structure
%# version of this for convenience)
tob.setTag('ImageLength',size(ch,1));
tob.setTag('ImageWidth',size(ch,2));
tob.setTag('BitsPerSample',8);
tob.setTag('RowsPerStrip',16);
tob.setTag('PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
tob.setTag('Software','MATLAB')
tob.setTag('SamplesPerPixel',4);

%# write and close the file
tob.write(rgba)
tob.close

%# open in Photoshop - see transparency!
于 2012-12-01T22:32:07.337 に答える
1

Matlabimwriteには、PNG圧縮レベルのパラメーターがありません。含まれている場合は、圧縮しないようにゼロに設定できます。TIFFにはnoneオプションがありますCompressionが、アルファチャネルはありません。アルファチャネルを使用し、圧縮せずに、古いSun Raster(RAS)形式に書き込むことができます。おそらく何もそれを読むことができないでしょうが。

于 2012-12-01T15:44:31.990 に答える
0

「PNGの非圧縮バリアントはありません。非圧縮のdeflateブロックのみを使用して非圧縮データを保存することができます。」

非圧縮のdeflateブロックは、ブロックごとに5バイト+最大65535バイトの非圧縮データのヘッダーを使用します。

http://www.w3.org/TR/PNG-Rationale.html

于 2012-12-01T15:05:02.320 に答える