叠加图像并创建新的图像MATLAB

时间:2015-02-17 14:47:35

标签: image matlab

im1 = grayscale images
im2 = im2bw(im1, graythresh)

我是否可以叠加im1im2根据指定的im1间隔来获取包含im2graylevel功能的第3张图片? 例如,我选择110到120之间的灰度级间隔。来自im1的值为110到120的所有像素将保持其初始灰度值,而另一个像素将保持其二进制值(来自im2)。

我是matlab的新手。

谢谢。

2 个答案:

答案 0 :(得分:1)

您真的需要使用im2bw进行阈值设置吗? 如果没有,我会推荐这样的东西(使用你的示例阈值):

im1(im1<110) = 0;
im1(im1>120) = 255;

低于110的每个值都将设置为零,高于120的每个值将设置为255(最大灰度级),其余值不受影响。 我希望这是你想要的结果。您无需叠加图像。

如果您真的想使用im2bw(使用更高级的阈值方法)并叠加图片im1im2,您可以使用此功能:

im1(im1<110 | im1>120) = 0;
im2(im1>=110 & im1<=120) = 0;

im3 = im1 + im2uint8(im2);

答案 1 :(得分:0)

在Matlab中做这件事并不难,请看这个例子:

range = [90 150];
grayThresh = 115;

im1 = imread('rice.png');
im2 = (im1 > grayThresh) * 255;

im3 = im1;
binaryPlaces = im1 < range(1) | im1 > range(2);
im3(binaryPlaces) = im2(binaryPlaces);

imshow(im3);

最难的部分是跟踪每个图像的数据类型。如果图像是double,则0为黑色,1为白色,但如果图像为uint8,则0为黑色,255为白色。由于测试图像rice.png(包含在Matlab中)加载为uint8,因此我们需要将im2乘以255。