halcon处理灰度能量图

使用halcon处理射线图像,对高能区域和低能区域分割处理感兴趣区域,筛选区域下的灰度值区间范围。

图像灰度值为16位深度图。

python 复制代码
* 读取灰度图像
read_image (Image, '/123.tif')

*

* 获取图像尺寸
get_image_size (Image, Width, Height)

* 分割图像为左右两部分(高能量和低能量区域)
gen_rectangle1 (LeftROI, 0, 0, Height-1, Width/2-1)
gen_rectangle1 (RightROI, 0, Width/2, Height-1, Width-1)

* 提取左右区域图像
reduce_domain (Image, LeftROI, LeftImage)
reduce_domain (Image, RightROI, RightImage)

* 预处理 - 增强对比度
emphasize (LeftImage, LeftEnhanced, 7, 7, 1.0)
emphasize (RightImage, RightEnhanced, 7, 7, 1.0)

* 中值滤波去噪
median_image (LeftEnhanced, LeftFiltered, 'circle', 2, 'mirrored')
median_image (RightEnhanced, RightFiltered, 'circle', 2, 'mirrored')

* 阈值分割提取矿石区域
threshold (LeftFiltered, LeftRegions, 50, 43055)
threshold (RightFiltered, RightRegions, 50, 43055)

* 形态学处理去除小噪点
connection (LeftRegions, LeftConnected)
connection (RightRegions, RightConnected)
select_shape (LeftConnected, LeftOres, 'area', 'and', 500, 9999999)
select_shape (RightConnected, RightOres, 'area', 'and', 500, 9999999)

* 计算每个矿石区域的灰度特征
* 高能量矿石区域分析
count_obj (LeftOres, NumLeftOres)
for i := 1 to NumLeftOres by 1
    select_obj (LeftOres, SingleOre1, i)
    
    * 计算区域的平均灰度值
    intensity (SingleOre1, LeftFiltered, MeanIntensity1, Deviation1)
     min_max_gray (SingleOre1, LeftFiltered, 0, Min1, Max1, Range1)
    * 根据灰度值分类
    if (MeanIntensity1 > 180)
        Class := 'High-grade ore'
        Color := 'blue'
    elseif (MeanIntensity1 > 120)
        Class := 'Medium-grade ore'
        Color := 'yellow'
    else
        Class := 'Low-grade ore'
        Color := 'red'
    endif
    
    * 获取区域边界框
    smallest_rectangle1 (SingleOre1, Row1, Col1, Row2, Col2)
 
   
       gen_rectangle1 (Rectangle1, Row1, Col1, Row2, Col2)
    * 显示结果
    dev_set_color (Color)
    dev_display (SingleOre1)
    
   
endfor

* 低能量矿石区域分析
count_obj (RightOres, NumRightOres)
for j := 1 to NumRightOres by 1
    select_obj (RightOres, SingleOre2, j)
    
    * 计算区域的平均灰度值
    intensity (SingleOre2, RightFiltered, MeanIntensity2, Deviation2)
    min_max_gray (SingleOre2, RightFiltered, 0, Min2, Max2, Range2)
    * 根据灰度值分类(使用不同的阈值)
    if (MeanIntensity2 > 150)
        Class := 'High-grade ore'
        Color := 'green'
    elseif (MeanIntensity2 > 90)
        Class := 'Medium-grade ore'
        Color := 'yellow'
    else
        Class := 'Low-grade ore'
        Color := 'red'
    endif
    
    * 获取区域边界框
    smallest_rectangle1 (SingleOre2, Row1, Col1, Row2, Col2)
    gen_rectangle1 (Rectangle2, Row1, Col1, Row2, Col2)
    * 显示结果
    dev_set_color (Color)
    dev_display (SingleOre2)
   
endfor

stop()
相关推荐
小豆庄8 小时前
测试视频里的人脸车牌敏感信息自动化脱敏方案
计算机视觉·目标跟踪·ffmpeg·音视频·边缘计算·视频·敏捷流程
LUCIALEE1 天前
训练越久越差:两个无人机小样本,把 3DGS 正射 TDOM 的边界跑出来了
计算机视觉
陈嘿萌1 天前
ECCV 2026 | CausalDrive:澳门大学×小米汽车,面向自动驾驶的实时因果世界模型
图像处理·人工智能·深度学习·计算机视觉·自动驾驶·学术研究与理论基础
song150265372982 天前
小型零部件外观检测难?AI机器视觉检测设备,适配全行业小件质检
人工智能·计算机视觉·视觉检测
xsd202411182 天前
AI 智能美甲推荐系统技术全解析
人工智能·计算机视觉
原子延迟2 天前
批量压缩视频会变大?HandBrake等3款(2026)
图像处理·人工智能·计算机视觉·音视频
apple_692658852 天前
基于 Qwen-Image-2.1 的人物替换 LoRA 模型及部署工作流 人物替换的效果 吊打闭源
人工智能·计算机视觉
qq_25294131682 天前
日本道路病害检测数据集 | 道路病害 裂缝检测 坑洼识别 市政巡检9287期
人工智能·深度学习·yolo·目标检测·计算机视觉·道路检测
Qianxueban2 天前
如果卷积核大小固定,步长固定,那经过i次卷积,它一个像素的感受野是多大?
人工智能·深度学习·计算机视觉
qq_25294131682 天前
伊蚊检测数据集 | 伊蚊检测 病媒生物 公共卫生 目标检测9304期
人工智能·yolo·目标检测·计算机视觉·蚊子·尹蚊