I had mentioned on the VSC project description page that I am looking at various methods for scaling my digital amiga video output from 320×200 to 640×400. My initial plan was just to do pixel doubling, or quadrupling where I would copy a pixel horizontally, so making two pixels from one, and then copying the line.
Steve from BMOW had suggested that doing this would be most faithful to the original, and I was happy about that because it is by far the most simplest of ways.
I played around yesterday a little bit with scaling some images, especially those containing diagonal lines (like text for example), using multiple methods in both GIMP2 and Photoshop. The results were pretty clear, doing no interpolation resulted in the worst image. There was some very noticeable aliasing.(stair-stepping, the jaggies) The best result seemed to be Lanczos3 in GIMP2, actually. The result was nice and sharp!
There is a method called Scale2x which looks promising. It’s relatively straight-forward, but like most of these algorithms, it needs to have the surrounding data available, like at least the line before and the line after the current one. I might be able to increase the size of my line buffer, but I have to look to see what the best way to address it is.
I could always do pixel doubling and then have a switch or something that will turn on the filter.
Maybe I’ve misunderstood the type of image scaling you want to do? If you have a 320×200 original image, and you want to display it on a 640×400 monitor so that it looks how it would have on an old Amiga monitor, then just doubling each pixel horizontally and each line vertically is the way to go. It just makes pixels bigger so that they fill the screen properly, but it can’t introduce any more jagginess than was already present in the original image. But if you want to try to “improve” the image by smoothing it, then the other filtering methods you mentioned will do that, but it won’t look the same as it would have on an original Amiga monitor.
For example, say you have an 8×8 icon with a black-and-white checkboard pattern, that you want to scale up. If you do pixel doubling, then you’ll get a 16×16 icon where each square on the checkboard is 2×2 and is either solid white or solid black. If you use one of the filtering algorithms, then you may get a 16×16 icon where some of the pixels are grays and other intermediate colors that were not present in the original icon.
For an example of what I mean, check out https://www.bigmessowires.com/questionmarkDisk-sm.jpg. This is the best close-up photo I have handy of my Mac Plus replica, which does simple pixel and line-doubling to turn the Macs’ 512 x 342 image into 1024 x 768 VGA (with some letter boxing). It’s a photograph of the monitor, which introduces some artifacts, but viewed in person it looks nice and crisp and exactly like a real Mac Plus.
Steve,
Thanks for clarifying. I guess I’ve got to figure out what I want to do. I get your point about there being a difference between being faithful to the original — or wanting to actually improve the image. Do you want a better image, or do you want a more realistic presentation?
I never really thought, until now, that improving the image could take away from the original look and feel of the video.
The main point of my project is to use a modern LCD monitor to display the video output from the Amiga. These modern LCDs won’t take video at 320×200, but they will display 640×400. They also won’t take 15.7khz refresh either. Hence the reason for the project.
Thanks again.
Keith
Even modern monitors will take 320×200 as long as it’s 31.4kHz vertical refresh so there is no practical need to scale the picture. You just need to bump up the refresh rate.
Google for ‘ScanDoubler’. They have been available for the last two decades.
BobG: Thanks for the information.
and you mean 31.4khz HORIZONTAL refresh, of course.
My LCD lists all of the supported resolutions, and 320×200 isn’t one of them. It’s quite possible it will work, but isn’t supported.
I’m well aware of the myriad of commercial scan doublers out there.
Of course it’s no fun to just place an order for one, hook it up, and use it. That’s not the point.
I would like to design and build my own, learning a little about digital logic design along the way. The real goal of most of my projects is about improving my understanding. The journey is the destination!