当前位置: 首页 > news >正文

质量图导向法解包裹之---计算边缘可靠性

在这之前需要我们知道像素点的可靠性

% 这反映了相位变化的平滑程度。以下是一个可能的实现,它使用了二阶差分来计算可靠性:
function rel = calculateReliability(wrappedPhase)% 应用高斯滤波减少噪声filteredImg = imgaussfilt(wrappedPhase, 2); % '2' 是高斯核的标准差rel = zeros(size(filteredImg));% 获取移动后的图像 (N-2, N-2)img_im1_jm1 = filteredImg(1:end-2, 1:end-2);img_i_jm1   = filteredImg(2:end-1, 1:end-2);img_ip1_jm1 = filteredImg(3:end  , 1:end-2);img_im1_j   = filteredImg(1:end-2, 2:end-1);img_i_j     = filteredImg(2:end-1, 2:end-1);img_ip1_j   = filteredImg(3:end  , 2:end-1);img_im1_jp1 = filteredImg(1:end-2, 3:end  );img_i_jp1   = filteredImg(2:end-1, 3:end  );img_ip1_jp1 = filteredImg(3:end  , 3:end  );% 计算差分gamma = @(x) sign(x) .* mod(abs(x), pi); % 一次差分算法H  = gamma(img_im1_j   - img_i_j) - gamma(img_i_j - img_ip1_j  );V  = gamma(img_i_jm1   - img_i_j) - gamma(img_i_j - img_i_jp1  );D1 = gamma(img_im1_jm1 - img_i_j) - gamma(img_i_j - img_ip1_jp1);D2 = gamma(img_im1_jp1 - img_i_j) - gamma(img_i_j - img_ip1_jm1);% 计算二次差分的和D = sqrt(H.*H + V.*V + D1.*D1 + D2.*D2);% 可信度定义为二次差分的倒数rel(2:end-1, 2:end-1) = 1./D;% 处理异常值,例如将非常高的可靠性值限制在一个阈值内maxReliability = 200; % 可以根据需要调整这个值rel(rel > maxReliability) = maxReliability;% 将所有空值和原图中的非空值赋值为0rel(isnan(rel) & ~isnan(filteredImg)) = 0;% 将原图中的空值在可信度中也赋值为空rel(isnan(filteredImg)) = nan;% 对可靠性结果进行平滑处理rel = imgaussfilt(rel, 1); % 使用高斯滤波平滑
end

要功能是计算包裹相位图像(wrappedPhase)的可靠性。这种可靠性计算对于相位图像处理是非常重要的,尤其是在如相位展开或高精度测量等应用中。以下是详细步骤分析:

  1. 高斯滤波降噪:

    • 使用高斯滤波器处理包裹相位图像,减少噪声对后续可靠性计算的影响。这一步是预处理,旨在改善数据的质量。
  2. 计算一阶差分:

    • 对滤波后的图像进行一阶差分计算。这包括沿不同方向(水平、垂直及对角线)的相邻像素间的差分。
    • 使用的 gamma 函数处理差分值,保证差分结果落在合适的范围内(例如,对于相位值,这通常是π)。
  3. 二阶差分的计算:

    • 通过结合不同方向的一阶差分计算二阶差分。二阶差分可以视为相邻像素差分的差分,提供了更细微的局部变化信息。
  4. 可靠性的定义:

    • 将二阶差分的平方和的平方根的倒数定义为可靠性。这种方式认为,当相邻像素间的差分较小(即图像在该区域较为平滑),可靠性较高。
  5. 处理异常值:

    • 对于非常高的可靠性值,将其限制在一个预设的阈值内,避免因极端值导致的可靠性评估失真。
  6. 空值处理:

    • 将原始图像中非空值对应的可靠性矩阵中的空值设为0,并保留原始图像中的空值。
  7. 结果平滑处理:

    • 使用高斯滤波平滑处理最终的可靠性结果,以提高结果的一致性。

总的来说,这段代码通过计算二阶差分来评估包裹相位图像的局部可靠性,这对于确保相位展开等后续处理的准确性至关重要。通过这种方法,可以识别出图像中可靠性较高的区域,这些区域通常在相位展开或分析中更为可信。

在图像处理中,边缘是像素值发生显著变化的地方,通常对应于图像特征如线条、边界等。这里的方法是通过计算相邻像素间的可靠性来估算这些边缘的显著性。 


function [h_edges, v_edges] = get_edges(rel)
[Ny, Nx] = size(rel);
h_edges = [rel(1:end, 2:end) + rel(1:end, 1:end-1), nan(Ny, 1)];%补一行空值
v_edges = [rel(2:end, 1:end) + rel(1:end-1, 1:end); nan(1, Nx)];%补一列空值
end
  1. 水平边缘可靠性(h_edges:

    • 对于每个像素,将其与其右侧相邻像素的可靠性值相加。
    • 这意味着 h_edges 中的每个元素代表了一对水平相邻像素的综合可靠性。
    • 在最后,由于图像的最右侧像素没有右侧邻居,因此在 h_edges 的最右侧列上补充 NaN
  2. 垂直边缘可靠性(v_edges:

    • 类似地,对于每个像素,将其与其下方相邻像素的可靠性值相加。
    • v_edges 中的每个元素表示一对垂直相邻像素的综合可靠性。
    • 在最后,由于图像的最底部像素没有下方邻居,因此在 v_edges 的最底部行上补充 NaN

原理解释:

  • 这种计算方法基于这样一个假设:边缘的可靠性可以通过相邻像素的可靠性之和来估计。如果两个相邻像素都具有高可靠性,那么它们之间的边缘也被认为是可靠的。
  • 通过这种方法,可以在图像处理任务中,如边缘检测或特征提取,快速地识别出哪些边缘是可靠的。

http://www.lryc.cn/news/264483.html

相关文章:

  • C# WPF上位机开发(进度条操作)
  • vulnhub-Tre(cms渗透)
  • Re解析(正则表达式解析)
  • HTML输出特殊字符详细方法
  • 《漫画算法》笔记——计算两个大数的和
  • Python3.13版本改进规划
  • aws配置以及下载 spaceNet6 数据集
  • 进阶之路:高级Spring整合技术解析
  • 【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案
  • uniapp运行到手机模拟器
  • 基于PHP的蛋糕购物商城系统
  • 嵌入式中的定时器概念
  • 鸿蒙ArkTS语言介绍与TS基础语法
  • 08_CMDB系统开发二
  • JavaOOP篇----第九篇
  • 华为OD机试 - 区间交集 - 深度优先搜索dfs算法(滥用)(Java 2023 B卷 200分)
  • 德人合科技 | 防止公司电脑文件数据资料外泄,自动智能透明加密保护系统
  • 常见加解密算法分析(含使用场景)
  • Oracle基本的SQL语句
  • golang项目目录推荐
  • Maven scope属性解读和使用注意事项
  • Vue3使用 xx UI解决布局高度自适应
  • 九牧:科技卫浴,长期主义
  • 中级软件设计师-note-2
  • 解锁商业宝藏:迅软科技答疑保护商业秘密的重要性
  • 【GIT】撤销命令
  • 开发知识点-09Rust
  • Android开发中,百度语音集成之一
  • nodejs连接mongodb报错SyntaxError: Unexpected token .
  • Ubuntu 常用命令之 gunzip 命令用法介绍