matlab - 如何计算 12 个方向的最大响应?
问题描述
我已经尝试在 MATLAB 上实现这篇论文:https ://www.sciencedirect.com/science/article/pii/S1877050915028355 。
我被困在 4.1 Step1:
通过计算12个方向的最大响应得到打开的图像I。
我该如何实施?
这是我的一个方向的代码:
Input_Image = imread('Retina_pics/training/images/24_training.tif');
mask = imread('Retina_pics/training/mask/24_training_mask.gif');
figure, imshow(Input_Image), title('Input Image');
figure, imshow(mask), title('Mask');
Resized_Image = imresize(Input_Image, [584 565]);
Double_depth_Image = im2double(Resized_Image);
Gray_Image = rgb2gray(Double_depth_Image);
figure, imshow(Gray_Image), title('Gray Image');
se = strel('rectangle', [7.0 1.0]);
afterOpening = imopen(Gray_Image, se);
figure, imshow(afterOpening), title('After Open');
% Reconstructed_Image = imreconstruct(afterOpening, mask);
解决方案
首先找到跨越所有 180 度的 12 个角度(180 度的线与 0 度的线相同):
phi = linspace(0, 180, 13);
phi(end) = []; % remove 13th element, it’s the same as 0
接下来,在每个角度创建一个线结构元素( doc )并将其应用于图像:
se = strel('line', 7, phi(ii));
afterOpening = imopen(Gray_Image, se);
最后,在这 12 个结果中取元素最大值。使用循环执行此操作的更有效方法如下:
se = strel('line', 7, phi(1));
afterOpening = imopen(Gray_Image, se);
for ii=2:numel(phi)
se = strel('line', 7, phi(ii));
tmp = imopen(Gray_Image, se);
afterOpening = max(afterOpening, tmp);
end
推荐阅读
- asp.net-mvc - 如何使用实体框架安全地将 id 数据类型从 INT 更改为字符串?
- google-api - 无法访问 GSuite 组 - 错误代码 400
- r - 如何解决“无法解析”问题以使用 bigrquery 下载表
- firebase - 有没有办法在创建时获取文档的时间戳
- arrays - 如何通过子文档和文档查找并且更新正在推送子文档
- c# - 验证 json 以确定 NJsonSchema C# 中的帖子不足
- html - 我正在尝试将 bootsrap 添加到我的 html 中,但是一旦我输入链接,我的单独 css 就停止工作了?
- django - 在 Django 中定义蓝图分组对象
- python - 使用右边距调整器输出格式
- python - 将列表数组转换为 Keras 输入