halcon entropy_image 熵图像的计算 (by shany shang)

本文探讨了图像熵的概念及其在图像清晰度评估中的应用,进一步讲解了二维熵如何反映图像灰度分布的空间特征。此外,还介绍了如何使用交叉熵进行图像分割,包括计算前景和背景灰度均值,设定阈值以最小化分割前后图像的交叉熵,实现精准分割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

entropy_image(Image : ImageEntropy : WidthHeight : )

功能:计算输入图像(Image)的(Width*Height )大小的区域的熵输出图像(ImageEntropy

图像的一维熵

H=-\sum_{i= 0}^{255}P_{_i}logP_{i}

    其中Pi表示灰度值为i的像素所占的比例,也可认为是概率。

    图像的一维熵可以表示图像灰度的聚集特征,熵越大,灰度值分布越均匀。却不能表示图像灰度分布的空间特征。

    熵指的是体系的混乱的程度,对焦良好的图像的熵大于没有清晰对焦的图像,因此可以用熵作为一种对焦评价标准。熵越大,

图像越清晰。

此算子即是计算区域内的一维熵,后再将熵值乘以32赋值给区域中心像素。

延申:图像的二维熵:

选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示领域灰度均值(0<=j<=255),即,可反应某像素位置上的灰度值与其周围像素的灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度。

H=-\sum_{i= 0}^{255}\sum_{j=0}^{255}P_{_ij}logP_{ij}

 

延申:计算交叉熵用于图像分割

 第一步:在(Width*Height )大小的区域进行背景分割,计算前景和背景的灰度均值

 第二步:设置阈值(从0到255遍历),找出使二值化分割前后图像的交叉熵最小的分割阈值

           

               交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。假设               概率分布p为期望输出,概率分布q为实际输出,H(p,q)为交叉熵,则:

 

             这个公式如何表征距离呢,举个例子: 
             假设N=3,期望输出为p=(1,0,0),实际输出q1=(0.5,0.2,0.3),q2=(0.8,0.1,0.1),那么:

              很显然,q2与p更为接近,它的交叉熵也更小

 第三步:将大于分割阈值的灰度值设置为255,小于分割阈值的灰度值设置为0

### Halcon 中 `grab_image` 函数的使用教程 #### 1. 初始化采集设备 为了能够成功调用 `grab_image` 获取图像,在此之前必须先初始化采集设备。这通常通过 `open_framegrabber` 和 `grab_image_start` 来完成。 ```cpp // 打开帧接收器并设置参数 open_framegrabber (FrameGrabberType, LineScanAlign, AOIWidth, AOILeft, AOITop, Width, Height, PixelType, NumImagesBuffer, GenICamFile, FrameGrabberParamName, FrameGrabberParamValue, AcqHandle) ``` 接着启动图像抓取过程: ```cpp grab_image_start(AcqHandle) [^4] ``` #### 2. 抓取单张图片 当准备好之后,可以利用 `grab_image` 或者异步版本 `grab_image_async` 进行实际的图像捕获操作。对于同步方式而言,程序会在此处等待直到获得一张完整的图像;而异步模式则允许其他任务并发执行[^2]。 ```cpp // 同步获取图像 grab_image(Image, AcqHandle) // 异步获取图像 grab_image_async(Image, AcqHandle, MaxDelay) ``` 这里需要注意的是,如果选择了异步的方式,则还需要考虑如何处理可能发生的超时情况以及后续的结果读取逻辑。 #### 3. 关闭资源释放 无论采用哪种方式进行图像捕捉,在结束工作前都应当记得关闭相应的硬件连接以防止资源泄露等问题的发生。 ```cpp close_framegrabber(AcqHandle)[^1] ``` #### 4. 图像属性查询 一旦获得了所需的图像对象后,可以通过一系列辅助性的 HALCON 操作符来了解有关该图的各种特性信息,比如尺寸、颜色空间类型等。 ```cpp get_image_size(Image, Width, Height) get_image_type(Image, Type) ``` 此外还有专门用于多通道色彩模型的数据指针访问接口可供选择。 ```cpp get_image_pointer3(Image, Pointer, XDim, YDim, BytePerPix) ``` 以上就是围绕着 `grab_image` 的基本流程介绍及其周边功能概述[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值