在Matlab中对图像的ROI进行边缘检测

时间:2016-01-21 11:35:40

标签: matlab

如何在不处理图像其余部分的情况下对图像的ROI(仅)进行边缘检测?我尝试过以下但是没有用:

h4 = @(x) edge(x,'log');
Edge_map = roifilt2(Foregound_Newframe,roi_mask,h4);

roi_mask是我正在使用的二进制掩码,Foregound_Newframe是要处理的灰色图像。请举个例子。谢谢。

1 个答案:

答案 0 :(得分:1)

我看到的错误是您用来进行过滤的函数需要类型为double的输入参数,否则您的调用语法应该可以正常工作。

即。使用

YourFilter = @(x) edge(double(x),'log');

当我将此应用于roifilt2 blog series的示例时,它工作正常(在这种情况下看起来很奇怪......):

clc
clear

FullImage = imread('eight.tif');
roi_col = [222 272 300 270 221 194];
roi_row = [21 21 75 121 121 75];

ROI = roipoly(FullImage,roi_col,roi_row);

YourFilter = @(x) edge(double(x),'log');

J = roifilt2(FullImage,ROI,YourFilter);
figure, imshow(FullImage), figure, imshow(J)

以下输出:

docs