Thanks for the initial thoughts on this.  Here's some more clarification:

1. The rectangles are not the same size or location, but they generally sit 
substantially in the upper right quadrant of the graph which is otherwise 
empty/white.

2. The graphs are all the same dimensions, but the actual size depends on the 
pixel density chosen by the user.  The user can select 1x, 2x or 4x screen 
resolution, giving images that are either 1916x1061, 3832x2122 or 7664x4244 in 
size.

3. I'm planning to use the freely available tesseract OCR engine.  This seems 
to work pretty well as long as the pixel density is 200dpi or higher, which 
means using the 2x or 4x screen resolution options,  Here are a couple of links 
about Tesseract:

        https://en.wikipedia.org/wiki/Tesseract_(software)
        https://github.com/tesseract-ocr

4. I've been trying to use ideas from the image processing tutorials but my 
code is painfully slow.  My method is as follows (assuming the rectangle is in 
the upper right quadrant):

a. start along the top row of the graph at about 2/3 (or 3/4) along the row 
(about the middle of the top right quadrant)

b. drop down vertically until I hit a black pixel

c. follow the black pixels to the left & right to find the ends of the top line 
of the rectangle - this gives me the Xleft,Ytop and Xright,Ytop coordinates of 
the rectangle

d. from the left end of the top line of the rectangle, drop down the black 
pixels until I hit a white pixel marking the bottom of the left line of the 
rectangle - this gives me the coordinates Xleft,Ybottom from which I also get 
Xright,Ybottom

However, the X coordinates are correctly identified but not the Y coordinates. 
Ytop is OK but the drop down fails to stop before going well past the lower 
line of the rectangle.   My script for the searching down the left edge of the 
rectangle is like the following:

         -- search down for bottom of left line where tXleft,tY is the 
identified left pixel of the top line:
            put tY + 1 into tYchk
            repeat while getPixelColour(tXleft,tYchk,tImageWidth) = cBlack and 
tYchk <= tMaxY
                add 1 to tYchk
            end repeat
            if tYchk < tMaxY then
                put tYchk - 1 into tYbottom
            end if    

5. Here is the handler that I use to test the colour of a pixel:

function getPixelColour pX, pY, pImgWidth
   local tPix, tImgPos, tRedVal, tGreenVal, tBlueVal
   put pY * pImgWidth + pX into tPix
   put tPix * 4 into tImgPos
   put charToNum(byte (tImgPos + 2) of image "graph" of stack "ImageHolder") 
into tRedVal
   put charToNum(byte (tImgPosn + 3) of image "graph" of stack "ImageHolder") 
into tGreenVal
   put charToNum(byte (tImgPosn + 4) of image "graph" of stack "ImageHolder") 
into tBlueVal
   return (tRedVal)  -- & comma & tGreenVal & comma & tBlueVal)
end getPixelColour

6. I've even tried changing the pixels to red as I check them so I can see 
where I've been but there's no sign of a red trail in the images!  This is my 
handler for setting pixel colours:

on setPixelColour  pX, pY, pImgWidth, pRGB
    local tPix, tImgPos, tRval, tGval, tBval
    put pY * pImgWidth + pX into tPix
    put tPix * 4 into tImgPos
    set itemdelimiter to comma
    put item 1 of pRGB into tRval
    put item 2 of pRGB into tGval
    put item 3 of pRGB into tBval
    put numToChar(tRval) into byte (tImgPos + 2) of image "graph" of stack 
"ImageHolder"
    put numToChar(tGval) into byte (tImgPos + 3) of image "graph" of stack 
"ImageHolder"
    put numToChar(tBval) into byte (tImgPos + 4) of image "graph" of stack 
"ImageHolder"
end setPixelColour

Thanks for any ideas!

Peter
--
Peter Reid
Loughborough, UK

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to