qlearner的个人博客分享 http://blog.sciencenet.cn/u/qlearner

博文

用Mathematica将图片背底变成透明

已有 6437 次阅读 2016-4-27 09:25 |个人分类:编程学习|系统分类:科研笔记

首发:qixinbo.info

有时候需要将图片的背底变成透明,从而适应各种不同背景(尤其不是白色背景),使得图片能更融入到背景中去。专业中也遇到这样一个问题,需要将两个枝晶轮廓在一起比对看是否重合。将背底变为透明色,通常可以使用PowerPoint的”设置透明色”这一功能,但对于对比很明显的图片效果较好,对比不明显的图片则偏差很大,且不能人为操纵。这里采用Mathematica,仅用几行代码即可实现。

对于黑白图片,或可以将图片转为黑白的情形:
Mathematica源码为:

1
2
3
img1 = Binarize[img];
img2 = ColorConvert[img1, "Grayscale"];
img3 = ImageApply[{#, Boole[# < .1]} &, img2]


程序思路:
先将导入的img图片通过Binarize函数二值化成为img1,再将img1的颜色空间转化为Grayscale灰度,这一步很重要,否则下一步无法进行。最后使用ImageApply函数对img2的每个像素添加一个alpha通道,具体为判断像素是否为黑色,若是则alpha通道为1;若否则alpha通道为0。

对于彩色图片,想要将某一颜色设为透明:
Mathematica源码为:

1
2
3
imgB1 = SetAlphaChannel[imgB, 1];
imgB2 = ImageApply[
 If[(#[[1]] + #[[2]] + #[[3]])/3 < 0.9, #, {#[[1]], #[[2]], #[[3]],0}] &, imgB1]


程序思路:
首先应用SetAlphaChannel对导入的图片增加alpha通道,然后应用ImageApply对每个像素进行判断,这里的判断条件需要针对要研究的对象进行调节,如果不满足设为透明的条件,则保留原像素值;若满足,则保留像素的RGB值,但修改其alpha通道为0。

注意:输出图片的格式需要选择支持alpha通道的格式,如png,而不能选择jpg。




https://blog.sciencenet.cn/blog-441611-973060.html

上一篇:如何查找论文是否被SCI、EI、CSCD等收录
下一篇:用Mathematica将图片背底变成透明
收藏 IP: 119.78.133.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 13:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部