Home > database >  Matrix Transformation for image
Matrix Transformation for image

Time:11-20

I am working on an image processing project in python in which I am required to change the coordinate system enter image description here

I thought it is analogous to matrix transformation and tried but it is not working, I have taken the coordinates of the red dots enter image description here

CodePudding user response:

Simply subtract by 256 and divide by 512. The connection is that you see values of 256 get mapped to 0. Therefore, 0 gets mapped to -256, 256 gets mapped to 0 and 512 gets mapped to 256. However, you further need the values to be in the range of [-0.5, 0.5]. Dividing everything by 512 finishes this off.

Therefore the relationship is:

out = (in - 256) / 512 = (in / 512) - 0.5

Try some values from your example input above to convince yourself that this is the correct relationship.

If you want to form this as a matrix multiplication, this can be interpreted as an affine transform with scale and translation, but no rotation:

    [ 1/512 0   -0.5 ]
K = [   0 1/512 -0.5 ]
    [   0   0     1  ]

Take note that you will need to use homogeneous coordinates to achieve the desired result.

For example:

(x, y) = (384, 256)

[X]   [ 1/512 0   -0.5 ][384]
[Y] = [   0 1/512 -0.5 ][256]
[1]   [   0   0     1  ][ 1 ]

[X]   [384/512 - 0.5]   [ 0.25 ]
[Y] = [256/512 - 0.5] = [   0  ]
[1]   [      1      ]   [   1  ]

Simply remove the last coordinate to get the final answer of (0.25, 0).

  • Related