确定图像的熵和各向异性 Halcon entropy_gray 解析

1、图像的熵

1.1 介绍

        图像熵(image entropy)是图像“繁忙”程度的估计值,它表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。熵指的是体系的混乱程度,对于图像而言,对焦良好的图像的熵大于没有清晰对焦的图像,因此可以用熵作为一种对焦评价标准。熵越大,图像越清晰。

        图像熵反映了图像灰度直方图分布的离散程度。当图像细节清晰时,图像的灰度直方图分布较广,像素间灰度值对比较强,图像熵也较大;当图像模糊时,图像的灰度直方图分布较窄且集中,像素间的灰度值相差小,图像熵较小。

1.2 特征

  1. 对于一副灰度级为256的图像,其最大图像熵约为5.54比特/像素。
  2. 图像熵越大,表明图像的灰度级越多,直方图分布越均匀,相应的图像质量越好,细节信息越丰富。
  3. 图像熵是对图像灰度信息的整体描述,孤立的像素点几乎不会对图像熵造成影响。

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程&#xff0c;要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素&#xff08;通常是用户名和密码&#xff09;保护资源会使它们容易受到泄露&#xff0c;添加…

特色3D打印机stm32迷你8轴双核心主板

我自己设计的3D打印机主板 1. 这是一块迷你的8轴主板, 主板尺寸为100mm*75mm, 使用一个8cm静音风扇散热足够了2. 这是一个带有保护的板子, 驱动上的gpio具有过压保护功能, 能够直接抗住24V的冲击, 意味着一个驱动炸了, 板子不烧, 并且其他的驱动也没事, 主板支持自动关机3. 8…

【LeetCode:3242. 设计相邻元素求和服务 + 模拟 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

GIF图片格式详解(二)

gif历史请参考上一篇《GIF图片格式详解&#xff08;一&#xff09;》&#xff0c;或直接访问博客地址&#xff1a;https://blog.whatsroot.xyz/2023/12/16/all-about-gif/ 文件格式概述 GIF格式采用调色板模式&#xff0c;即有一个颜色表&#xff0c;每种颜色可以使用RGB24格…

TypeScript 基础语法及使用

文章目录 1、概述2、快速使用3、常用类型4、基础类型5、联合类型6、函数类型7、对象类型 & 接口interface 1、概述 TypeScript&#xff08;简称 TS&#xff09;是JavaScript的超集&#xff08;继承了JS全部语法&#xff09;是微软开发的开源编程语言&#xff0c;可以在任何…

深入了解决策树:机器学习中的经典算法

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

基于Java Web的传智播客crm企业管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

如何学习C++游戏开发

学习C游戏开发是一个涉及多个领域的复杂过程&#xff0c;包括编程、游戏设计、图形学等。 1. **学习C基础**&#xff1a; - 掌握C的基本语法和面向对象编程。 - 学习C标准库&#xff0c;特别是STL&#xff08;标准模板库&#xff09;。 2. **理解游戏开发概念**&#xf…

RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 RabbitMQ 初识 1.1 RabbitMQ 安装 2.0 数据隔离 2.1 用户管理 2.2 virtual host 虚拟主机 3.0 SpringAMQP 3.1 RabbitMQ 配置 3.2 发送消息 3.3 接收消息 3.4 Wor…

基础归一化方法 数学理论及其matlab代码

归一化是一种简化计算的方式&#xff0c;即将有量纲的表达式&#xff0c;经过变换&#xff0c;化为无量纲的表达式&#xff0c;成为标量。在多种计算中都经常用到这种方法。以下是常见的基础归一化方法&#xff1a;Min-Max 归一化&#xff0c;Z-Score 归一化、小数定标归一化、…

漫漫数学之旅038

文章目录 经典格言数学习题古今评注名人小传 - 古斯塔夫福楼拜 经典格言 诗歌是一门像几何一样严格的科学。——古斯塔夫福楼拜&#xff08;Gustave Flaubert&#xff09; 古斯塔夫福楼拜将诗歌比作几何学&#xff0c;强调了诗歌创作的严谨性。他认为诗歌不仅仅是情感的流露&a…

前端md5加密

npm下载 npm install --save ts-md5页面引入 import { Md5 } from ts-md5使用 const md5PwdMd5.hashStr("123456")md5Pwd&#xff08;加密后的数据&#xff09; .toUpperCase()方法转大写

植物神经紊乱不用怕,这些维生素来帮你!

在现代快节奏的生活中&#xff0c;植物神经紊乱已成为一种常见的健康问题。你是否经常感到焦虑、失眠、疲劳&#xff0c;甚至消化不良&#xff1f;这些可能都是植物神经紊乱的表现。幸运的是&#xff0c;通过适当补充维生素&#xff0c;我们可以有效缓解症状&#xff0c;恢复身…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本&#xff0c;公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议&#xff0c;现打算迁移到IS-IS路由协议&#xff0c;张同学正在该公司实习&#xff0c;为了提高实际工作的准确性和…

二分查找习题篇(下)

二分查找习题篇(下) 1.山脉数组的峰顶索引 题目描述&#xff1a; 给定一个长度为 n 的整数 山脉 数组 arr &#xff0c;其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 示例 1&#xff1a; 输入&#xf…

playground.tensorflow神经网络可视化工具

playground.tensorflow 是一个可视化工具&#xff0c;用于帮助用户理解深度学习和神经网络的基本原理。它通过交互式界面使用户能够构建、训练和可视化简单的神经网络模型。以下是一些主要的数学模型和公式原理&#xff0c;它们在这个平台中被应用&#xff1a; 1. 线性模型 线…

LSM-TREE和SSTable

一、什么是LSM-TREE LSM Tree 是一种高效的写优化数据结构&#xff0c;专门用于处理大量写入操作 在一些写多读少的场景&#xff0c;为了加快写磁盘的速度&#xff0c;提出使用日志文件追加顺序写&#xff0c;加快写的速度&#xff0c;减少随机读写。但是日志文件只能遍历查询…

SDL线程

文章目录 SDL线程相关 SDL线程相关 SDL线程创建&#xff1a;SDL_CreateThreadSDL线程等待: SDL_WaitThreadSDL互斥锁 :SDL_CreateMutex/SDL_DestoryMutexSDL锁定互斥: SDL_LockMutex/SDL_UnlockMutexSDL条件变量:SDL_CreateCond/SDL_DestoryCondSDL条件变量 等待通知: SDL_Con…

DevExpress JS ASP.NET Core v24.1亮点 - 支持DateOnly/TimeOnly类型

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

【HarmonyOS】键盘遮挡输入框UI布局处理

【HarmonyOS】键盘遮挡输入框UI布局处理 问题背景&#xff1a; 在开发输入框UI时&#xff0c;特别是登录页面的密码输入框靠下&#xff0c;或者是评论底部的pop弹框。 当我们输入框获得焦点后&#xff0c;键盘自下而上显示&#xff0c;一般情况下会遮挡住我们的UI布局。 导致…