屏蔽多个部分的图像
15的观点(30天)
显示旧的评论
接受的答案
为副总经理
2022年5月19日
编辑:为副总经理
2022年5月19日
至于用多个圆形区域创建一个面具,您可以使用ROI的工具。
你可以以交互方式是这样的:
一个= imread (“peppers.png”);%得到一个图像
ncircles = 4;%多少圈?
imshow (iminv (A))%设置轴
为k = 1: ncircles
投资回报率= drawcircle (gca);%手工画圆圈
%收集的面具
如果k = = 1
掩码= createMask (ROI);
其他的
掩码=面具| createMask (ROI);
结束
结束
imshow(面具)%显示生成的面具
显然,我不能做互动论坛编辑器上的任务,但是这是假设的结果。
如果你已经知道圆的位置,想通过编程创建面具,你仍然可以使用相同的ROI工具:
一个= imread (“peppers.png”);%得到一个图像
%中心和半径(像素)
C = (151 276;216 104;333 225;367 98);
R = [47;39;36个;64);
imshow (iminv (A))%设置轴
为k = 1:元素个数(右)
投资回报率= images.roi.Circle (gca);%创建一个ROI对象
ROI。半径= R (k);%指定它的大小和位置
ROI。中心= C (k,:);
%收集的面具
如果k = = 1
掩码= createMask (ROI);
其他的
掩码=面具| createMask (ROI);
结束
结束
imshow(面具)%显示生成的面具
…在这种情况下,我选择复制我手动选择在第一个例子的坐标。
至于如何使用面具结合图片,您可以使用逻辑索引。这是有限的在很多方面。它不能支持线性(光万博1manbetx滑)的面具,它使需要显式阵列扩张变得更加繁琐。
FG = imread (“purppep.png”);%这是前台为叠加
%这依赖于拥有相同的数字图像类
%,要求图像具有相同数量的渠道
%这只会工作,如果面具是一个逻辑数组或关键单位比例浮动
掩码= repmat(面具,[1 1 3]);
outpict = BG;
outpict(面具)= FG(面具);
imshow (outpict)
做基本的线性(乘法)组成一个简单的方法是使用二进制和线性面具:
FG = imread (“purppep.png”);
%说你有一个平滑的或平滑的面具
掩码= imgaussfilt (im2double(面具),5);%进行平滑面具的逻辑
%这个隐式扩张需要bsxfun R2016b之前
outpict = im2double (FG)。*面具+ im2double (BG)。* (1-mask);
outpict = im2uint8 (outpict);
imshow (outpict)
FG = imread (“purppep.png”);
%说你有一个平滑的或平滑的面具
掩码= imgaussfilt (im2double(面具),5);%进行平滑面具的逻辑
%简洁,class-agnostic depth-agnostic
%也支持线性R万博1manbetxGB
outpict = replacepixels (FG, BG,面具,“线性”);
imshow (outpict)