1

面积图(图像)有几个数据系列,用不同的颜色绘制。我们知道每个标签在x轴上的图像大小和坐标,是否可以通过图像识别发现y轴的系列?任何人都可以解释一下吗?

4

1 回答 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 回答