区域图(图像)有一些数据系列,用不同的颜色绘制。我们知道x-Axis上每个标签的图像大小和坐标,是否可以通过图像识别来发现y轴系列?任何人都可以解释一下吗?
答案 0 :(得分:1)
如果您知道y轴刻度,则应该可以。
要进行屏幕抓取,您可以先使用每个系列的滤镜过滤图像。 第二步是收集临时图像中所有剩余像素的坐标,并将它们转换为所需的比例。
给出
你可以计算这个像素的数据(伪代码)
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;