Halcon 灰度投影及其应用

算子介绍:
一、gray_projections算子
①gray_projections(Region, Image, Mode,HorProjection, VertProjection)
Region:待处理区域
Image:待投影的灰度图
Mode:计算投影的方式,有’simple’、 ‘rectangle’,‘simple’
HorProjection:水平方向投影
VertProjection:竖直方向投影

②功能介绍
计算水平和垂直灰度值投影。

二、create_funct_1d_array算子
①create_funct_1d_array( YValues ,Function)
YValues :函数的x点的值
Function:函数值
②功能介绍
根据y值序列创建函数。

三、smooth_funct_1d_gauss算子
①smooth_funct_1d_gauss( Function, Sigma , SmoothedFunction)
Function:待平滑的函数
sigma:平滑因子
SmoothedFunction:平滑后的函数

②功能介绍
对原函数进行高斯平滑

四、tuple_max算子
①tuple_max(tuple,max)
tuple:元组
max:元组中的最大值

Tip:灰度投影可理解为记录每行、列的灰度平均值的数组,不同mode算法不同。将灰度投影所得到的每行(列)灰度值,作为点的x (y)坐标,生成一组点区域。从而将灰度投影获得的结果可视化,后续可直接对生成的区域进行处理。由于待检测的线缺陷列存在灰度突变,因此,根据求得的灰度投影值平滑出图像理论上的灰度分布函数,求取各行(列)灰度理论值与实际值的差值,可以获取灰度突变处在图像上的索引。

五、代码

*读取图像
read_image(Image,'img.png')
*截取图像
crop_part(Image,Region,10,10,90,90)
*灰度投影
gray_projections(Region,Image,'simple',HorProjection,VertProjection)
*创建竖直方向的一维函数
create_funct_1d_array(VertProjection,Function)
*积分曲线平滑
smooth_funct_1d_gauss(Function,2,SmoothedFunction)
*把平滑后结果中的最大值取出来,注意这里需要从3开始取,这个function输出值的前3位不是我们的数据
filterData1:=SmoothedFunction[3:|SmoothedFunction|-1]
*取最大值
tuple_max(filterData1,filterDataMax)

原图
在这里插入图片描述
截图
在这里插入图片描述
输出结果
在这里插入图片描述

### IntelliJ IDEA JavaFX 开发配置教程 #### 设置项目结构 为了使JavaFX应用程序能够在IntelliJ IDEA中顺利运行,设置项目的结构至关重要。当创建一个新的JavaFX项目时,应该按照官方文档指导来操作[^2]。这不仅适用于特定版本的IDEA,也涵盖了不同版本下的正确配置方法。 #### 添加必要的库文件 编译含有JavaFX组件的应用程序需引入`javafx.controls`和`javafx.fxml`这两个核心模块作为依赖项。可以通过指定本地安装的JavaFX SDK中的`lib`目录路径实现这一点;例如,在Windows环境下可能是这样的位置:`C:\mrathena\develop\javafx-sdk-21.0.1\lib`[^3]。确保所选路径指向实际存在的`.jar`文件集合。 #### 配置VM选项 为了让IntelliJ能够识别并加载这些外部库,还需要调整虚拟机参数(VM Options)。具体来说就是在启动配置里加入如下指令: ```bash --module-path "path/to/javafx/lib" --add-modules javafx.controls,javafx.fxml ``` 这里的`path/to/javafx/lib`应当替换为你自己的JavaFX库的实际存储地址[^1]。 #### 示例代码片段展示 下面给出一段简单的JavaFX Hello World例子用于测试环境是否搭建成功: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.stage.Stage; public class HelloWorld extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("Hello, world!"); Scene scene = new Scene(label, 300, 250); primaryStage.setTitle("My First JavaFX App"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 这段代码展示了如何构建最基础的图形界面窗口,并显示一条消息给用户[^4]。 #### 解决常见问题的方法 如果遇到任何困难或错误提示,建议首先查阅官方指南以及社区论坛上的讨论帖。很多时候其他开发者已经遇到了相同的问题并且找到了解决方案。此外,保持软件更新至最新稳定版也有助于减少兼容性方面带来的麻烦[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘·月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值