Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于matlab的图像边界强度带的生成_Matlab_Image Processing - Fatal编程技术网

基于matlab的图像边界强度带的生成

基于matlab的图像边界强度带的生成,matlab,image-processing,Matlab,Image Processing,我有这个图像(8位,伪彩色,灰度): 我想在它的边界周围创建一个特定测量的强度带 我尝试了侵蚀和其他数学运算,包括过滤以获得所需的波段,但一旦我使用侵蚀切割部分边界,实际图像强度就会发生变化 到目前为止,我的代码如下所示: clear all clc x=imread('8-BIT COPY OF EGFP001.tif'); imshow(x); y = imerode(x,strel('disk',2)); y1=imerode(y,strel('disk',7)); z=y-y1; fi

我有这个图像(8位,伪彩色,灰度):

我想在它的边界周围创建一个特定测量的强度带

我尝试了侵蚀和其他数学运算,包括过滤以获得所需的波段,但一旦我使用侵蚀切割部分边界,实际图像强度就会发生变化

到目前为止,我的代码如下所示:

clear all
clc
x=imread('8-BIT COPY OF EGFP001.tif');
imshow(x);
y = imerode(x,strel('disk',2));
y1=imerode(y,strel('disk',7));
z=y-y1;
figure
z(z<30)=0
imshow(z)
全部清除
clc
x=imread(“EGFP001.tif的8位副本”);
imshow(x);
y=i磁极(x,strel('disk',2));
y1=imerode(y,strel('disk',7));
z=y-y1;
图形

Z(z按照比克所说的和你想做的,我个人会将你的图像转换成二进制,其中
false
代表背景,
true
代表前景。当你完成后,你会使用一个好的结构元素来腐蚀这个图像,保持轮廓的圆度您的对象(
disk
,在您的示例中)

这将是图像中大对象的内部输出。您可以使用此遮罩并将图像中的这些位置设置为黑色,以便保留外部带。因此,请尝试执行以下操作:

%// Read in image (directly from StackOverflow) and pseudo-colour the image
[im,map] = imread('http://i.stack.imgur.com/OxFwB.png');
out = ind2rgb(im, map);

%// Threshold the grayscale version
im_b = im > 10;

%// Create structuring element that removes border
se = strel('disk',7);

%// Erode thresholded image to get final mask
erode_b = imerode(im_b, se);

%// Duplicate mask in 3D
mask_3D = cat(3, erode_b, erode_b, erode_b);

%// Find indices that are true and black out result
final = out;
final(mask_3D) = 0;

figure;
imshow(final);
让我们慢慢地看一遍代码。前两行获取PNG图像,其中包含灰度图像和彩色贴图,我们将它们都读入MATLAB。接下来,我们使用将图像转换为伪彩色版本。完成此操作后,我们使用灰度图像和阈值图像,以便捕获所有对象像素s、 我用10的值对图像进行阈值设置,以避免图像中出现的量化噪声。我们将对该二值图像进行操作,以确定要设置为0的像素以获得外部边界

接下来,我们声明一个结构元素,它是一个半径为7的圆盘,然后腐蚀遮罩。完成后,我在3D中复制此遮罩,使其具有与伪彩色图像相同的通道数,然后使用遮罩的位置将对象内部的值设置为0。结果将是原始图像,但保留所有对象的外部轮廓

我得到的结果是:


这是我正在处理的主要图像。这是我希望的波段-如果最终图像中的波段宽度是您想要的,您可以对该图像设置阈值以获得一个二值遮罩,然后将该遮罩应用于原始图像。这将为您提供一个与原始图像强度相同的边框。@rayryeng,是的,一个波段,但不是恒定强度,强度与原始图像相同,我想提取主图像的某一部分(与第二幅图像一样,边界上有一个带)。在主图像中,外部边界与所有属性保持不变,中间部分消失。我恐怕无法在笔记本电脑上访问Matlab,但可以从上面的图像
z
工作,
mask=im2bw(z,阈值(z))
然后使用post将遮罩应用于原始图像。糟糕的新情况是,被侵蚀的带似乎比原始图像中的对象窄,因此这并不完全是您想要的。也许@rayryeng对创建更好的遮罩有一些想法。对不起,我从昨天开始就参与了这里,并且不太了解过程好的,但是我现在已经找到了如何接受答案,你的答案对我的学习很有帮助。如果有进一步的问题,我会发帖的。再次感谢。