Making White Pixels in an Opaque TIF Image Transparent and Saving as a PNG
1 回表示 (過去 30 日間)
古いコメントを表示
Hi everyone,
I have a TIF file stored in the .mat file named 'Opaque_Image.mat'. I have attached this .mat file for your reference. It is a 944x944x3 uint8 type of image and contains a colorful circle surrounded by white pixels. I wrote the .m file below to turn this image into a PNG file which would have the white pixels in the original TIF file replaced with transparent pixels. Unfortunately I end up getting a PNG file which has opaque black pixels instead of transparent pixels. Could you please help me solve this problem? Thank you for your answers in advance.
clc
clear all
load('Opaque_Image.mat')
[K L M]=size(opaque_image);
A = ones(K,L);
for i=1:K
for j=1:L
if opaque_image(i,j,1) == 255 && opaque_image(i,j,2) == 255 && opaque_image(i,j,3) == 255
A(i,j) = 0;
end
end
end
AA = logical(A);
mask = cast(AA, class(opaque_image));
transparent_image = opaque_image .* repmat(mask, [1 1 3]);
imwrite(transparent_image,'Transparent_Image.png');
0 件のコメント
採用された回答
DGM
2021 年 4 月 24 日
編集済み: DGM
2021 年 4 月 24 日
Yeah imwrite() is really clumsy about handling certain file types and options. For PNG, the alpha channel has to be separated and passed as an optional argument.
dd = load('Opaque_Image.mat');
inpict = dd.opaque_image;
th = 253; % pick some upper threshold
whmask = ~all(inpict>th,3);
imwrite(inpict,'circlething.png','alpha',double(whmask))
Of course, now you can't really tell because the website bg is white ...
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!