700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab设置图片背景透明_Matlab ---- 有透明度的png图像的显示与图层叠加方法

matlab设置图片背景透明_Matlab ---- 有透明度的png图像的显示与图层叠加方法

时间:2020-11-25 22:08:58

相关推荐

matlab设置图片背景透明_Matlab ---- 有透明度的png图像的显示与图层叠加方法

需求和问题来源

由于图形图像的语义分割工作中,需要对不同类型的区域,进行标示,但又不能完全覆盖背景图像。这产生了一个新的需求:产生一个带有透明度的图像;

将带有透明度的图像,叠加在原始图像上。

Matlab中的透明度图像

带透明背景的图像,用普通图像软件打开时,比如window自带的照片查看器,会得到一个黑色背景。 我把它叠加在背景图像上我怎样才能把这个展示出来我试过使用alpha函数alpha(image,0),但它将我的整个图像设置为0是否可以将单个像素的alpha设置为0这样我就可以在一个循环中运行每个像素。

我不确定这是否有用,但是当我运行imfinfo('full-active.png')时,我得到:

...

Transparency = 'alpha'

SimpleTransparencyData = []

...

显示带透明度的PNG图像

您可以使用

[im, map, alpha] = imread('full-active.png');

im是图像本身,map是将忽略的颜色的映射,但alpha是图像的透明度信息,其维度与图像一致。

首先调用imshow并记录图像的句柄,然后使用alpha命令使用set通道设置透明度换句话说:

[im, map, alpha] = imread('full-active.png');

f = imshow(im);

set(f, 'AlphaData', alpha);

这将使透明的图形保持完整。

叠加带透明度的PNG图像

假设你已经有一个背景图像加载到MATLAB中。

如果你想把这两者混合在一起,你需要做一些alpha消光。你用alpha通道把两者混合在一起。换言之,假设背景图像存储在img_background中,并且img_overlay是叠放在背景图片之上的图像,请执行以下操作:

alphaMask = im2double(alpha); %// To make between 0 and 1

img_composite = im2uint8(double(img_background).*(1-alphaMask) + double(img_overlay).*alphaMask);

第一步是必要的,因为加载的alpha映射与输入图像的类型相同,通常uint8我们需要将其转换为double图像,使其介于0和1之间,并且im2double非常适合这样做第二行将每个图像转换为双精度,这样我们就可以计算这个和,并使alpha掩码和两个图像之间的数据类型兼容然后我们转换回uint8然后,可以使用imshow显示最终图像。

代码案例:

% PNG透明度

imfinfo('full-active.png')

figure

imshow('full-active.png');

[png_figure, map, alpha] = imread ("full-active.png");

figure;

png_figure_handle = imshow(png_figure );

title("png figure");

size(png_figure)

set(png_figure_handle, 'AlphaData', alpha)

img_background = img_background_original(101:400, 1:300,:);

figure;

imshow(img_background )

title("background figure");

alphaMask = im2double(alpha); %// To make between 0 and 1 im2double

img_composite = im2uint8(double(img_background).*(1-alphaMask) + double(png_figure).*alphaMask);

figure;

imshow(img_composite )

title("Fusion figure");

% 基于pixelmarked图像,转变成有透明度的PNG图像

图示效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。