面积图(图像)有几个数据系列,用不同的颜色绘制。我们知道每个标签在x轴上的图像大小和坐标,是否可以通过图像识别发现y轴的系列?任何人都可以解释一下吗?
问问题
91 次
1 回答
1
如果您知道 y 轴刻度,则应该可以。
要进行屏幕截图,您可以首先使用每个系列的滤色器过滤您的图像。第二步是收集临时图像中所有剩余像素的坐标,并将它们转换为所需的比例。
给定
- 坐标 x,y 处的像素
- 图表原点的偏移量,以图像像素为单位 xoffset, yoffset
- 图表轴的比例 xscale, yscale
你可以计算这个像素的数据(伪代码)
pixelData.x := (x - xoffset) * xscale
pixeldata.y := (y - yoffset) * yscale
然后,如果您的系列线超过一个像素宽,请进行一些插值(例如,获取单列左右所有像素的平均数据)。
Update1:用于过滤掉红色图表的朴素滤色器的伪代码
//set up desired color levels to filter out
redmin := 240;
redmax := 255
bluemin := 0;
bluemax := 0;
greenmin := 0
greenmax := 0;
//load source bitmap
myBitmap := LoadBitmap("Chartfile.bmp");
//loop over bitmap pixels
for iX := 0 to myBitmap.width-1 do
for iY := 0 myBitmap.height-1 do
begin
myColorVal := myBitmap.GetPixels(iX, iY);
//if the pixel color is inside your target color range, store it
if ((mycolorVal.r >=redmin) and (myColorVal.r <= redmax)) and
((mycolorVal.g >=greenmin) and (myColorVal.g <= greenmax)) and
((mycolorVal.b >=bluemin) and (myColorVal.b <= bluemax)) then
storeDataValue(iX, iY); //performs the value scaling operation mentioned above
end;
于 2010-09-16T13:32:07.097 回答