Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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,我是图像处理新手。我想在黑白像素之间找到一个表面,把它们分开。这里是图像链接。 图像大小为(21900900) 我试图在一个平面的图像中使用MATLAB的boundarymask命令,但我得到了噪声,而且它只适用于二维图像。请建议我如何在这里找到边界3d曲面。非常感谢。 这是应用boundarymask后的输出图像 你的第一步应该是消除噪音。由于存在某种椒盐噪声,因此可以使用matlab中的medfilt2()对2D图像进行中值滤波。之后,您可以使用边缘数据编辑器查找边缘像素。此代码可能如下所

我是图像处理新手。我想在黑白像素之间找到一个表面,把它们分开。这里是图像链接。 图像大小为(21900900)

我试图在一个平面的图像中使用MATLAB的boundarymask命令,但我得到了噪声,而且它只适用于二维图像。请建议我如何在这里找到边界3d曲面。非常感谢。 这是应用boundarymask后的输出图像


你的第一步应该是消除噪音。由于存在某种椒盐噪声,因此可以使用matlab中的
medfilt2()
对2D图像进行中值滤波。之后,您可以使用边缘数据编辑器查找边缘像素。此代码可能如下所示。如果需要曲面,则需要在3D图像的第三维上循环该曲面。代码如下所示:

for ii=1:16
    I=imread('image.tif',ii);
    I_bs=boundarymask(I);
    I_filt=medfilt2(I_bs,[7 7]);
    boundarysurface(:,:,ii)=edge(I_filt,'Canny');
end

对于这个简单的例子,我在这里使用的边缘检测器无疑是矫枉过正的,但这是我在短期内能想到的最简单的事情。如果性能相关,请告诉我,我会给你另一种方法。

我想你误解了什么。我的输入图像是三维附加在谷歌驱动器链接。显示的图片是应用于边界遮罩后的输出图像。二维中的边变为三维中的曲面。谢谢你的回答。我会尝试用中值滤波器进行预处理。如果是这样的话,我真的不理解你的问题。你想要一个边界曲面,你就得到了一个边界曲面。如果您想消除表面的噪音,请使用我建议的medfilt2。你还需要什么?@user3704712好的,我想我现在得到了你想要的。这是图像第一维度的21个一级之一的边界遮罩图像,您希望曲面沿着图像的所有21个一级,对吗?如果是这样,我可以改变我的答案,以适应以后的需要是的,你是对的。我想要沿着图像的所有21层的表面。很抱歉迟了回复。@user3704712很抱歉,我有点忘了这件事。但是我调整了我的答案。现在就去看看它是否符合你的需要。在以类似于Max建议的方式去除噪声后(尽管我会使用3D中值滤波器),使用3x3内核进行侵蚀。图像和腐蚀图像之间的区别在于您要寻找的曲面。