robanlove
技术员
技术员
  • 最后登录2016-02-15
  • 发帖数4
  • 金币128枚
  • 贡献勋章0枚
阅读:6367回复:40

怎么把鸡蛋裂纹检测出来?

楼主#
更多 发布于:2014-07-28 14:45
怎么把图示鸡蛋裂纹检测出来?请高手指点。。。
喜欢14

最新打赏:0人

macao216
高级工程师
高级工程师
  • 最后登录2016-07-13
  • 发帖数218
  • 金币1397枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
沙发#
发布于:2014-07-29 08:48
标记下,这个检测运用很特别。
思勤199035
专家
专家
  • 最后登录2017-05-10
  • 发帖数308
  • 金币2430枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 原创写手
板凳#
发布于:2014-07-29 15:29
我觉得可不可以提取轮廓的时候,除了边界的圆的轮廓以外还会有中间的其他的文理的啊,就是判断出来有裂纹了啊。当然图形要进行预处理的。
我年轻,所以我要更加努力的往前奔跑。
XBadGuyX
高级工程师
高级工程师
  • 最后登录2015-10-19
  • 发帖数98
  • 金币1926枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2014-07-29 23:16
如果你是说检测出有没裂纹,这是比较简单的事,但是如果你要的是把裂纹的纹样也提取出来,那就比较难。


read_image (Image, 'E:/图像处理/halconPro/鸡蛋裂纹检测/9_1645_c8641eaa8d19cdb.jpg')
threshold (Image, Regions, 54, 255)
rgb1_to_gray (Image, GrayImage)
reduce_domain (GrayImage, Regions, ImageReduced)
scale_image_max (ImageReduced, ImageScaleMax)
highpass_image (ImageScaleMax, Highpass, 29, 21)
mean_image (ImageScaleMax, ImageMean, 9, 9)
dyn_threshold (ImageScaleMax, ImageMean, RegionDynThresh, 5, 'not_equal')
closing_circle (RegionDynThresh, RegionClosing, 1)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 50, 99999)
效果如下:
有问题的话直接发邮件给我。512112559@qq.com
zh237553752
工程师
工程师
  • 最后登录2018-06-02
  • 发帖数93
  • 金币787枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
4楼#
发布于:2014-07-30 10:00
   read_image (Image, 'C:/Users/Desktop/9_1645_c8641eaa8d19cdb.jpg')
    rgb1_to_gray (Image, Image)
    get_image_size(Image, Width, Height)
    
Sigma1 := 10.0
Sigma2 := 3.0
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height)
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height)
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)

    rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)
    convol_fft (ImageFFT, Filter, ImageConvol)
    rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)
    gray_range_rect (ImageFiltered, ImageResult, 10, 10)
    min_max_gray (ImageResult, ImageResult, 0, Min, Max, Range)
    threshold (ImageResult, RegionDynThresh,0, max([5.55,Max*0.5]))
    connection (RegionDynThresh, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500, 99999)
    reduce_domain(ImageResult, SelectedRegions, ImageReduced)

    scale_image_max(ImageReduced, ImageScaleMax)
    threshold(ImageScaleMax, Region, 35, 255)
    connection (Region, ConnectedRegions1)
    select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and',1000, 15000)
    closing_circle(SelectedRegions1, RegionClosing,3)
    opening_circle(RegionClosing, RegionOpening, 2)
    fill_up(RegionOpening, RegionFillUp)
      
    dev_display(Image)
    dev_set_color('blue')
    dev_display(SelectedRegions)
    dev_set_color('red')
    dev_display(RegionFillUp)
 

图片:1.jpg


 
方法不怎么严谨,实际应用中要求抓的准确会有误抓,抓的模糊一些可以减少误抓。
成功,需要持之以恒的失败。
aoixiang123
工程师
工程师
  • 最后登录2017-11-29
  • 发帖数50
  • 金币1136枚
  • 贡献勋章0枚
  • 社区居民
5楼#
发布于:2014-07-30 10:31
哪个大神, 把裂纹的纹样也提取出来!
思勤199035
专家
专家
  • 最后登录2017-05-10
  • 发帖数308
  • 金币2430枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 原创写手
6楼#
发布于:2014-08-04 20:56
zh237553752:read_image (Image, 'C:/Users/Desktop/9_1645_c8641eaa8d19cdb.jpg')
    rgb1_to_gray (Image, Image)
    get_image_size(I...
回到原帖
赞一个,很好啊。给力的大神都得多些才好啊
我年轻,所以我要更加努力的往前奔跑。
yehufeifei
助理工程师
助理工程师
  • 最后登录2017-12-07
  • 发帖数83
  • 金币445枚
  • 贡献勋章0枚
  • 社区居民
7楼#
发布于:2014-08-10 07:29
值得借鉴,MARK
楼上的大神很给力啊
fujilove
技术员
技术员
  • 最后登录2015-11-30
  • 发帖数28
  • 金币133枚
  • 贡献勋章0枚
  • 社区居民
8楼#
发布于:2014-08-11 12:52
果然大神,学习了!




恩,努力赚钱读书!
410524814
工程师
工程师
  • 最后登录2018-04-10
  • 发帖数114
  • 金币687枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
9楼#
发布于:2014-08-11 16:53
思勤199035:我觉得可不可以提取轮廓的时候,除了边界的圆的轮廓以外还会有中间的其他的文理的啊,就是判断出来有裂纹了啊。当然图形要进行预处理的。回到原帖
199035这是生日吗?    如果是,那就跟我同年同月同日呀!


粗略的做了一下,不知道合不合适?read_image (Image, 'C:/Users/ASUS/Desktop/1.png')
dev_close_window()
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)
rgb1_to_gray(Image, GrayImage)
threshold (GrayImage, Regions, 56, 255)
reduce_domain(Image,Regions, ImageReduced)
decompose3(ImageReduced, Image1, Image2, Image3)
scale_image_max(Image3,ImageScaleMax)
edges_sub_pix(ImageScaleMax, Edges, 'canny', 1, 20, 40)
410524814
工程师
工程师
  • 最后登录2018-04-10
  • 发帖数114
  • 金币687枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2014-08-11 17:05
zh237553752:read_image (Image, 'C:/Users/Desktop/9_1645_c8641eaa8d19cdb.jpg')
    rgb1_to_gray (Image, Image)
    get_image_size(I...
回到原帖
read_image (Image, 'C:/Users/ASUS/Desktop/1.png')
 
    rgb1_to_gray (Image, Image)
    get_image_size(Image, Width, Height)
    
Sigma1 := 10.0
Sigma2 := 3.0
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height)
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height)
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)

    rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)
    convol_fft (ImageFFT, Filter, ImageConvol)
    rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)
    gray_range_rect (ImageFiltered, ImageResult, 10, 10)
    min_max_gray (ImageResult, ImageResult, 0, Min, Max, Range)
    threshold (ImageResult, RegionDynThresh,0, max([5.55,Max*0.5]))
    connection (RegionDynThresh, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500, 99999)
    reduce_domain(ImageResult, SelectedRegions, ImageReduced)

    scale_image_max(ImageReduced, ImageScaleMax)
    threshold(ImageScaleMax, Region, 35, 255)
    connection (Region, ConnectedRegions1)
    select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and',1000, 15000)
    closing_circle(SelectedRegions1, RegionClosing,3)
    opening_circle(RegionClosing, RegionOpening, 2)
    fill_up(RegionOpening, RegionFillUp)
      
    dev_display(Image)
    dev_set_color('blue')
    dev_display(SelectedRegions)
    dev_set_color('red')
    dev_display(RegionFillUp)

我粘过来,可得不到您的效果!
zh237553752
工程师
工程师
  • 最后登录2018-06-02
  • 发帖数93
  • 金币787枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
11楼#
发布于:2014-08-11 17:38
410524814:read_image (Image, 'C:/Users/ASUS/Desktop/1.png')
 
    rgb1_to_gray (Image, Image)
    get_image_size(Image, Width,...
回到原帖
源代码一行都没变。唯一需要稍微设置一下的就是,填充模式为margin。

图片:无标题.jpg

成功,需要持之以恒的失败。
410524814
工程师
工程师
  • 最后登录2018-04-10
  • 发帖数114
  • 金币687枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
12楼#
发布于:2014-08-11 17:53
谢谢!   我试了还是不行。
zh237553752
工程师
工程师
  • 最后登录2018-06-02
  • 发帖数93
  • 金币787枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
13楼#
发布于:2014-08-12 09:00
410524814:谢谢!   我试了还是不行。回到原帖
确认下到哪一步region为空。
成功,需要持之以恒的失败。
410524814
工程师
工程师
  • 最后登录2018-04-10
  • 发帖数114
  • 金币687枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
14楼#
发布于:2014-08-12 09:04
zh237553752:确认下到哪一步region为空。回到原帖
嗯   好!谢谢!!!
上一页
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服