【问题标题】:MATLAB image processing techniqueMATLAB图像处理技术
【发布时间】:2017-08-20 00:19:56
【问题描述】:

我在 MATLAB 中有这个 3D 数组(V:垂直,H:水平,t:时间范围)

下图是使用imagesc函数在t轴上对数组进行切片后得到的图像

黑色区域表示损坏区域,其他区域完好

每一帧看起来相似,但幅度不同

我正在尝试仅可视化缺陷区域并去除完整区域

我尝试使用“阈值”方法去除完整区域,如下所示

NewSet = zeros(450,450,200);

for kk = 1:200
    frame = uwpi(:,:,kk);
    STD = std(frame(:));
    Mean = mean(frame(:));
    for ii = 1:450
        for jj =1:450
            if frame(ii, jj) > 2*STD+Mean
                NewSet(ii, jj, kk) = frame(ii, jj);
            else 
                NewSet(ii, jj, kk) = NaN;            
            end           
        end
    end
end

但是,由于每一帧的幅度不同,结果变成

有没有什么图像处理方法可以去除这种情况下的完整区域?

提前致谢

【问题讨论】:

  • 我想试一试,您可以通过什么方式包含数据集?
  • 如果你能告诉我你的电子邮件地址,我想我可以马上发给你
  • drive.google.com/file/d/0B9HB9TLYb3HMb3RaNFQtakw2clU/… 这是我的数据集:uwpi.mat(450x450x200) 试试看,让我知道!祝你好运
  • 您可以先尝试标准化您的图像或查看 graythresh

标签: image matlab


【解决方案1】:

您基于均值和标准差设置阈值,基本上假设您的数据呈正态分布并寻找异常值。但是您的模型应该尝试区分零(噪声)附近的值和更高的值。您的数据不是正态分布的,均值和标准差没有意义。

查找 Otsu 阈值(MATLAB IP 工具箱有)。它的模型与您的数据不完全匹配,但它可能会给出合理的结果。与大多数阈值估计算法一样,它使用图像的直方图来确定给定模型的最佳阈值。

理想情况下,您应该在直方图中模拟背景峰值。你可以找到模式,在它周围拟合一个高斯,然后在 2 sigma 处切断。或者您可以使用“三角法”,它沿着直方图找到距离直方图上端和背景峰顶之间的连线最远的点。解释起来有点复杂,但实现起来很简单。我们在 DIPimage (http://www.diplib.org) 中实现了这个,M 文件代码是可见的,所以你可以看到它是如何工作的(查找函数 threshold

另外,我建议去掉 x 和 y 上的循环。您可以输入frame(frame<threshold) = nan,然后一次操作将整个帧复制回NewSet

【讨论】:

    【解决方案2】:

    我是否清楚地理解了这个问题,ROI 是黑色边框及其周围的一切?如果是这样,我建议使用某种区域增长技术进行 3D 处理,例如分水岭或带有 imregionalmin 标记的活动蛇。即使边界有小洞,这些方法也应该提供分割结果。不仅仅是通过逻辑索引将分段对象复制到新的 3D 数组。

    【讨论】:

    • 是的。深色边框及其周围的一切都是投资回报率。我也试试你的方法。谢谢
    猜你喜欢
    • 2012-04-11
    • 2011-05-10
    • 2018-11-11
    • 2011-07-15
    • 2012-12-04
    • 2021-12-05
    • 2020-03-03
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多