如何在MATLAB中的指定边界内提取部分图像

时间:2011-07-15 07:14:34

标签: matlab image-processing image-segmentation

我是MATLAB的新手,我想知道我可以根据区分颜色(在我的情况下是红色边界)从指定边界内部提取图像的一部分,该函数首先跟踪图像的边界,然后它提取该特定边界内的那部分图像。我附有我的图像(人头图像),我想从头部提取大脑部分,图像的其他部分应该被忽略。我试图找到边缘,使用下面的代码(它显示1为边界,0为无边界),但它只显示0。

非常感谢任何帮助。

P.S。附加图像显示带边界的原始图像和图像....代码将处理带有边界的图像,并将提取位于该边界内的图像部分。

以下是我尝试的代码:

BW = edge(x)

BW = edge(x,'sobel')
BW = edge(x,'sobel',thresh)
BW = edge(x,'sobel',thresh,direction)
[BW,thresh] = edge(x,'sobel',...)

BW = edge(x,'prewitt')
BW = edge(x,'prewitt',thresh)
BW = edge(x,'prewitt',thresh,direction)
[BW,thresh] = edge(x,'prewitt',...)

BW = edge(x,'roberts')
BW = edge(x,'roberts',thresh)
[BW,thresh] = edge(x,'roberts',...)

BW = edge(x,'log')
BW = edge(x,'log',thresh)
BW = edge(x,'log',thresh,sigma)
[BW,threshold] = edge(x,'log',...)

BW = edge(x,'zerocross',thresh,h)
[BW,thresh] = edge(x,'zerocross',...)

BW = edge(x,'canny')
BW = edge(x,'canny',thresh)
BW = edge(x,'canny',thresh,sigma)
[BW,threshold] = edge(x,'canny',...)

enter image description here

2 个答案:

答案 0 :(得分:4)

因为您已将问题域显示为CT图像。我有一个很好的建议,你可以提取脑组织的区域。你可以做出很好的假设。

一个很好的假设: 除颅骨外,大脑区域没有骨骼(正常病例),并且根据CT的某些特性,您可以通过查找Hounsfield量表({{{{{{{{{{{{{{{{{{ 3}})

0)要获得正确的内场单位,需要三个元素i)原始像素值ii)重新缩放斜率iii)重新缩放截距(所有三个都可以位于原始dicom标题中,HU可以根据我们的高位计算学校数学知识:y = mx + b,因为你有截距,斜率和输入值。)

1)一旦你知道骨骼的位置,你只需要减去你的图像以获得颅骨所包围的任何东西。

2)在查看你的matlab代码时,我确定你可以执行步骤1)从残羹剩饭中分割出正确的regoin。

答案 1 :(得分:3)

仅供记录。 Mathematica代码:

enter image description here

修改

如果你只想在不追踪轮廓的情况下提取大脑,那实际上更容易:

enter image description here