【问题标题】:Binary Reconstruction Algorithm二进制重构算法
【发布时间】:2018-08-01 22:27:26
【问题描述】:

我想在matlab中写一个简单的二进制重构算法。到目前为止,我知道这个算法是在开放之后使用的,以重新生成与开放连接的原始图像片段。我还发现它可以删除与较大对象不相交的小区域,而不会扭曲大对象的小特征。

这是伪代码:

1. J = I o Z; %open input image with some structre element
2. T = J;
3. J = J  Z(k) % Dilate J with Z(k). this is my first problems. if Z in first line is structure element, then what is Z(k)?
4. J = I AND J % my second problem. how to AND these two on matlab.
5. if J ~= T go to 2.
6. else stop and J is the reconstructed image.

假设我们有这张图片作为输入:

重建后的图像如下:

使用上面提到的代码,到目前为止我已经写了:

img = imread ('Input.jpg');
img = im2bw(img, 0.8);
J = bwmorph(img,'open');
T = J;
J = bwmorph(J, 'dilate');

我的问题是如何在 MATLAB 中正确结束。

我的第二个问题是如果我要使用 imdilate 而不是 bwmorph 在提到的示例中我的结构元素应该是什么?

【问题讨论】:

  • 将您的图片上传到网络服务 (tinypic.com) 并发布图片链接。
  • 请更具体地说明您要做什么。请不要让我们阅读论文 - 只需简要说明您正在尝试的内容以及您在这样做时遇到困难的原因。
  • 我使用了 (imgur.com),但仍然出现错误。这就是我最初的做法:!Input Image
  • 您现在获得了图片 - 您可以使用该图片编辑您的帖子。
  • 感谢您的评论。假设我们有this picture,我们希望得到this one,其中去除了噪声并保留了细节。要使用形态操作数执行此操作,必须执行以下操作:pseudo code 我不知道如何编写第三行和第四行代码。

标签: matlab image-processing


【解决方案1】:

根据上面的 cmets,你可能想做这样的事情:

img = imread ('Input.jpg');
img = im2bw(img, 0.8);
J = bwmorph(img,'open');
THRESH = 0;
while (1)
    T = J;
    J = bwmorph(J, 'dilate');
    J = img & J;
    if (sum(T(:) - J(:)) <= THRESH)
        break;
    end
end

基于伪代码,您可以设置 THRESH = 0(即 T = J),但在现实生活中,您可能会接受一些小的差异。

【讨论】:

  • @ Hugh Nolan 谢谢,就是这样。根据您的评论,我想也可以使用 this 作为结构元素并写: J = imopen(img, se); T = J;而(J~=T)T=J; J = imdilate(J,se); J = I & J;结束
猜你喜欢
  • 2022-10-06
  • 2021-02-26
  • 2020-02-10
  • 2016-07-25
  • 1970-01-01
  • 2018-03-25
  • 2011-01-25
  • 2013-09-26
  • 1970-01-01
相关资源
最近更新 更多