June 14, 2011 at 8:44 pm #526kermitMember
thanks for the great work. I’m wanting to create a project that captures an image with numbers on them and then recognises these number. What I want to be able to do is read a power meter and ‘see’ what the actual meter is reading, at present I’m thinking that 128 by96 will be to small a resolution for this so I’m wondering if I can ‘focus’ this shield onto a smaller area and hence give me an effective higher resolution. Means I should have more chance to then figure out what the number is (or that I can free up some of my SRam for other processing). Also because the number will always be in the same place then I can take several sub images and get the full meter reading . Hope this this is clearJune 16, 2011 at 5:35 pm #1333MichaelKeymaster
I think I know what you are trying to accomplish, but it seems you are contradicting yourself. If you want higher resolution, you need to capture more information (more pixels) and that requires more memory, not less.
The bottom line is that the resolution of the captured image cannot be higher because the capture routine is running as fast as it can. In other words, the pixels are “wide” because it takes several assembly instructions to read the analog comparator value and store the pixel value (on or off) in the frame buffer. There are only 128 pixels captured for a line of an image because we can only measure the signal voltage 128 times in the time it takes the NTSC input signal to cover one line. The timing of the NTSC input from the camera is fixed according to the NTSC standard.
Does that make sense?
If your camera zooms in on a number, that should be plenty of resolution to identify the number. But how are you going to match the image against a template? Are you planning on doing some neural network code? I had considered implementing a backpropagation network, but am not sure I’d have enough memory. And you need memory to store the templates, but you could use flash PROGMEM for that.August 3, 2011 at 8:44 am #1411DwellerMember
An old thread.. but it’s similar to something I have in mind.. I’d need higher resolution too, but like the original poster only need that for part of the image.. so overall the no of pixels capped would be the same, but the area of the frame being captured from would be smaller.
Is it possible to build the grab from multiple frames? at least in the case I’m looking at (attempting to ‘read’ a set top box on-screen-display).. the display would remain constant for anything up to a minute or so.. I’d guess grab the 128 for a line once, then do it again, but with a 1 operation ‘delay’ to cause the sample points to be right shifted a little.. etc.. ?August 3, 2011 at 4:42 pm #1412MichaelKeymaster
The capture ability is limited by the size of the pixels it can grab. So even if you want to capture a subset of the screen, you can’t make the pixels smaller. The Arduino can’t run instructions fast enough to capture smaller pixels. As the scanline flies across the screen, it takes 5 instructions to capture the brightness level, and the time it takes to run those instructions is what determines the width of the pixels.
I’m not sure I understand the question about grabbing multiple frames. You can capture a frame, then process it, then wait and capture more frames later.January 27, 2015 at 9:39 am #2156arhamMember
You would need some hardware to convert composite video to SVGA. But keep in mind that the composite signal output from the TVout library is not perfect (per the standards) and some of these products won’t work with the TVout signal.
- You must be logged in to reply to this topic.