当前位置: 首页 > news >正文

halcon处理灰度能量图

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

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

* 读取灰度图像
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 1select_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'elseClass := '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 1select_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'elseClass := '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)endforstop()

http://www.dtcms.com/a/292436.html

相关文章:

  • Android FFMPEG-播放器画面适配
  • 深入理解程序链接机制:静态链接、ELF加载与动态库实现原理
  • 三步构建智能办公体系
  • 330米地标背后的“智慧神经” —— 越秀国际金融汇电力系统案例解析
  • spring boot 集成netty,及其一些基本概念
  • 黑马点评练习题-给店铺类型查询业务添加缓存(String和List实现)
  • android模拟器手机打开本地网页
  • 科技向善,银发向暖:智慧养老与经济共筑适老未来
  • 如何给手机充电才不伤电池?
  • 未来趋势:LeafletJS 与 Web3/AI 的融合
  • ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用
  • STM32项目分享:智能洗碗机
  • Java并发编程:JUC核心组件全解析
  • 牛客NC16625 [NOIP2009]分数线划定(排序)
  • 矿用支架电液控配件3针3孔钢丝编织橡胶护套连接器
  • 基于深度学习的语音情感识别系统的设计与实现【BiLSTM、多层感知神经网络、Emotion2Vec、与CustomFeature】
  • 对随机生成的html文件做标签简析
  • RPA软件机器人如何提高工作效率?
  • python 中什么是作用域(Scope)?为什么函数内部的变量在外部无法访问?
  • 【华为机试】547. 省份数量
  • How script location, CWD, and relative imports interact
  • TIM定时中断
  • 操作系统:系统调用(System Calls)
  • 风险识别清单:构建动态化的风险管理体系
  • 从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记
  • UE5 UI 水平框
  • GoLand 部署第一个项目
  • 智慧制造合同解决方案
  • 外网访问内部私有局域网方案,解决运营商只分配内网IP不给公网IP问题
  • 【Docker】Docker的初步认识以及Ubuntu下的Docker环境安装、配置