设置首页收藏本站
开启左侧

Otsu法和二值化有什么区别吗,可以直接使用二值化吗,更加简单

[复制链接]
qimiao 发表于 2025-8-25 10:42:38 | 显示全部楼层 |阅读模式
目前在看otsu,有疑惑

博客园找到的解释

博客园找到的解释
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
大凡光学,专注标定板提供
 楼主| qimiao 发表于 2025-8-25 11:52:53 | 显示全部楼层
看的是这段----铣刀刀口破损缺陷检测----

*****************************************************************************第一 图像预处理********************************************************
  1. *读取一张图像
  2. read_image(Image,'1.bmp')

  3. *对图像的灰度值在0到255范围内拉伸
  4. scale_image_max (Image, ImageScaleMax)

  5. *反选像素的位
  6. bit_not (ImageScaleMax, ImageNot)

  7. *生成一个椭圆元素
  8. gen_disc_se (SE, 'byte', 45,45, 0)

  9. *黑帽运算,分割比临近暗的区域
  10. gray_bothat (ImageNot, SE, ImageBotHat)

  11. *生成ROI1
  12. gen_rectangle1 (ROI_0, 574.119, 268.867, 644.104, 337.728)
  13. *生成ROI2
  14. gen_rectangle1 (TMP_Region, 87.9029, 783.297, 179.989, 809.627)
  15. *合并两个ROI
  16. union2 (ROI_0, TMP_Region, ROI_0)
  17. *生成ROI3
  18. gen_rectangle1 (TMP_Region, 743.558, 937.222, 839.327, 997.981)
  19. *合并ROI
  20. union2 (ROI_0, TMP_Region, ROI_0)
  21. *将合并ROI区域的图像剪切
  22. reduce_domain (ImageBotHat, ROI_0, TemplateImage)

  23. *设置区域填充方式
  24. dev_set_draw ('margin')
  25. *获取图像的数据,类型,高度,宽度
  26. get_image_pointer1 (TemplateImage, Pointer, Type, Width, Height)
  27. *显示图像
  28. dev_display (TemplateImage)
复制代码


*****************************************************************************第二 自动寻找最佳阈值********************************************************
  1. * 最大方差初始化为0
  2. MaxVariance := 0.0
  3. * 最佳分割灰度阈值从1遍历到255,初始阈值的选取可以取图像平均灰度值
  4. for ImgThreshold := 1 to 255 by 1
  5.     dev_display (TemplateImage)
  6.     * 前景区域分割
  7.     threshold (TemplateImage, Region, ImgThreshold, 255)
  8.     * 获得前景区域像素个数
  9.     area_center (Region, Area, Row, Column)
  10.     * 获得前景区域均值和方差
  11.     intensity (Region,TemplateImage, Mean, Deviation)
  12.    
  13.     *对前景区域进行反选
  14.     complement (Region, RegionComplement)
  15.     *获取背景区域的面积和坐标
  16.     area_center (RegionComplement, Area1, Row1, Column1)
  17.     *获得背景区域像素个数、均值和方差
  18.     intensity (RegionComplement,TemplateImage, Mean1, Deviation1)
  19.     * 计算类间方差
  20.     Otsu := Area*1.0/[Width*Height]*Area1*1.0/[Width*Height]*pow(Mean-Mean1,2)
  21.     * 获取最大类间方差最佳阈值
  22.     if (Otsu>MaxVariance)
  23.         MaxVariance := Otsu
  24.         BestThreshold := ImgThreshold
  25.     endif
  26. endfor
  27. dev_display (TemplateImage)
  28. dev_set_color ('green')
  29. dev_set_draw ('fill')
复制代码


*****************************************************************************第三 分割缺陷目标********************************************************
  1. * 阈值操作,选取高亮目标,即为缺陷
  2. threshold (TemplateImage, Region1, BestThreshold, 255)
  3. * 对缺陷区域进行连通处理
  4. connection(Region1, ConnectedRegions)
  5. * 根据面积过滤出大的缺陷
  6. select_shape (ConnectedRegions, SelectedRegions1, 'area', 'and', 261.07, 1971)
  7. * 填充缺陷内部间隙
  8. fill_up(SelectedRegions1, RegionFillUp)
  9. * 显示图像
  10. dev_display(Image)
  11. * 显示缺陷区域
  12. dev_display(RegionFillUp)

  13. stop()
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
lanmp 发表于 2025-8-25 15:22:53 | 显示全部楼层
自动找合适的threshold
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
UKimiF 发表于 2025-8-25 19:51:33 | 显示全部楼层
OSTU即大津法,常用于自动阈值分割,相对于固定阈值的优势就是,成像不是很稳定的情况下提取前景或背景区域的适应性更强,但是它只能用于提取前景或者背景区域,不能提取非0~非255间的灰度范围,而固定阈值则对这种不稳定的情况适应性差,但是它的提取方式更自由。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
m7story 发表于 2025-8-28 21:22:31 | 显示全部楼层
学习了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
347784474 发表于 2025-9-18 16:15:32 | 显示全部楼层
学习了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表