我开始在MATLAB中编写一个程序来动态覆盖两个相同大小和不同alpha的灰度图像。因此,两个图像都绘制在一个图中,而在它们下面是一个滑块,第二个图像的alpha可以从零增加到一个。因此,当移动滑块时,实际上可以看到两个图像混合。假设滑块为0.3,那么“AlphaData”#39;第二个图像的设置为0.3,而“AlphaData”#39;第一张图像始终为1.在屏幕上,我现在看到一张图像,它是这两张图像的组合。
现在我想从图中获得完全相同的图像(与之前的图像大小相同)并使用它。但我不知道该怎么做。
答案 0 :(得分:6)
灰度图像只是数字数组。根据您获取数据的方式,它可以是0~1或1~255。覆盖两个图像只是添加数字。混合两个图像仅仅是计算它们的加权和。
clear;clc;close all
I1_rgb = imread('peppers.png');
I1_gray = rgb2gray(I1_rgb);
figure(1)
imshow(I1_gray)
I2_gray = imread('coins.png');
I2_gray = padarray(I2_gray, size(I1_gray)-size(I2_gray), ...
'circular', 'post');
figure(2)
imshow(I2_gray)
alpha = .3; % this can be dynamically adjusted by a slider
O1 = I1_gray + I2_gray*alpha; % overlay
figure(3)
imshow(O1)
O2 = I1_gray*(1-alpha) + I2_gray*alpha; % blend
figure(4)
imshow(O2)
有关混合彩色图像的信息,请参阅MATLAB: Applying transparent mask over an RGB image and blending with another
上的答案