Image de-warping tool, and Multics/GCOS panels

Don Hills dmhills at
Mon Oct 30 23:01:42 CDT 2017

For quick (and automatic) perspective correction, sharpening and OCR, I use
Microsoft's Office Lens. (Android, iOS, Windows 10 desktop)
There are a couple of other apps that do the same sort of thing but I
haven't tried them.

On Sat, Oct 28, 2017 at 5:59 PM, Steve Malikoff via cctalk <
cctalk at> wrote:

> Noeal asked:
> > I'm having an issue with the images, though: taking a picture of a flat,
> > rectangular panel with a camera usually produces distortion (even with
> the
> > lens set to the narrowest angle possible).
> >
> > Does anyone know of any freeware which will fix this? The image tool I
> > normally use (ImagePals, sort of a poor man's Photoshop) does have a
> 'warp'
> > function, but it requires setting up a grid of points, and is a pain to
> use:
> > optimal would be something where you mark the 4 corners, and few
> intermediate
> > edge points, and the image is automagically fixed.
> You could do it "by eye" in Photoshop and GIMP-type tools, but I believe a
> far better and more adjustable
> way is to use an operation in imagemagick called affine transformation.
> With this you can tweak the
> result programmatically to the nearest pixel-to-millimetre value to get
> the best result.
> For instance I have done an analogous task in which I removed perspective
> from black and white images
> of a WWII vehicle onto a flat elevation, so that accurate markings and
> camouflage patterns or precise
> positions of fittings can be obtained, by only knowing the basic perimeter
> edges.
> To do this, I firstly need an accurate measurement of the side of the
> vehicle. Its exact length, height
> will do. This is easily obtained from scale modelling information. In your
> particular case, I think only
> the width and height of the panel would be needed, OR the two expressed as
> a ratio and scaled later.
> Let's take for example an IBM System/360-40 console. It is comprised of a
> few individual panels but they
> are arranged in two larger rectangles, joined along one ege, but with an
> angle of about 163 degrees between
> them. The upper panel's flat measurements are 711mm wide and 477mm long.
> The lower panel is 71mm wide by 199mm high, as flat.
> Say I then found any sufficiently detailed photo of a /40 console, and
> wanted to map the surface of that
> to my known panel edge measurements. The photo is of course taken from any
> arbitrary angle.
> I will use this one, 1200x953 pixels, presenting a common three-quarter
> side view, taken fron the left:
> IBM_System_360_at_USDA.jpg/1200px-IBM_System_360_at_USDA.jpg
> The angled panels also show in the photo but that will be removed. Save
> the image locally.
> I tend to start at the pixel that is the top right corner. The image
> editor places the origin at the top left corner.
> Essentially the corners of the console rectangle in the photo - taking the
> upper panel only, for this example -
> need to be stretched to my known rectangle of TR=(711,0) to BR= (711,477)
> to BL=(0,477) to TL=(0,0).
> The rectangular polygon will automatically be closed back to the start.
> I'm using mm but you could use any
> measurement unit you like.
> Next, load the above photo of the console in any good-enough image editor.
> I use the free Paint.NET for this
> purpose and I absolutely love it. Move around the photo, zoom in etc. and
> place the mouse cursor exactly
> on the top right corner and take a note of the pixel coordinate shown in
> the lower right of the app. I make it
> to be (675,141) on that particular photo.
> Then do the same for the bottom right, bottom left, top left corner
> pixels. Remember this is the top panel only,
> the lower is done in the same fashion seperately. These are done in the
> same point-to-point sequence as the
> known measurements, and must be the same number of coordinates. It does
> not have to be a rectangle, you
> may have five, six or more coordinates for a say a vehicle or spaceship
> scale elevation.
> So directly off the photo:
> 675,141         TR
> 646,315         BR
> 442,336         BL
> 458,129         TL
> Now, assuming Imagemagick is installed, all we need to is tell it to
> stretch those coordinates to our
> known actual square coordinates by pairing them, pixel-to-known
> coordinate. On the command line, or in
> a text file enter and paste into the shell (I use git bash on Windows):
>     convert 1200px-IBM_System_360_at_USDA.jpg -virtual-pixel black
> -distort Perspective "675,141 711,0   646,315 711,477   442,336 0,477
>  458,129 0,0"  Model40_upper_panel_transformed_true_flat1.jpg
> Now the required de-perspective image will be in Model40_upper_panel_
> transformed_true_flat.jpg
> If you don't want to go through the above steps yourself you can see the
> result at
> panel_transformed_true_flat1.jpg
> Then use the image editor rubber banding to select the required amount of
> this true flattened image, now using
> the original actual measurements as the pixel coordinates for cropping.
> eg. TR edge is pixel (711,0) etc.
> If the simple Perspective operation doesn't gove you a good result, try
> some other Imagemagick operations eg:
>     convert 1200px-IBM_System_360_at_USDA.jpg -virtual-pixel black
> -interpolate Spline -distort BilinearForward "675,141 711,0   646,315
> 711,477   442,336 0,477   458,129 0,0"  Model40_upper_panel_
> transformed_true_flat2.jpg
> this result #2 at
> panel_transformed_true_flat2.jpg
> although I tend to find the Perspective does a better job. There is plenty
> of help on the site
> and also Stack Overflow., such as
> understanding-perspective-projection-distortion-imagemagick
> Further post-processing for me would be to then load this 711x477 image as
> the background image layer in CAD
> where it is fitted to a rectangle of the same size, in actual mm real
> world dimensions. I can then overdraw all manner
> of lines, construction lines, circles and other drawing elements to get a
> near-perfect actual CAD drawing. Every so
> often I just hide the background layer to see how it looks, and bits I've
> missed.
> Sorry about the long blurb but hope it can help you on your panel.
> Steve.

More information about the cctalk mailing list