我提一点关于实现的: 你可以使用MSPictureClip控件进行图像切割,非常方便 使用pciturebox的point来得到某一点的RGB值。通过对比两幅图片中相同ID的图片片断就可以得知该片断是否存在活动精子。然后可以到附近格子中检查是否也存在活动精子。 还有一个办法不知可行?可以把所有的图片进行叠加,然后使背景透明,这样就可以得到运动的轨迹。小技巧:如何判断两个picture是否相等 dim aa as propertybag,bb as propertybag set aa=new propertybag set bb=new propertybag aa.writeproperty("Testpicture",mypicture1) aa.writeproperty("Testpicture",mypicture2) msgbox aa.Contents=bb.Contents '如果每个像素都相等,会返回True。注意:该算法比使用picturebox的point算法速度快,但是比直接扫描位图慢btw:如果图像是黑白的而且只有白点在运动那么就更容易了。你可以通过扫描封闭区间来对精子编号(使用抽行扫描,可以节约1半的时间)。另外精子的数量有多少?如果上百个恐怕这个办法不行。本人对于算法了解甚少,以上的办法可以说都是非正规的,速度肯定会比较慢,仅供参考。
for i=1 to m 'm是最大列 for j=1 to n 'n是最大行 RA(i,j)=A1(i,j) Xor A2(i,j) '或许减也可以 next j next i 是不是也要保存若干个RA?如RA1...RAn 其中有这样的意义: for i=1 to m 'm是最大列 for j=1 to n RAn(i,j)=RAn(i,j) Xor RAn-1(i,j) next j next i 这样在RAn中就把A1和A2之间运动、A2和A3之间未动的图象滤掉,希望考虑一下。 没见过你的图象,说不好,能几个发个过来吗?许多处理方法针对性很强,这也是泛泛而谈,要做许多实验。
1 得到第一帧的图象,存入一个矩阵,如A1;
2 得到第二帧的图象,存入另一个矩阵,如A2;
3 两个矩阵元素做XOR操作,相同元素结果为0,不同则不为0;结果存入RA;
4 LOOP 第二步,取第三帧与第二帧做XOR,结果依然存入RA,到一定条件下停止;
5 把RA中不为0的元素全置为全1(二进制)并显示,也可将大于一定值的元素这么处理,处理方法就看你的经验了,结果就应该是运动轨迹了;
6 简单计算全1元素的百分比,大概就是活性把,这个我就不懂了。你要根据老板要求做。或
来个拟合处理什么的。
A1、A2...An的大小应该相同,比如统一为800X600。如果你第五步处理算法不好,这里还是小一点好。这个算法很慢,你应该能用VB做出来,然后再改。
能把你的邮件地址告诉我吗?
我对图形处理可以称做一窍不通,等我研究一番之后,
再来和你联系,好吗?
你可以使用MSPictureClip控件进行图像切割,非常方便
使用pciturebox的point来得到某一点的RGB值。通过对比两幅图片中相同ID的图片片断就可以得知该片断是否存在活动精子。然后可以到附近格子中检查是否也存在活动精子。
还有一个办法不知可行?可以把所有的图片进行叠加,然后使背景透明,这样就可以得到运动的轨迹。小技巧:如何判断两个picture是否相等
dim aa as propertybag,bb as propertybag
set aa=new propertybag
set bb=new propertybag
aa.writeproperty("Testpicture",mypicture1)
aa.writeproperty("Testpicture",mypicture2)
msgbox aa.Contents=bb.Contents '如果每个像素都相等,会返回True。注意:该算法比使用picturebox的point算法速度快,但是比直接扫描位图慢btw:如果图像是黑白的而且只有白点在运动那么就更容易了。你可以通过扫描封闭区间来对精子编号(使用抽行扫描,可以节约1半的时间)。另外精子的数量有多少?如果上百个恐怕这个办法不行。本人对于算法了解甚少,以上的办法可以说都是非正规的,速度肯定会比较慢,仅供参考。
bucher的处理方法也不错。这里要是没有你的什么专用处理算法,值得考虑。
你的问题我一直在想,很有意思,里面可能问题多多,要干一段时间,然后在慢慢优化程序。别总想一步到位,先解决有没有的问题,后解决好不好的问题。有点耐心吧!
其实我所说的精子数量可能会达到几百个,而且精子本身绝不是
点,而是不规则的几何形;同时由于是彩色图像,这更增加了图
形处理的难度。你的讲的算法是不是可以斟酌呢?TO ZHANGCC:
你的古道热肠让我非常感动,昨天你给我讲的算法思想我回去试
了一下,我发现了几个不知道是不是问题的问题:每次N与N-1祯
图像与或时取得的RA矩阵,它们之间是怎样运算呢?是相加吗?
这个问题好关键,其余的问题我们今后再讨论。
(我以为我提的问题涉及图像处理的较深入方面了,希望有心人
继续关注我们的这个话题,多多参与算法分析。)
最后要谢谢楼上两位兄弟,你们的宝贵意见让我获益菲浅,没有
你们的帮助我真的是叫做万念俱灰了,哈哈哈,希望你们能给我
更多的启发思维呀,再次感谢。
for j=1 to n 'n是最大行
RA(i,j)=A1(i,j) Xor A2(i,j) '或许减也可以
next j
next i
是不是也要保存若干个RA?如RA1...RAn
其中有这样的意义:
for i=1 to m 'm是最大列
for j=1 to n
RAn(i,j)=RAn(i,j) Xor RAn-1(i,j)
next j
next i
这样在RAn中就把A1和A2之间运动、A2和A3之间未动的图象滤掉,希望考虑一下。
没见过你的图象,说不好,能几个发个过来吗?许多处理方法针对性很强,这也是泛泛而谈,要做许多实验。
说老实话,我也没有实际的图象做试验,自己做了几个简单的图象看效果,大致
还是看得出些情况来的(事实上我已经把图象简单化成双色了,实际的彩色图象
更复杂,有可能的话,我去弄几张来——找精子图片!?哈…,我又不是医生,
也许会被当作心理畸形一类的!),你今天的算法建议我会去试验的,看了效果
再来讨论吧。TO BUCHER:
我也在考虑,识别单个精子是不是太难了?毕竟单个精子本身还会有变化的。这
将牵涉到更复杂的算法了,还是采取图片叠加的方式可能好些(位的处理也会随
着进行。),从这方面入手,我们更深入的讨论下去吧。两位在图象处理方面都有不少经验吧?以后还要多多指教了。
另:不规则的色块,怎样确定它的中心点呢?假设:
一幅背景色为白色的,中间有黑色的不规则色块的图像,怎样确定它的中心点坐标?
这里的人绝大多数是技术迷,敢在此露脸的人心理畸形吗?心理畸形也就不来这里了!
说真的,我只是同情eggyyy的遭遇,我在国企也有几个朋友,我们都是30至40岁的人了,对国企的体制非常厌恶,毁了几代人,...不说了,就说技术吧!
我建议你别搞形状分析,搞出运动轨迹,意义大一些,“活性”本身的含义是否为单位时间内的位移?这个我不懂,最好eggyyy你能说明一些!
与非活动精子的问题)。在这个程序中,除了轨迹以外,各个细胞的运动速度也要求计算,
但是我想只要轨迹问题解决了,速度问题也就好办了。其实共享软件优秀作者的第一名softhow就做过这个软件(在共享
软件栏里有排名榜和相关软件介绍),我给了他封信,想求教这
方面的问题,至今也没有结果。
不搞清楚单个精子又如何得出其运动的轨迹呢?你是在屏幕上画出单个精子的运动轨迹还是仅仅把精子描出来?我不知道你的图片的采样间隔是多少,如果很大的话我认为可能连肉眼也很难分辨上一帧中的某一个精子在下一帧中的哪个地方,别说电脑了。
说说具体的吧,或者贴几张样图出来,否则很难提出有实质突破的建议。
使用imagelist控件可以进行位图的叠加,非常方便。
我的E-MAIL:[email protected]
我的E-MAIL:[email protected]