版权声明:本文为博主原创文章,未经博主允许不得转载。
图片的透明性,由其属性‘Alpha’ 决定,所以改变图像的‘Alpha‘值则改变透明度
Alpha为与图像分辨率相同大小的矩阵,0为透明,1为不透明。保存图片时,如要保存为
透明图片,须保存为png格式,保存代码为:imwrite(I,‘图像名.png‘,‘Alpha‘,alpha)
举例:一张字图片,背景为白色,字为黑色,现在将其处理后,输出为字为红色,背景为透明的图片。
MATLAB实现的代码如下:
%字变为红色,背景变为白色,保存背景为透明的图片
I=imread(fname1);
mask=rgb2gray(I);
mask1=im2bw(mask);
mask1=~mask1;
y = sum(mask1,2);
indices = find(y>0);
y_up = indices(1);
y_down = indices(end);
x = sum(mask1,1);
indices1 = find(x>0);
x_up = indices1(1);
x_down = indices1(end);
BW=I(y_up:y_down,x_up:x_down);
figure;imshow(BW);
imwrite(BW, ‘F:\boss\HeartLungSegment_RadiographicIndexComputation\dtouming.png ‘,‘png‘);
[h,w]=size(BW);
ima=imadjust(mask); %调节灰度图像的亮度或彩色图像的颜色矩阵
bw=im2bw(ima); %二值化默认值是0.5
level=graythresh(mask); %使用最大类间方差法找到图片的一个合适的阈值
bw2=im2bw(ima,level);
bw4 =bwareaopen(bw3, 20);
bw5=~bw4;
R=I(y_up:y_down,x_up:x_down,1);%矩阵的拆分,所有行列的第1个值
G=I(y_up:y_down,x_up:x_down,2);
B=I(y_up:y_down,x_up:x_down,3);
rgb=cat(3,R,G,B); %构建矩阵,3为矩阵的维数
figure,imshow(rgb)
%透明度
siz=size(BW);
alpha=ones(siz(1),siz(2));
alpha(G==255)=0; %取背景部分0 0为透明
imwrite(rgb,‘透明.png‘,‘Alpha‘,alpha);
结果如下:
原图
处理后的图像