在图像边缘周围添加所需厚度的边距

23ビュ(過去30日間)
尼娜
尼娜 2013 年 2 月 6 日
我画了一个ROI,做了一个掩码,用凸包和阴影这个。然后,我想在这个形状上添加一个所需厚度的边缘/边框,从绘制的xy凸包坐标的边缘开始(最好以像素为单位)。我正在使用DICOM图像,并希望在病变周围绘制,然后添加一个安全边缘以进行切除。
我已经搜索了一段时间,以找到一个合适的函数,我已经得到的最接近的解决方案是绘制凸包xy点的线厚度,无论多少像素-这条线开始有“裂缝”一旦它比几毫米厚,并集中在绘图坐标上,而不是从边缘开始。下面是我创建凸包时所做的:
Bw = bwconvhull(掩码);
用户输入所需的页边距厚度
Mar = inputdlg('输入所需的空白宽度,单位为mm');
3月= str2double (MAR);
将像素转换为mm的一些数学运算
n = MAR /像素;
M = (n ./像素)*2;
填充宽度为m的凸包和绘图线
[y, x] = find(bw);
K = convhull(x, y);
抓住
Plot (x, y, 'c.');
plot(x(k), y(k), 'c', 'LineWidth', m);
推迟

採用された回答

图像分析
图像分析 2013 年 2 月 6 日
你知道有一个bwconvhull()函数。您不必使用低效的find()和convhull()方法。
我不知道你想干什么。你只是想在覆盖层中绘制一条粗线吗?或者你想放大凸包定义的ROI ?如果是后者,可以在凸包图像上使用imdilate()来放大斑点。

その他の回答(1件)

尼娜
尼娜 2013 年 2 月 6 日
我通过使用bwdist函数来获得距离我的roi边缘的距离(以像素为单位),然后过滤掉我不想包含在填充区域中的像素:
Bw = bwconvhull(掩码);
Mar = inputdlg('输入所需的空白宽度,单位为mm');
3月= str2double (MAR);
n = MAR /像素;
M = (n ./像素)*2;
D = bwdist(bw);
F = double(D
[y, x] = find(F);
抓住
Plot (x, y, 'c.')
推迟
2件のコメント
尼娜
尼娜 2013 年 2 月 8 日
我将修改我的代码来做到这一点。感谢图像分析师!

サ▪▪ン▪▪ンしてコメントする。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的