当前位置:  开发笔记 > 编程语言 > 正文

使用Java来标识图中的行

如何解决《使用Java来标识图中的行》经验,为你挑选了1个好方法。

我正在研究一个想法,我必须在JPG或PNG文件中识别行.PNG文件包含一个单值图表 - 一个x,y组合.例如,图形看起来像Y = mx + c.我想识别图中的线 - 如果我可以识别帧中像素的位置,我相信我可以找回用于绘制图形的值(x,y).这里的假设是 - 我知道比例即1像素= Y的单位?有人可以帮我编写一个代码,用于识别一个PNG文件中特定颜色的像素吗?

编辑

让我们举个例子来说清楚.假设我有一组数据值X和Y像这样 -

X = 1, Y = 10
X = 2, Y = 20
X = 3, Y = 30
X = 4, Y = 40
X = 5, Y = 50
X = 6, Y = 60

在这种情况下,如果我使用jfreechart类型的图表工具并制作图表,它就像一条直线工具.

因此输入是数据集,输出是.PNG文件(使用jchart或jfreechart),其中包含Y值的这个折线图.

问题是 - 如果我们逆转流程,我们是否可以开发一个程序来获取PNG文件(包含图形)并返回数据集.

问题的上下文是 - 我想将PNG文件存储在我的应用程序中而不是原始数据集中.但鉴于PNG文件,我应该能够取回我的数据集.



1> Neil Coffey..:

关于你的问题是简单地确定图像中像素的颜色,还是问题是你想要做的事情的数学,我有点困惑.

对于前者,请执行以下操作:

    BufferedImage bimg = ImageIO.read(new File("whatever.png"));

    // get the colour of the pixel at position (x, y)
    int col = bimg.getRGB(x, y);

    // decode red, green and blue components of colour if necessary
    int r = (col >> 16) & 0xff;
    int g = (col >> 8) & 0xff;
    int b = col & 0xff;

如果从图表中您只想获取数据集(即不从该数据导出方程式),那么您基本上遍历每个X位置并找到Y位置,其中有一个图形绘制程序使用的颜色像素.如果图形具有轴,抗锯齿等,那么任务将更加复杂.

从数据中导出方程式的任务可能要复杂得多,但您可以从检查某些可疑公式开始,例如y = mx + c.例如,您可以循环检查最后一个Y位置之间的差异; 如果这个差异总是相同的,那么你就得到了一个直线图(在这一点上,推导公式应该是微不足道的).

为了测试其他方程,有助于了解一些微积分.然后,一个起点是看差异的差异是否与所讨论的等式的导数相匹配.(举个例子,如果方程是y = ax ^ 2 + c,那么对于X的每次增加,Y的增加本身就会增加2a.)

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有