确定图像的熵和各向异性 Halcon entropy_gray 解析
1、图像的熵
1.1 介绍
图像熵(image entropy)是图像“繁忙”程度的估计值,它表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。熵指的是体系的混乱程度,对于图像而言,对焦良好的图像的熵大于没有清晰对焦的图像,因此可以用熵作为一种对焦评价标准。熵越大,图像越清晰。
图像熵反映了图像灰度直方图分布的离散程度。当图像细节清晰时,图像的灰度直方图分布较广,像素间灰度值对比较强,图像熵也较大;当图像模糊时,图像的灰度直方图分布较窄且集中,像素间的灰度值相差小,图像熵较小。
1.2 特征
- 对于一副灰度级为256的图像,其最大图像熵约为5.54比特/像素。
- 图像熵越大,表明图像的灰度级越多,直方图分布越均匀,相应的图像质量越好,细节信息越丰富。
- 图像熵是对图像灰度信息的整体描述,孤立的像素点几乎不会对图像熵造成影响。
1.3 应用
图像熵在图像处理、计算机视觉等领域有广泛应用。例如,在图像压缩中,可以利用图像熵来评估图像的信息量,从而选择合适的压缩算法和参数。在图像分割中,图像熵可以作为分割阈值的选取依据,帮助实现更准确的图像分割。此外,图像熵还可以用于图像质量评价、图像增强、图像去噪等方面。
2、各向异性
2.1 介绍
各向异性(anisotropy)是描述物质或系统在不同方向上具有不同性质的特性。在图像处理中,各向异性通常指的是图像在不同方向上的纹理、亮度、颜色等特征存在差异。
2.2 特点
各向异性是图像的一种重要特性,它反映了图像在不同方向上的信息差异。这种差异可以是由于图像的拍摄角度、光照条件、物体表面纹理等因素造成的。在图像处理中,利用各向异性可以帮助我们更好地理解和分析图像,提取有用的信息。
2.3 应用
各向异性在图像处理中有多种应用。例如,在图像增强中,可以利用各向异性来增强图像在某些方向上的特征,提高图像的视觉效果。在图像分割中,各向异性可以作为分割算法的一个重要依据,帮助实现更准确的分割结果。此外,各向异性还可以用于图像去噪、图像修复、图像识别等方面。
在地震图像处理中,各向异性扩散滤波方法被广泛应用于断层识别。这种方法利用地震图像中各向异性的特性,通过构建结构张量矩阵来判断扩散方向,从而实现保边去噪和断层识别。这种方法在提高地震资料信噪比的同时,保护了断层等小尺度边缘信息,为后续的地震断层精细解释等提供了基础资料。
3、Halcon entropy_gray
`entropy_gray` 是 Halcon 库中的一个算子,用于确定图像的熵和各向异性。
1. 名称与功能:
- 名称:`entropy_gray`
- 功能:确定图像的熵和各向异性 。
2. 用法:
- 算子的用法为:`entropy_gray(Regions, Image : : : Entropy, Anisotropy)` 。
3. 描述:
- `entropy_gray` 创建输入图像中灰度值的相对频率直方图,并根据这些频率计算来自区域的每个区域的熵和各向异性系数 。
- 熵和各向异性系数的计算公式如下:
- 熵(Entropy):根据灰度值频率的直方图计算得出。
- 各向异性系数(Anisotropy):测量灰度值分布的对称性 。
4. 参数:
- `Regions`:要确定特征的区域,输入类型为 region(-array) 。
- `Image`:灰度值图像,输入类型为 singlechannelimage 。
- `Entropy`:输出信息内容(熵)的灰度值,输出类型为 real(-array) 。
- `Anisotropy`:测量灰度值分布的对称性,输出类型为 real(-array) 。
5. 注意:
- `entropy_gray` 算子仅考虑给定的区域,并忽略输入图像 `Image` 的任何先前设置的域 。
6. 并行性:
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程范围:全局(可以从任何线程调用)。
- 在元组级别自动并行化处理 。
7. 复杂度:
- 如果 F 是该区域的面积,则运行时复杂度为 O(F + 255) 。
8. 结果:
- 如果输入了具有定义的灰度值的图像并且参数是正确的,则算子 `entropy_gray` 返回值 2(`H_MSG_TRUE`)。空输入情况下的行为(没有可用的输入图像)可以通过 `set_system('no_object_result',<Result>:)` 设置,空区域的行为可以通过 `set_system('empty_region_result',<Result>:)` 设置。如有必要,会引发异常 。
9. 替代算子:
- `select_gray` 。
10. 参考其他算子:
- `entropy_image`, `gray_histo`, `gray_histo_abs`, `fuzzy_entropy`, `fuzzy_perimeter` 。
4、具体计算
read_image (Image, 'fabrik')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowID)
dev_display (Image)
dev_set_draw ('margin')
* Create two rectangle parallel to the coordinate axes
gen_rectangle1 (Rectangle1, 351, 289, 407, 340)
gen_rectangle1 (Rectangle2, 78, 178, 144, 244)
entropy_gray (Rectangle1, Image, Entropy1, Anisotropy1)
entropy_gray (Rectangle2, Image, Entropy2, Anisotropy2)
区域1的熵和各向异性为:
区域2的熵和各向异性为:
从图像可以看出熵的大小可以用来区分不同图像内容。
5、应用 Halcon例程:crystal.hdev
* crystal.hdev: extraction of hexagonally shaped crystals via local thresholding and region post-processing* 关闭当前所有打开的窗口,防止干扰
dev_close_window ()* 关闭窗口的自动更新功能,以提高处理速度
dev_update_window ('off')* ****
* step: acquire image
* 加载图像文件到内存中,准备进行处理
* 文件名为'crystal'
* ****
read_image (Image, 'crystal')* 获取图像的尺寸,用于后续窗口的调整
get_image_size (Image, Width, Height)* 根据图像的尺寸打开一个新窗口,以适应图像的大小
dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowID)* 设置窗口中显示的字体样式和大小
set_display_font (WindowID, 12, 'mono', 'true', 'false')* 设置绘制模式为边缘绘制,以便更清晰地显示图像边缘
dev_set_draw ('margin')* 设置绘制线条的宽度
dev_set_line_width (2)* 在窗口中显示原始图像
dev_display (Image)* 显示继续消息,提示用户下一步操作
disp_continue_message (WindowID, 'black', 'true')* 暂停程序执行,等待用户输入继续
stop ()* ****
* step: segment image
* 对图像进行分割处理,以提取出感兴趣的区域
* ***** -> 使用局部阈值法进行分割
* 计算图像的均值图像,用于后续的阈值处理
mean_image (Image, ImageMean, 21, 21)* 使用动态阈值法根据均值图像对原始图像进行分割
dyn_threshold (Image, ImageMean, RegionDynThresh, 8, 'dark')* -> 提取连通区域
* 将分割后的区域中连通的部分提取出来
connection (RegionDynThresh, ConnectedRegions)* 在窗口中显示连通区域
dev_display (ConnectedRegions)* 显示继续消息,提示用户下一步操作
disp_continue_message (WindowID, 'black', 'true')* 暂停程序执行,等待用户输入继续
stop ()* ****
* step: process regions
* 对提取出的区域进行进一步的处理,以筛选出符合要求的晶体区域
* ***** 将连通区域转换为凸包区域,以便进行形状分析
shape_trans (ConnectedRegions, ConvexRegions, 'convex')* 根据面积筛选出较大的区域,这些区域可能是晶体
select_shape (ConvexRegions, LargeRegions, 'area', 'and', 600, 2000)* 根据灰度值的熵筛选出符合条件的区域,熵值反映了图像区域的灰度分布均匀性
* 这一步进一步筛选出可能的晶体区域
select_gray (LargeRegions, Image, Crystals, 'entropy', 'and', 1, 5.6)* 在窗口中同时显示原始图像和筛选出的晶体区域
dev_display (Image)
dev_display (Crystals)
相关文章:

确定图像的熵和各向异性 Halcon entropy_gray 解析
1、图像的熵 1.1 介绍 图像熵(image entropy)是图像“繁忙”程度的估计值,它表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。熵指的是体系的混乱程度,对于图像而言&#…...

大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

算法通关(3) -- kmp算法
KMP算法的原理 从题目引出 有两个字符串s1和s2,判断s1字符串是否包含s2字符串,如果包含返回s1包含s2的最左开头位置,不包含返回-1,如果是按照暴力的方法去匹配,以s1的每个字符作为开头,用s2的整体去匹配,…...

5G网卡network connection: disconnected
日志 5G流程中没有报任何错误,但是重新拿地址了,感觉像是驱动层连接断开了,dmesg中日志如下: [ 1526.558377] ippassthrough:set [ ip10.108.40.47 mask27 ip_net10.108.40.32 router10.108.40.33 dns221.12.1.227 221.12.33.227] br-lan […...

微积分复习笔记 Calculus Volume 1 - 4.9 Newton’s Method
4.9 Newton’s Method - Calculus Volume 1 | OpenStax...

Flutter自定义矩形进度条实现详解
在Flutter应用开发中,进度条是一个常见的UI组件,用于展示任务的完成进度。本文将详细介绍如何实现一个支持动画效果的自定义矩形进度条。 功能特点 支持圆角矩形外观平滑的动画过渡效果可自定义渐变色可配置边框宽度和颜色支持进度更新动画 实现原理 …...

如何设置 TORCH_CUDA_ARCH_LIST 环境变量以优化 PyTorch 性能
引言 在深度学习领域,PyTorch 是一个广泛使用的框架,它允许开发者高效地构建和训练模型。为了充分利用你的 GPU 硬件,正确设置 TORCH_CUDA_ARCH_LIST 环境变量至关重要。这个变量告诉 PyTorch 在构建过程中应该针对哪些 CUDA 架构版本进行优…...

CSS的三个重点
目录 1.盒模型 (Box Model)2.位置 (position)3.布局 (Layout)4.低代码中的这些概念 在学习CSS时,有三个概念需要重点理解,分别是盒模型、定位、布局 1.盒模型 (Box Model) 定义: CSS 盒模型是指每个 HTML 元素在页面上被视为一个矩形盒子。…...

【笔记】前后端互通中前端登录无响应
后来的前情提要 : 后端的ip地址在本地测试阶段应该设置为localhost 前端中写cors的配置 后端也要写cors的配置 且两者的url都要为localhost 前端写的baseUrl是指定对应的后端的ip地址以及端口号 很重要 在本地时后端的IP的地址也必须为本地的 F12的网页报错是&a…...

AI引领PPT创作:迈向“免费”时代的新篇章?
AI引领PPT创作:迈向“免费”时代的新篇章? 在信息爆炸的时代,演示文稿(PPT)作为传递信息和展示观点的重要工具,其制作效率和质量直接关系到演讲者的信息传递效果。随着人工智能(AI)…...

HTB:Perfection[WriteUP]
目录 连接至HTB服务器并启动靶机 1.What version of OpenSSH is running? 使用nmap对靶机TCP端口进行开放扫描 2.What programming language is the web application written in? 使用浏览器访问靶机80端口页面,并通过Wappalyzer查看页面脚本语言 3.Which e…...

鸿蒙next打包流程
目录 下载团结引擎 添加开源鸿蒙打包支持 打包报错 路径问题 安装DevEcoStudio 可以在DevEcoStudio进行打包hap和app 包结构 没法直接用previewer运行 真机运行和测试需要配置签名,DevEcoStudio可以自动配置, 模拟器安装hap提示报错 安装成功,但无法打开 团结1.3版本新增工具…...

uni-app 实现自定义底部导航
原博:https://juejin.cn/post/7365533404790341651 在开发微信小程序,通常会使用uniapp自带的tabBar实现底部图标和导航,但现实有少量应用使用uniapp自带的tabBar无法满足需求,这时需要自定义底部tabBar功能。 例如下图的需求&am…...

Vue前端开发:animate.css第三方动画库
在实际的项目开发中,如果自定义元素的动画,不仅效率低下,代码量大,而且还存在浏览器的兼容性问题,因此,可以借助一些优秀的第三动画库来协助完成动画的效果,如animate.css和gsap动画库ÿ…...

Java中的I/O模型——BIO、NIO、AIO
1. BIO(Blocking I/O) 1. 1 BIO(Blocking I/O)模型概述 BIO,即“阻塞I/O”(Blocking I/O),是一种同步阻塞的I/O模式。它的主要特点是,当程序发起I/O请求(比如…...

【软考知识】敏捷开发与统一建模过程(RUP)
敏捷开发模式 概述敏捷开发的主要特点包括:敏捷开发的常见实践包括:敏捷开发的优势:敏捷开发的挑战:敏捷开发的方法论: ScrumScrum 的核心概念Scrum 的执行过程Scrum 的适用场景 极限编程(XP)核…...

Redis常见面试题(二)
Redis性能优化 Redis性能测试 阿里Redis性能优化 使用批量操作减少网络传输 Redis命令执行步骤:1、发送命令;2、命令排队;3、命令执行;4、返回结果。其中 1 与 4 消耗时间 --> Round Trip Time(RTT,…...

业务模块部署
一、部署前端 1.1 window部署 下载业务模块前端包。 (此包为耐威迪公司发布,请联系耐威迪客服或售后获得) 包名为:业务-xxxx-business (注:xxxx为发布版本号) 此文件部署位置为:……...

【LeetCode】【算法】48. 旋转图像
LeetCode 48. 旋转图像 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 思路 思路:再次拜见K神…...

【STM32F1】——9轴姿态模块JY901与串口通信(上)
【STM32F1】——9轴姿态模块JY901与串口通信(上) 一、简介 本篇主要对调试JY901模块的过程进行总结,实现了以下功能。 串口普通收发:使用STM32F103C8T6的USART2实现9轴姿态模块JY901串口数据的读取,并利用USART1发送到串口助手。 串口DMA收发:使用STM32F103C8T6的USART…...

Docker网络概述
1. Docker 网络概述 1.1 网络组件 Docker网络的核心组件包括网络驱动程序、网络、容器以及IP地址管理(IPAM)。这些组件共同工作,为容器提供网络连接和通信能力。 网络驱动程序:Docker支持多种网络驱动程序,每种驱动程…...

Vite与Vue Cli的区别与详解
它们的功能非常相似,都是提供基本项目脚手架和开发服务器的构建工具。 主要区别 Vite在开发环境下基于浏览器原生ES6 Modules提供功能支持,在生产环境下基于Rollup打包; Vue Cli不区分环境,都是基于Webpack。 在生产环境下&…...

深究JS底层原理
一、JS中八种数据类型判断方法 在JavaScript中,数据类型分为两大类:基本(原始)数据类型和引用(对象)数据类型。 基本数据类型(Primitive Data Types) 基本数据类型是表示简单的数…...

数据分析-41-时间序列预测之机器学习方法XGBoost
文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 XGBoost2.1 模拟数据2.2 生成滞后特征2.3 切分训练集和测试集2.4 封装专用格式2.5 模型训练和预测3 参…...

json转java对象 1.文件读取为String 2.String转为JSONObject 3.JSONObject转为Class
一.参考王广帅的 服务器起服时的加载 private void readConfigFile(String configDir, Class<?> clazz) throws Exception {String fileName getConfigFileName(clazz);File configFile new File(configDir, fileName);// 读取所有的行,因此,应…...

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)
更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示: 基于卷积神经网络的农作物病虫害检测(pytorch框架)_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…...

ETLCloud异常问题分析ai功能
在数据处理和集成的过程中,异常问题的发生往往会对业务运营造成显著影响。为了提高ETL(提取、转换、加载)流程的稳定性与效率,ETLCloud推出了智能异常问题分析AI功能。这一创新工具旨在实时监测数据流动中的潜在异常,自…...

【1】 Kafka快速入门-从原理到实践
文章目录 🔍 一、引言📜 二、Kafka 的历史🏗️ 三、Kafka 的核心结构🖥️ (一)Broker📋 (二)Topic📄 (三)Partition📤 (四)Producer📥 (五)Consumer🐒 (六)Zookeeper💡 四、Kafka 的重点概念📨 (一)消息📏 (二)偏移量(Offset)🔄 (…...

go语言中的map类型详解
在Go语言中,map是一种内建的数据结构,提供了键值对(key-value)的存储方式。map通常用于实现快速的查找和关联数组,适合在需要根据键来高效查找值的场景下使用。 基本概念 map是一个无序的集合,它存储了键…...

GBase 8a MPP Cluster V9安装部署
GBase 8a MPP Cluster V9安装部署 安装环境准备 节点角色操作系统地址配置GBASE版本gbase01.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1422C4GGBase 8a MPP Cluster V9 9.5.3.28.12gbase02.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1432C4GGBase 8a MPP Cluster …...