0

八.jpg 我使用来自 matlab 八.tif 的八张图片

我有以下代码:

FullImage = imread('eight.tif');
roi_col = [50 50 250 250];
roi_row = [200 50 50 200];
ROI_help1 = roipoly(FullImage,roi_col,roi_row);
roi_col = [100 70 200 200];
roi_row = [180 100 70 180];
ROI_help2 = roipoly(FullImage,roi_col,roi_row);
ROI=logical(ROI_help2-ROI_help1);
YourFilter = @(x) edge(FullImage,'Canny',0.1);
J = roifilt2(FullImage,ROI,YourFilter);
figure, imshow(FullImage)
overlay=imoverlay(FullImage,J,'red');
hold on;
imshow(overlay);

这给了我这个: 在 roi 上使用 canny 执行边缘检测

我怎样才能只在圆上执行精明的边缘检测,而不触及内部和外部红色区域,所以它应该在那里显示正常图像?

4

1 回答 1

0

解决了我的问题。只需要创建一个 ROI 的补充并从 J 中减去

ROI_neg=imcomplement(ROI);
LOL=J-ROI_neg;
figure;
overlay=imoverlay(Image,LOL,'red');
hold on;
imshow(overlay);

但是,如果我使用不同的图像(拼接图像。太大而无法更新),它将无法工作。我是否缺少任何特定要求?数据类型等?我使用 .tif

于 2018-05-24T08:17:15.257 回答