MATLAB提取图片曲线坐标值的简易方法(GetDada版)

同事让我帮忙处理一些图片曲线,把图片里的曲线坐标搞出来。

我后悔以前不该乱吹牛。我之前确实搞过一个这样的程序,只不过那个程序更像一个探索性的东西,用起来限制很多,稍显鸡肋。

我当时的程序,需要先经过3个步骤的准备,才能开始程序识别坐标。


大概的步骤如下:

1.jpg

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图2

Step1. 清场。如果一个图里有很多曲线,要把其他曲线清掉(画图板);

Step2. 断点。如果曲线是连续的,则要把他们分成一个个小段(图板go on);

Step3. 定参考点。图像初步识别的时候,是没有坐标基准的,要在原图里放两个知道坐标的点,用于基准定义;

Step4. 程序运行。程序识别出每一个断点的中心位置坐标。

我大概尝试下,这个流程走下来和直接用线程的GetData软件结果差不多。上面几个步骤里面,前两个步骤耗时比较长。



前年冬天在哈尔滨出差的时候,我对step1和step2尝试过自动化的方法。当时我的方法是这样的:

1)针对step1。我搞出了颜色识别算法,对于一个图好多个颜色的线,能够做到提取特定颜色;

2)针对step2。我的设想是,自动在图里画出白色的竖线或者横线,做到对现有曲线的自动分割。

尝试之后,step2的改进失败。这是因为,如果只画横线或者竖线再或者同时画,如果线定的太密,原有曲线被遮挡严重,丢失信息。如果画的太稀疏,则搞得精度不够。这个度对于不同的图,很难有统一的设定,因此实际用起来意义不大。

2.jpg

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图4

如果说一两个图,我用GetData就能很快处理了,一世英名得以保全。拿到手一看,几十个图,每个图2分钟也要搞两三个小时。两三个小时的重复取点工作,光想想,我就觉得自己眼睛会瞎。

我决定砍柴之前再磨一次刀,尝试解决两年前的问题。



1 Step2的解决

实际上,我仔细想了下,之所以出现step2断点操作,主要是我之前的程序里要识别一个封闭区域的中心点,如果曲线连在一起,那么只能得到一个点。

3.jpg



这段程序是我从网上看来的,囫囵吞枣的用了,其实没仔细考虑过。

如果从图片的构成来考虑,我一个图是用像素点拼起来的,我能不能仔细去一个识别每个像素点的信息,进而把构成曲线的像素点识别出来呢?

看了下图片读取后的信息,二值化以后的图片信息是一个m*n的矩阵,这个矩阵每个点的值要么是1要么是0。我把是的区域显示出来,果然发现它就是我要的那个曲线。就这样,step2被解决了。

4.png

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图8基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图9

5.png

2 Step3的解决

现在我的程序可以实现曲线自动提取了,但是我现在提取的坐标是每个像素点在图里的相对位置。比如像素点为100*200,那么我最后一个点的坐标是(100,200)。这显然不能直接用啊,我要知道我图片x、y两个方向的尺度,然后才能换算出真实的坐标值。

我原来解决方案是,在图里面实现加入A、B两个点,通过画图板画上去。

按照我原来的方法,这个还要用画图板,有点麻烦,我觉得应该可以简化。

要简化还是要回到图片上来。像素点是均匀的,如果我知道图片x\y两个方向真实的长度,除以两个方向像素点的个数不就可以确定每个像素点的坐标了吗?

按照这个思路,我图片的实际尺寸我是要实现知道的。但是通常图片都有白边界,因此,需要对图片进行截图处理。

6.jpg

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图12

根据这个思路,我现在程序效果得到了极大的提升。

3 改进后的效果

改进以后,我现在的程序,分三步:

1)截图。

7.png

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图14

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图15

截图后

8.png

3)输入图片两个角点坐标。

4)运行程序。

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图17

二值化结果

9.png

基于MATLAB提取图片曲线的坐标值(简易GetDada)的实现的图19

坐标结果

10.png

最后,半个小时处理完了所有图片,一世英名得以保存。

总体来说,目前这个方法相比于GetData,速度更快,不需要手动点选。另外自动提取像素点,所得结果更密、更准,是一次很好的改进体验。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空