当前位置: 首页 > 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

原理解释:

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

相关文章:

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

在这之前需要我们知道像素点的可靠性 % 这反映了相位变化的平滑程度。以下是一个可能的实现,它使用了二阶差分来计算可靠性: function rel calculateReliability(wrappedPhase)% 应用高斯滤波减少噪声filteredImg imgaussfilt(wrappedPhase, 2); % 2 …...

C# WPF上位机开发(进度条操作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 软件上面如果一个操作比较缓慢,或者说需要很长的时间,那么这个时候最好添加一个进度条,提示一下当前任务的进展…...

vulnhub-Tre(cms渗透)

靶机和kali都使用net网络,方便探测主机获取ip1.靶机探测 使用fping扫描net网段 靶机ip:192.168.66.130 2.端口扫描 扫描发现该靶机三个端口,ssh,还有两个web,使用的中间件也是不一样的,一个是apache&…...

Re解析(正则表达式解析)

正则表达式基础 元字符 B站教学视频: 正则表达式元字符基本使用 量词 贪婪匹配和惰性匹配 惰性匹配如下两张图,而 .* 就表示贪婪匹配,即尽可能多的匹配到符合的字符串,如果使用贪婪匹配,那么结果就是图中的情况三 p…...

HTML输出特殊字符详细方法

以下是部分特殊字符代码表,它们的完整应用代码格式为:&#;用下面的四位数字替换,将得到对应的符号。(注意:应用这些代码,编辑器应该切换到HTML模式) ☏260f ☎260e ☺263a ☻263b ☼263c ☽…...

《漫画算法》笔记——计算两个大数的和

例题: 输入:“123”,“234” 输出:“357” 思路: 使用数组,分别计算每一位上的加和,注意记录进位信息。 然后,将数组恢复成字符串,输出。 值得注意的是,加和…...

Python3.13版本改进规划

大家好,最近faster-cpython 项目的文档介绍了关于 Python 3.13 的规划,以及在 3.13 版本中将要实现的一些优化和改进。faster-python 是 Python 的创始人 Guido van Rossum 和他的团队提出的计划 ,目标是在四年内将 CPython 的性能提升五倍。…...

aws配置以及下载 spaceNet6 数据集

一:注册亚马逊账号 注册的时候,唯一需要注意的是信用卡绑定,这个可以去淘宝买,搜索aws匿名卡。 注册完记得点击登录,记录一下自己的账户ID哦! 二:登录自己的aws账号 2.1 首先创建一个用户 首…...

进阶之路:高级Spring整合技术解析

Spring整合 1.1 Spring整合Mybatis思路分析1.1.1 环境准备步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:添加Mybatis核心配置文件步骤8:编写应用程序步骤9:运行程序 1.…...

【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案

问题描述: ArcGIS软件在作图模式下插入指北针,出现指北针乱码,如下图所示: 问题解决 下载并安装字体(配套实验数据包0081.rar中获取)即可解决该问题。 正常的指北针选择器: 专栏介绍&#xff…...

uniapp运行到手机模拟器

第一步,下载MUMU模拟器 下载地址:MuMu模拟器官网_安卓12模拟器_网易手游模拟器 (163.com) 第二步,运行mumu模拟器 第三步,运行mumu多开器 第三步,查看abs 端口 第四步,打开HBuilder,如下图,将…...

基于PHP的蛋糕购物商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的蛋糕购物商城系统 一 介绍 此蛋糕购物商城基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…...

嵌入式中的定时器概念

定时器概述 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于定时、计数、脉冲宽度调制(PWM)等领域。 具体而言,定时器可以实现以下功能: 计时:定时器可以用来实现延时操作,例如等待外部设备的稳定、等待数据的接收等,也可以…...

鸿蒙ArkTS语言介绍与TS基础语法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言,它在TS基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等响应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言,已经被广泛用…...

08_CMDB系统开发二

CMDB系统开发二 一、用户组管理模块 1、展示用户组列表 Django自带了用户表,同时也带了用户组表。他们是多对多关系。用户组模型很简单,和User模型是多对多的关系。用户组顾名思义,就是对用户进行了分组。其作用在权限控制中就是可以批量的…...

JavaOOP篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、java中是值传递引用传递?二、实例化数组后,能不能改变数组长度呢?三、假设数组内有5个元素,如果对数组进行反序,该如何做?四、形参与实参区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一…...

华为OD机试 - 区间交集 - 深度优先搜索dfs算法(滥用)(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述备注用例1、输入2、输出3、说明 四、解题思路1、核心思路:2、具体步骤 五、Java算法源码再重新读一遍题目,看看能否优化一下~解题步骤也简化了很多。 六、效果展示1、输入2、输出3、说明 华为OD机试 2…...

德人合科技 | 防止公司电脑文件数据资料外泄,自动智能透明加密保护系统

【透明加密软件】——防止公司电脑文件数据资料防止外泄,自动智能透明加密保护内部核心文件、文档、图纸、源代码、音视频等资料! PC端访问地址: www.drhchina.com 🌟 核心功能: 透明加密:采用高级加密算…...

常见加解密算法分析(含使用场景)

加密算法主要分为三类:对称加密算法、非对称加密算法和散列算法。下面将分别介绍这些类别中的常见算法及其特点和使用场景。 对称加密算法 1. AES (Advanced Encryption Standard) 简介: AES是一种广泛使用的对称加密标准,可以使用128、19…...

Oracle基本的SQL语句

1.最基本的增删改查 1.1.新增 insert 1.1.1.单表新增 INSERT INTO table_count_output (data_date,table_name,table_count ) VALUES (2023-03-15,FMCUSLVL,351 );COMMIT; 1.1.2.关联新增 INSERT INTO table_count_output (data_date,table_name,table_count )SELECTdata_…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...