图像识别问题:从图片中抽取出曲线!

tangxu12 2013-02-26 09:19:38
我有很多如下扫描的图片,我想抽出曲线来,一条曲线上抽取20个点就够了。请问怎么做,给个思路也行!
坐标以及网格线都不用考虑,只要曲线。

...全文
2337 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxu12 2013-03-07
  • 打赏
  • 举报
回复
诶!!! 结贴吧
tanta 2013-03-02
  • 打赏
  • 举报
回复
引用 14 楼 Trent1985 的回复:
引用 11 楼 tanta 的回复: 这个就是给5000人民币也没人做啊。给5000我做哈哈!这个问题并不是解决不了,只是有点复杂,结果可以得到每一条曲线的图像,并且可用不同颜色标识出来。
找 tangxu12 要。。。
Trent1985 2013-03-02
  • 打赏
  • 举报
回复
引用 15 楼 tanta 的回复:
引用 14 楼 Trent1985 的回复:引用 11 楼 tanta 的回复: 这个就是给5000人民币也没人做啊。给5000我做哈哈!这个问题并不是解决不了,只是有点复杂,结果可以得到每一条曲线的图像,并且可用不同颜色标识出来。 找 tangxu12 要。。。
呵呵,玩笑而已。。。。
CandPointer 2013-02-27
  • 打赏
  • 举报
回复
普通的遍历每个点,或者什么的,都是太理想化的想法. 实际上, 图纸,有褶皱, 有大污点,有印刷残留的墨点, 有各种复杂的情况 业余山寨作品,如何能比过专业的久经考验的老战士? 工科人士, 必备的 Origin http://www.originlab.com/ LZ可用的 GetData http://getdata-graph-digitizer.com/ 还有很多同类软件, 开源的也有不少
Trent1985 2013-02-27
  • 打赏
  • 举报
回复
引用 11 楼 tanta 的回复:
这个就是给5000人民币也没人做啊。
给5000我做哈哈!这个问题并不是解决不了,只是有点复杂,结果可以得到每一条曲线的图像,并且可用不同颜色标识出来。
dylike 2013-02-27
  • 打赏
  • 举报
回复
引用 12 楼 CandPointer 的回复:
普通的遍历每个点,或者什么的,都是太理想化的想法. 实际上, 图纸,有褶皱, 有大污点,有印刷残留的墨点, 有各种复杂的情况 业余山寨作品,如何能比过专业的久经考验的老战士? 工科人士, 必备的 Origin http://www.originlab.com/ LZ可用的 GetData http://getdata-graph-digitizer.……
谁说业余山寨的就比不过专业的?你提供的网址那个依然是遍历每个点,也就是你所谓的太理想化的作法。如果不遍历,难道用矢量化公式?
Trent1985 2013-02-26
  • 打赏
  • 举报
回复 1
这个其实也简单,给你个思路: 1,用hough变换直线检测,把所有网格直线全部检测出来删掉,得到只有曲线的图像; 2,循环图像,在绘图区域内的黑色的点即曲线上的点; 或者: 使用鼠标+GetPixel函数手动获得自己想要的曲线上的点;
tangxu12 2013-02-26
  • 打赏
  • 举报
回复
谢谢楼上, 但有2个问题: 1. 图片是扫描的,格子难免会有点斜 2. 我要一条一条的曲线,不是要得到所有曲线的点放在一起
wwm402654282 2013-02-26
  • 打赏
  • 举报
回复
图片上有格子 应该是规则的 可以在判断的时候 加上 if (x%每个格子宽度==0&&y%每个格子高度==0) { }
wwm402654282 2013-02-26
  • 打赏
  • 举报
回复
 
遍历像素最好用  BitmapData 速度快
不知道这样行不行
List<List<Point>> pointList = new List<List<Point>>();//所有曲线容器
            //曲线点容器
            List<Point> points = new List<Point>();
            //遍历像素
            for (int x = 0; x < bit.Width; x++)
            {
                int cellCount = 0;//该行中是否有记录
                for (int y = 0; y < bit.Height; y++)
                {
                    //颜色因拍照原因 可能色素不一致 需要模糊判断 
                    if (bit.GetPixel(x, y) != Color.White)//bit.GetPixel(x, y)=Color.black
                    {
                        points.Add(new Point(x, y));
                        cellCount ++;
                    }
                }
                //如果存在一行没有曲线点 表示第x个曲线已经结束 则重新创建曲线点容器
                if (cellCount == 0 && points.Count!=0)
                {
                    pointList.Add(points);
                    points = new List<Point>();//从新创建曲线容器
                }                
            }
          //  pointList[i]为一个曲线坐标
  • 打赏
  • 举报
回复
这有点难度吧。。。。
tangxu12 2013-02-26
  • 打赏
  • 举报
回复
我就要得到点坐标 通过程序得到拟合曲线的 图片背景都是白色的 线都是黑色的 这个不会变,图片是扫描进去的
tanta 2013-02-26
  • 打赏
  • 举报
回复
这个就是给5000人民币也没人做啊。
gxingmin 2013-02-26
  • 打赏
  • 举报
回复
各个曲线模型(就是轨迹方程)你知道么?如果知道了就好做了,在轨迹上去点颜色比对 如果不知道模型,那比较困难啊,都是相同颜色的,你知道点是哪条线上的啊
Trent1985 2013-02-26
  • 打赏
  • 举报
回复
引用 6 楼 tangxu12 的回复:
谢谢楼上, 但有2个问题: 1. 图片是扫描的,格子难免会有点斜 2. 我要一条一条的曲线,不是要得到所有曲线的点放在一起
你这个问题不是我打击你,你就是贴500分,也得不到完美的方案!自己动脑筋吧,别人给的总非理想的!!!
wwm402654282 2013-02-26
  • 打赏
  • 举报
回复
List<List<Point>> pointList = new List<List<Point>>();//是所有曲线容器
每个List<Point>也就是pointList[i]是每个曲线
关于倾斜的处理方法 是可以解决的 你可以把他纠正就行了嘛
yemuzi 2013-02-26
  • 打赏
  • 举报
回复
检测网格线应该是必须的吧,这样才能构造坐标系

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧