halcon系列基础之Scale_image_range

文章介绍了Scale_image_range算子在图像处理中的应用,包括将灰度值映射到特定范围的两种情况,并提供了测试代码示例。强调在处理过程中避免使用循环,推荐使用元组来提高效率。

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

一、算子介绍

Scale_image_range(

Image //传入原始图像
ImageScle //灰度转换后的图像
Min    需要转换的最小值
Max    需要转换的最大值

)

算子使用的两种情况:

1.scale_image_range(Image,  imagesacle, 40 ,  100)

将图像当中40-100的灰度元素映射到0-255,小于40为0或者大于100的灰度值为255

2.scale_image_range(Image,  imagesacle, [40 ,10],  [100,200])

将图像中40-100的灰度值映射到10-200,同样小于40和大于200的会被设置为0和255

二、测试代码

gen_image_const (Image, 'byte', 512, 512)
gen_image_proto (Image, ImageCleared, 100)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (ImageCleared)
get_image_size (ImageCleared, Width, Height)
get_domain (ImageCleared, Domain)
get_region_points (Domain, Rows, Columns)
gray:=(Columns/30+5)*10
set_grayval (ImageCleared, Rows, Columns, gray)
*第一种用法
scale_image_range (ImageCleared, ImageScaled1, 100, 150)
*第二种用法
scale_image_range (ImageCleared, ImageScaled, [50,0], [210,160])

(关键点:图像灰度值赋值的过程最好不要用循环,太慢了,根据元组计算出每个元素的灰度值在赋值给图像速度快,在图像处理中减少循环的使用,多用元组)

三、测试结果

第一种情况:

第二种情况:

 通过Scale_image_range算子将图像50-210的灰度值映射在0-160的范围内。

<think>我们正在分析Halcon代码段中的两个函数:min_max_gray和scale_image。根据引用[1]:scale_image_max(Image :ImageScaleMax :: )的作用是缩放图像的灰度值到最大范围(0-255),通常用于增强图像的对比度。但是,用户问题中提到的函数是scale_image(注意没有_max后缀),而引用中给出的是scale_image_max。因此,我们需要区分:- scale_image_max:将图像灰度值线性拉伸到0-255(8位图像的最大范围)-scale_image:这是一个更通用的缩放函数,可以按给定的乘法和加法因子进行灰度值变换,公式为:g'= g* Mult+ Add然而,用户问题中明确提到了两个函数:min_max_gray和scale_image。我们需要分别解释:1. min_max_gray(Regions,Image :: Percent:Min,Max,Range)功能:计算图像在指定区域内的灰度最小值、最大值和范围(最大值-最小值)。Percent参数用于排除灰度直方图两端的离群点(百分比),从而得到更稳健的极值。例如,Percent=2表示忽略最小灰度值一侧的2%像素和最大灰度值一侧的2%像素,然后计算剩余像素的最小和最大灰度值。2.scale_image(Image: ImageScaled: Mult, Add: )功能:对图像的灰度值进行线性变换。每个像素的灰度值按照公式:新灰度值=原灰度值 *Mult +Add进行变换。通常,这两个函数组合使用可以实现图像对比度的自适应增强。具体步骤:-首先,用min_max_gray获取图像中某个区域的灰度范围(Min,Max)。-然后,根据这个范围计算缩放参数(Mult和Add),使得原图像的灰度范围[Min, Max]映射到目标范围(通常是0-255)。具体计算公式:Mult=255 /(Max- Min)Add= -Mult *Min(这样变换后,Min对应0,Max对应255)-最后,使用scale_image进行变换。但是,Halcon提供了一个直接完成这个过程的算子:scale_image_max(如引用[1]所示),它内部自动计算最小最大值并线性拉伸到0-255。因此,用户提供的代码段可能是手动实现了类似scale_image_max的功能,但使用min_max_gray和scale_image组合的方式,这样可以更灵活地控制(例如,使用Percent参数排除离群点)。整体功能:该代码段通过min_max_gray获取图像的灰度范围(排除离群点),然后使用scale_image将灰度值线性拉伸到0-255,从而增强图像的对比度。注意:在Halcon中,scale_image_max内部也是通过计算最小最大值然后进行线性变换实现的,但用户代码中使用了两个独立的算子,可能是为了使用Percent参数。示例代码(假设):min_max_gray(Region,Image,2, Min, Max, Range)//使用2%的排除比例Mult :=255/(Max-Min)Add:= -Mult*Minscale_image(Image,ImageScaled,Mult,Add)这样,ImageScaled就是对比度增强后的图像。引用说明:引用[1]提到了scale_image_max,但用户代码中使用的是scale_image(没有_max),所以我们没有直接引用,但解释了区别。由于用户问题中没有直接给出代码,我们根据函数名和常见用法进行解释。相关问题:1.min_max_gray中的Percent参数具体是如何工作的?2.除了线性拉伸,还有哪些图像增强方法?3.如何选择min_max_gray中的区域(Region)参数?4. scale_image算子能否用于彩色图像?注意:如果用户实际代码中使用了scale_image_max,那么引用[1]直接相关。但问题中明确写了scale_image,所以我们按此解释。</think>### Halcon代码解释:`min_max_gray` 和 `scale_image` 函数 #### 1. **`min_max_gray` 函数** **作用**:计算图像在指定区域内的灰度值统计特征[^1]。 - **输入**:图像区域(Region)和图像(Image) - **输出**: - `Min`:区域内最小灰度值 - `Max`:区域内最大灰度值 - `Range`:灰度范围(Max - Min) - **关键参数**:`Percent` - 用于排除灰度直方图两端的离群点(如设置`Percent=2`表示忽略最低2%和最高2%的像素) - **应用场景**:常用于图像预处理阶段,获取灰度分布特征以指导后续增强操作。 #### 2. **`scale_image` 函数** **作用**:对图像灰度值进行线性变换[^1]。 - **计算公式**: $$g_{\text{new}} = g_{\text{original}} \times \text{Mult} + \text{Add}$$ 其中: - `Mult`:缩放因子(乘法系数) - `Add`:偏移量(加法系数) - **典型用途**: - 对比度增强(如将灰度范围拉伸到0-255) - 亮度调整(通过`Add`参数) - **示例**: ```halcon scale_image(Image, ImageScaled, Mult, Add) ``` #### 3. **组合功能分析** 两函数联合使用的典型流程: 1. **灰度统计**: `min_max_gray` 获取目标区域的灰度范围 `[Min, Max]`。 2. **参数计算**: 根据目标灰度范围(如0-255)计算变换参数: $$ \text{Mult} = \frac{255}{\text{Max} - \text{Min}}, \quad \text{Add} = -\text{Min} \times \text{Mult} $$ 3. **灰度变换**: `scale_image` 应用线性变换,将原图灰度映射到新范围。 **整体目的**:实现**自适应对比度增强**,使图像细节更清晰,尤其适用于光照不均或低对比度场景[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值