gpt4 book ai didi

java - 使用 Java 识别图形中的线条

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:58 27 4
gpt4 key购买 nike

我正在研究一个想法,其中我必须识别 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 类型的图表工具制作图表,它就像一条直线。

所以输入是数据集,输出是包含 Y 值折线图的 .PNG 文件(使用 jchart 或 jfreechart)。

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

问题的背景是——我想在我的应用程序中存储 PNG 文件而不是原始数据集。但是给定一个 PNG 文件,我应该能够取回我的数据集。

最佳答案

我有点困惑,您的问题是确定图像中像素的颜色,还是您的数学问题正在尝试做。

对于前者,执行如下操作:

    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。)

关于java - 使用 Java 识别图形中的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com