2010-09-16 26 views

Répondre

1

Si vous connaissez l'échelle de l'axe des y, cela devrait être possible.

Pour screparer, vous pouvez d'abord filtrer votre image avec un filtre de couleur pour chacune des séries. La deuxième étape consisterait à rassembler les coordonnées de tous les pixels restants dans votre image temporaire et à les transformer à l'échelle requise.

donné

  • un pixel aux coordonnées x, y
  • le décalage des cartes Origin en pixels d'image xoffset, yoffset
  • l'axe Echelle de vous tracer xscale, yscale

vous pouvez calculer les données pour ce pixel (pseudocode)

pixelData.x := (x - xoffset) * xscale 
pixeldata.y := (y - yoffset) * yscale 

Ensuite, faites une interpolation si la ligne de votre série a plus d'un pixel de largeur (par exemple, obtenez la moyenne des données pour tous les pixels dans une seule colonne).

Update1: pseudocode pour le filtre couleur naïf filtrant les graphiques rouges

//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; 
+0

Avez-vous un exemple de code de la façon d'utiliser le filtre de couleur? – PerlDev