搜索
 找回密码
 注册
查看: 12726|回复: 296
打印 上一主题 下一主题

【技术分享】再来一帖,你们想要的自动数种子神器,满意么?

[复制链接]
跳转到指定楼层
1#
发表于 2017-5-25 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
懒人推动社会的发展
之前一帖嫌弃自己一个接一个点,数种子太慢的朋友们
现在就给你们一个自动数种子的工具


首先,先介绍原理。
1、将彩色图转换为灰度图像,再将灰度图像转换为计算机便于识别的二值图(即黑白图)。

转换前


转换后


2、然后经过一顿我也看不懂的图像处理骚操作,大致是填充小洞、分割、形状规则化之类的。

得到下面的结果


3、最后,计算中间每个连续域的总数量。


计算的结果为50粒,因为2粒种子挤在一起,计算机不好识别,存在误差,下面是误差对比:




真实结果为52粒,比计算结果多2粒,所以,把种子摊开是关键。


下面是计算程序:程序用Matlab运行,复制进去按下回车就行了。

RGB = imread('E:\588.jpg');%这个是读取图片的语句,单引号里面是图片的存放位置,建议放在纯英文路径上
I = rgb2gray(RGB);
se = strel('disk',5,0);
I2 = imbothat(I,se);  % 底帽变换,去除不均匀背景
figure,imshow(I2)

I3 = imadjust(I2);   % 这一步可有可无,调节灰度对比度

% 灰度图像二值化,全局阈值分割最大化类间方差
level = graythresh(I3);
BW = im2bw(I3,level);
figure,imshow(BW)

% 孔洞填充和形态学开运算
BW1 = imfill(BW,'holes');
figure,imshow(BW1)
se1 = strel('square',5);
BW2 = imopen(BW1,se1);
figure,imshow(BW2)

% 形态学腐蚀运算,部分目标物有粘连现象,去除粘连
se2 = strel('disk',1,0);
BW3 = imerode(BW2,se2);
figure,imshow(BW3)

% 形态学开运算,去除影响计数的干扰颗粒
se3 = strel('disk',1,0);
BW4 = imopen(BW3,se3);
figure,imshow(BW4)

[L,N] = bwlabel(BW4);  % N即为目标个数

N



最后的最后,感谢来自matlab论坛 tdcq127朋友的程序,个人做了一点点调整
原帖地址:http://www.ilovematlab.cn/thread-272277-1-1.html

若存在一些未考虑全面的地方,请各位花友指正,并欢迎相关专业的专业人士改进出更适合数种子的程序。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3威望 +2 花币 +2 收起 理由
飞天达达 + 1 很给力!
守望 + 2 技术型啊
从水生 + 1 请再开发一个把生石花种子完全分离摊开的软.

查看全部评分

2#
发表于 2017-5-25 19:39 来自手机 | 只看该作者
仿佛看到了同道中人
3#
发表于 2017-5-25 19:42 | 只看该作者
技术流。省时省力。
4#
发表于 2017-5-25 19:46 | 只看该作者
难道楼主是传说中的程序猿?

5#
发表于 2017-5-25 19:48 | 只看该作者
哇哦,仿佛看到了同道中人
6#
发表于 2017-5-25 19:50 | 只看该作者
火前留名
7#
发表于 2017-5-25 19:54 | 只看该作者
可以多腐蚀一点
8#
发表于 2017-5-25 19:57 | 只看该作者
火钳刘明
9#
发表于 2017-5-25 19:58 | 只看该作者
很厉害的样子
10#
发表于 2017-5-25 19:59 | 只看该作者
就服你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|仙珍圜 (鲁ICP备2021037596号)

GMT+8, 2024-11-1 15:28 , Processed in 0.055000 second(s), 9 queries .

© 2008-2013 XianZhenYuan.cn , Some rights reserved.

Powered by Discuz! X2.5 © 2001-2012 Comsenz Inc.

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