Non-proportional (non Rectangular) resizing

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • GraGra33

    #1

    Non-proportional (non Rectangular) resizing

    Hi all...

    I have developed an application for managing a very large resource of
    artist's paintings and posts them to a web site. The application works well.
    I'm trying to reduce the complexity of having to work with photoshop and
    integrate one feature into the application Distortion Transformations .

    Background Information:

    When paintings are photographed, it's impossible to get a completely perfect
    image that requires straightening prior to cropping for a number of rasons -
    the photographer is not standing square on to the painting, the painting is
    leaning, the camera is not at the correct height, the camera causes barrel
    distortion, etc...

    Therefore each image must be loaded into photoshop, all 4 corners selected
    using the polygonal lasso tool then manually applying a Distort
    Transformation (Edit Transform Distort) on the selected region.

    The Problem:

    The GDI library comes standard with several rectangular transformations -
    stretch, Skew, etc.. But these apply only to a perfect rectangular region
    where all points are perpendicular to each other.

    I have no problems in selecting the non-rectangular region - this is easy.
    I'm stumped at trying to work out how to take this region and applying the
    Photoshop like Distort Transformation.

    Anyone have any pointers?

    Thanks in advance...

    Graeme


  • Kevin Spencer

    #2
    Re: Non-proportional (non Rectangular) resizing

    Transformations are all done using Matrix math. This is not going to be an
    easy task, because you will have to understand Matrix math to do it. Here
    are some articles and sample code to get you started:






    --
    HTH,

    Kevin Spencer
    Microsoft MVP
    Software Composer
    Thoughts and Ideas about programming, philosophy, science, arts, life, God, and related subjects.


    The shortest distance between 2 points is a curve.

    "GraGra33" <gragra33@hotma il.comwrote in message
    news:e90GZdTQHH A.1200@TK2MSFTN GP02.phx.gbl...
    Hi all...
    >
    I have developed an application for managing a very large resource of
    artist's paintings and posts them to a web site. The application works
    well.
    I'm trying to reduce the complexity of having to work with photoshop and
    integrate one feature into the application Distortion Transformations .
    >
    Background Information:
    >
    When paintings are photographed, it's impossible to get a completely
    perfect
    image that requires straightening prior to cropping for a number of
    rasons -
    the photographer is not standing square on to the painting, the painting
    is
    leaning, the camera is not at the correct height, the camera causes
    barrel
    distortion, etc...
    >
    Therefore each image must be loaded into photoshop, all 4 corners selected
    using the polygonal lasso tool then manually applying a Distort
    Transformation (Edit Transform Distort) on the selected region.
    >
    The Problem:
    >
    The GDI library comes standard with several rectangular transformations -
    stretch, Skew, etc.. But these apply only to a perfect rectangular region
    where all points are perpendicular to each other.
    >
    I have no problems in selecting the non-rectangular region - this is easy.
    I'm stumped at trying to work out how to take this region and applying the
    Photoshop like Distort Transformation.
    >
    Anyone have any pointers?
    >
    Thanks in advance...
    >
    Graeme
    >
    >

    Comment

    • GraGra33

      #3
      Re: Non-proportional (non Rectangular) resizing

      Hi...

      Thanks for your suggestions - I've had a look at all the links mentioned.
      Bob's and the CodeProject artile I've already looked at both and they deal
      with rectangular regions (simple transformation) and not 4-point polygons
      (complex transformation) .

      I've also looked at Gimp and Paint.Net - both only deal with regions (simple
      transformation) and don't have Photoshop's distort transformation (complex
      transformation) .

      I'm trying to do 4-point polygons (complex transformation) and not
      rectangular regions (simple transformation) . The GDI+ matrix transformations
      only handle rectangular regions (simple transformation) as far as I can
      ascertain.

      To clarify what I'm trying to do, I'll give you another example - can send
      you a sample image if you think that you know how it's done.

      Example: The bottom-left and top-right corners are not squared to the
      Top-left & bottom-right corners. To square the image, the top-left and
      bottom-right must stay anchored whilst the bottom-left must be distorted
      towards the top and the top-right corner must be distorted to the right.

      Be aware that no two photos are the same and each photo will require
      different distort transformation adjustments.

      Do you still think that your suggestion will work or do you have another
      idea?

      Thanks for your help in advance,

      Graeme

      "Kevin Spencer" <unclechutney@n othinks.comwrot e in message
      news:e2CH2AUQHH A.1200@TK2MSFTN GP02.phx.gbl...
      Transformations are all done using Matrix math. This is not going to be an
      easy task, because you will have to understand Matrix math to do it. Here
      are some articles and sample code to get you started:
      >




      >
      --
      HTH,
      >
      Kevin Spencer
      Microsoft MVP
      Software Composer
      Thoughts and Ideas about programming, philosophy, science, arts, life, God, and related subjects.

      >
      The shortest distance between 2 points is a curve.
      >
      "GraGra33" <gragra33@hotma il.comwrote in message
      news:e90GZdTQHH A.1200@TK2MSFTN GP02.phx.gbl...
      >Hi all...
      >>
      >I have developed an application for managing a very large resource of
      >artist's paintings and posts them to a web site. The application works
      >well.
      >I'm trying to reduce the complexity of having to work with photoshop and
      >integrate one feature into the application Distortion Transformations .
      >>
      >Background Information:
      >>
      >When paintings are photographed, it's impossible to get a completely
      >perfect
      >image that requires straightening prior to cropping for a number of
      >rasons -
      >the photographer is not standing square on to the painting, the painting
      >is
      >leaning, the camera is not at the correct height, the camera causes
      >barrel
      >distortion, etc...
      >>
      >Therefore each image must be loaded into photoshop, all 4 corners
      >selected
      >using the polygonal lasso tool then manually applying a Distort
      >Transformati on (Edit Transform Distort) on the selected region.
      >>
      >The Problem:
      >>
      >The GDI library comes standard with several rectangular transformations -
      >stretch, Skew, etc.. But these apply only to a perfect rectangular region
      >where all points are perpendicular to each other.
      >>
      >I have no problems in selecting the non-rectangular region - this is
      >easy.
      >I'm stumped at trying to work out how to take this region and applying
      >the
      >Photoshop like Distort Transformation.
      >>
      >Anyone have any pointers?
      >>
      >Thanks in advance...
      >>
      >Graeme
      >>
      >>
      >
      >

      Comment

      • Kevin Spencer

        #4
        Re: Non-proportional (non Rectangular) resizing

        Yes, I have a good understanding of what you're trying to do. The Bob Powell
        and CodeProject references were just for the purpose of general information
        about Matrices. The other 2 references are more specific, one of which goes
        well into the mathematics, and one of which provides some samples of C#
        Matrix math algorithms, although you will still have to create your own
        matrices to do the work. But it WILL involve using Matrix transformation,
        and you will have to figure out the Math.

        --
        HTH,

        Kevin Spencer
        Microsoft MVP
        Software Composer
        Thoughts and Ideas about programming, philosophy, science, arts, life, God, and related subjects.


        The shortest distance between 2 points is a curve.

        "GraGra33" <gragra33@hotma il.comwrote in message
        news:uAudhuZQHH A.2256@TK2MSFTN GP02.phx.gbl...
        Hi...
        >
        Thanks for your suggestions - I've had a look at all the links mentioned.
        Bob's and the CodeProject artile I've already looked at both and they deal
        with rectangular regions (simple transformation) and not 4-point polygons
        (complex transformation) .
        >
        I've also looked at Gimp and Paint.Net - both only deal with regions
        (simple transformation) and don't have Photoshop's distort transformation
        (complex transformation) .
        >
        I'm trying to do 4-point polygons (complex transformation) and not
        rectangular regions (simple transformation) . The GDI+ matrix
        transformations only handle rectangular regions (simple transformation) as
        far as I can ascertain.
        >
        To clarify what I'm trying to do, I'll give you another example - can send
        you a sample image if you think that you know how it's done.
        >
        Example: The bottom-left and top-right corners are not squared to the
        Top-left & bottom-right corners. To square the image, the top-left and
        bottom-right must stay anchored whilst the bottom-left must be distorted
        towards the top and the top-right corner must be distorted to the right.
        >
        Be aware that no two photos are the same and each photo will require
        different distort transformation adjustments.
        >
        Do you still think that your suggestion will work or do you have another
        idea?
        >
        Thanks for your help in advance,
        >
        Graeme
        >
        "Kevin Spencer" <unclechutney@n othinks.comwrot e in message
        news:e2CH2AUQHH A.1200@TK2MSFTN GP02.phx.gbl...
        >Transformation s are all done using Matrix math. This is not going to be
        >an easy task, because you will have to understand Matrix math to do it.
        >Here are some articles and sample code to get you started:
        >>
        >http://www.bobpowell.net/transformations.htm
        >http://www.codeproject.com/csharp/ma...sformation.asp
        >http://www.euclideanspace.com/maths/...etic/index.htm
        >http://www.euclideanspace.com/maths/...ion_csharp.htm
        >>
        >--
        >HTH,
        >>
        >Kevin Spencer
        >Microsoft MVP
        >Software Composer
        >http://unclechutney.blogspot.com
        >>
        >The shortest distance between 2 points is a curve.
        >>
        >"GraGra33" <gragra33@hotma il.comwrote in message
        >news:e90GZdTQH HA.1200@TK2MSFT NGP02.phx.gbl.. .
        >>Hi all...
        >>>
        >>I have developed an application for managing a very large resource of
        >>artist's paintings and posts them to a web site. The application works
        >>well.
        >>I'm trying to reduce the complexity of having to work with photoshop and
        >>integrate one feature into the application Distortion Transformations .
        >>>
        >>Background Information:
        >>>
        >>When paintings are photographed, it's impossible to get a completely
        >>perfect
        >>image that requires straightening prior to cropping for a number of
        >>rasons -
        >>the photographer is not standing square on to the painting, the painting
        >>is
        >>leaning, the camera is not at the correct height, the camera causes
        >>barrel
        >>distortion, etc...
        >>>
        >>Therefore each image must be loaded into photoshop, all 4 corners
        >>selected
        >>using the polygonal lasso tool then manually applying a Distort
        >>Transformatio n (Edit Transform Distort) on the selected region.
        >>>
        >>The Problem:
        >>>
        >>The GDI library comes standard with several rectangular
        >>transformatio ns -
        >>stretch, Skew, etc.. But these apply only to a perfect rectangular
        >>region
        >>where all points are perpendicular to each other.
        >>>
        >>I have no problems in selecting the non-rectangular region - this is
        >>easy.
        >>I'm stumped at trying to work out how to take this region and applying
        >>the
        >>Photoshop like Distort Transformation.
        >>>
        >>Anyone have any pointers?
        >>>
        >>Thanks in advance...
        >>>
        >>Graeme
        >>>
        >>>
        >>
        >>
        >
        >

        Comment

        • GraGra33

          #5
          Re: Non-proportional (non Rectangular) resizing

          Thanks for the quick response Kevin.

          I've had a good look at GDI+ and Matricies through alot of hand coding and
          all I get are simple transformations . I fail to see how GDI+ can handle
          complex transformations other than rectangular regions.

          Kind Regards,

          Graeme

          "Kevin Spencer" <unclechutney@n othinks.comwrot e in message
          news:uC4Sm3ZQHH A.4744@TK2MSFTN GP02.phx.gbl...
          Yes, I have a good understanding of what you're trying to do. The Bob
          Powell and CodeProject references were just for the purpose of general
          information about Matrices. The other 2 references are more specific, one
          of which goes well into the mathematics, and one of which provides some
          samples of C# Matrix math algorithms, although you will still have to
          create your own matrices to do the work. But it WILL involve using Matrix
          transformation, and you will have to figure out the Math.
          >
          --
          HTH,
          >
          Kevin Spencer
          Microsoft MVP
          Software Composer
          Thoughts and Ideas about programming, philosophy, science, arts, life, God, and related subjects.

          >
          The shortest distance between 2 points is a curve.
          >
          "GraGra33" <gragra33@hotma il.comwrote in message
          news:uAudhuZQHH A.2256@TK2MSFTN GP02.phx.gbl...
          >Hi...
          >>
          >Thanks for your suggestions - I've had a look at all the links mentioned.
          >Bob's and the CodeProject artile I've already looked at both and they
          >deal with rectangular regions (simple transformation) and not 4-point
          >polygons (complex transformation) .
          >>
          >I've also looked at Gimp and Paint.Net - both only deal with regions
          >(simple transformation) and don't have Photoshop's distort
          >transformati on (complex transformation) .
          >>
          >I'm trying to do 4-point polygons (complex transformation) and not
          >rectangular regions (simple transformation) . The GDI+ matrix
          >transformation s only handle rectangular regions (simple transformation)
          >as far as I can ascertain.
          >>
          >To clarify what I'm trying to do, I'll give you another example - can
          >send you a sample image if you think that you know how it's done.
          >>
          >Example: The bottom-left and top-right corners are not squared to the
          >Top-left & bottom-right corners. To square the image, the top-left and
          >bottom-right must stay anchored whilst the bottom-left must be distorted
          >towards the top and the top-right corner must be distorted to the right.
          >>
          >Be aware that no two photos are the same and each photo will require
          >different distort transformation adjustments.
          >>
          >Do you still think that your suggestion will work or do you have another
          >idea?
          >>
          >Thanks for your help in advance,
          >>
          >Graeme
          >>
          >"Kevin Spencer" <unclechutney@n othinks.comwrot e in message
          >news:e2CH2AUQH HA.1200@TK2MSFT NGP02.phx.gbl.. .
          >>Transformatio ns are all done using Matrix math. This is not going to be
          >>an easy task, because you will have to understand Matrix math to do it.
          >>Here are some articles and sample code to get you started:
          >>>
          >>http://www.bobpowell.net/transformations.htm
          >>http://www.codeproject.com/csharp/ma...sformation.asp
          >>http://www.euclideanspace.com/maths/...etic/index.htm
          >>http://www.euclideanspace.com/maths/...ion_csharp.htm
          >>>
          >>--
          >>HTH,
          >>>
          >>Kevin Spencer
          >>Microsoft MVP
          >>Software Composer
          >>http://unclechutney.blogspot.com
          >>>
          >>The shortest distance between 2 points is a curve.
          >>>
          >>"GraGra33" <gragra33@hotma il.comwrote in message
          >>news:e90GZdTQ HHA.1200@TK2MSF TNGP02.phx.gbl. ..
          >>>Hi all...
          >>>>
          >>>I have developed an application for managing a very large resource of
          >>>artist's paintings and posts them to a web site. The application works
          >>>well.
          >>>I'm trying to reduce the complexity of having to work with photoshop
          >>>and
          >>>integrate one feature into the application Distortion
          >>>Transformati ons.
          >>>>
          >>>Background Information:
          >>>>
          >>>When paintings are photographed, it's impossible to get a completely
          >>>perfect
          >>>image that requires straightening prior to cropping for a number of
          >>>rasons -
          >>>the photographer is not standing square on to the painting, the
          >>>painting is
          >>>leaning, the camera is not at the correct height, the camera causes
          >>>barrel
          >>>distortion , etc...
          >>>>
          >>>Therefore each image must be loaded into photoshop, all 4 corners
          >>>selected
          >>>using the polygonal lasso tool then manually applying a Distort
          >>>Transformati on (Edit Transform Distort) on the selected region.
          >>>>
          >>>The Problem:
          >>>>
          >>>The GDI library comes standard with several rectangular
          >>>transformati ons -
          >>>stretch, Skew, etc.. But these apply only to a perfect rectangular
          >>>region
          >>>where all points are perpendicular to each other.
          >>>>
          >>>I have no problems in selecting the non-rectangular region - this is
          >>>easy.
          >>>I'm stumped at trying to work out how to take this region and applying
          >>>the
          >>>Photoshop like Distort Transformation.
          >>>>
          >>>Anyone have any pointers?
          >>>>
          >>>Thanks in advance...
          >>>>
          >>>Graeme
          >>>>
          >>>>
          >>>
          >>>
          >>
          >>
          >
          >

          Comment

          • Kevin Spencer

            #6
            Re: Non-proportional (non Rectangular) resizing

            My point was not about GDI+ as such, but that you need to use Matrix math to
            do your transform. In fact, the DirectX library has a matrix class that has
            quite a bit of functionality built in, and is completely configurable, which
            may be useful to you, or provide you with the knowledge you need to do your
            transform. I might mention that what you need is not an affine transform,
            which does not provide distortion. What you need to understand is that a
            matrix provides a vector-based translation method, so what you need to do is
            an orthagonal transform, to change the angle of the corners of your
            rectangle. See
            http://msdn.microsoft.com/archive/de...rix/matrix.asp.

            --
            HTH,

            Kevin Spencer
            Microsoft MVP
            Software Composer
            Thoughts and Ideas about programming, philosophy, science, arts, life, God, and related subjects.


            The shortest distance between 2 points is a curve.

            "GraGra33" <gragra33@hotma il.comwrote in message
            news:ui9tO%23ZQ HHA.3460@TK2MSF TNGP03.phx.gbl. ..
            Thanks for the quick response Kevin.
            >
            I've had a good look at GDI+ and Matricies through alot of hand coding and
            all I get are simple transformations . I fail to see how GDI+ can handle
            complex transformations other than rectangular regions.
            >
            Kind Regards,
            >
            Graeme
            >
            "Kevin Spencer" <unclechutney@n othinks.comwrot e in message
            news:uC4Sm3ZQHH A.4744@TK2MSFTN GP02.phx.gbl...
            >Yes, I have a good understanding of what you're trying to do. The Bob
            >Powell and CodeProject references were just for the purpose of general
            >information about Matrices. The other 2 references are more specific, one
            >of which goes well into the mathematics, and one of which provides some
            >samples of C# Matrix math algorithms, although you will still have to
            >create your own matrices to do the work. But it WILL involve using Matrix
            >transformation , and you will have to figure out the Math.
            >>
            >--
            >HTH,
            >>
            >Kevin Spencer
            >Microsoft MVP
            >Software Composer
            >http://unclechutney.blogspot.com
            >>
            >The shortest distance between 2 points is a curve.
            >>
            >"GraGra33" <gragra33@hotma il.comwrote in message
            >news:uAudhuZQH HA.2256@TK2MSFT NGP02.phx.gbl.. .
            >>Hi...
            >>>
            >>Thanks for your suggestions - I've had a look at all the links
            >>mentioned. Bob's and the CodeProject artile I've already looked at both
            >>and they deal with rectangular regions (simple transformation) and not
            >>4-point polygons (complex transformation) .
            >>>
            >>I've also looked at Gimp and Paint.Net - both only deal with regions
            >>(simple transformation) and don't have Photoshop's distort
            >>transformatio n (complex transformation) .
            >>>
            >>I'm trying to do 4-point polygons (complex transformation) and not
            >>rectangular regions (simple transformation) . The GDI+ matrix
            >>transformatio ns only handle rectangular regions (simple transformation)
            >>as far as I can ascertain.
            >>>
            >>To clarify what I'm trying to do, I'll give you another example - can
            >>send you a sample image if you think that you know how it's done.
            >>>
            >>Example: The bottom-left and top-right corners are not squared to the
            >>Top-left & bottom-right corners. To square the image, the top-left and
            >>bottom-right must stay anchored whilst the bottom-left must be distorted
            >>towards the top and the top-right corner must be distorted to the right.
            >>>
            >>Be aware that no two photos are the same and each photo will require
            >>different distort transformation adjustments.
            >>>
            >>Do you still think that your suggestion will work or do you have another
            >>idea?
            >>>
            >>Thanks for your help in advance,
            >>>
            >>Graeme
            >>>
            >>"Kevin Spencer" <unclechutney@n othinks.comwrot e in message
            >>news:e2CH2AUQ HHA.1200@TK2MSF TNGP02.phx.gbl. ..
            >>>Transformati ons are all done using Matrix math. This is not going to be
            >>>an easy task, because you will have to understand Matrix math to do it.
            >>>Here are some articles and sample code to get you started:
            >>>>
            >>>http://www.bobpowell.net/transformations.htm
            >>>http://www.codeproject.com/csharp/ma...sformation.asp
            >>>http://www.euclideanspace.com/maths/...etic/index.htm
            >>>http://www.euclideanspace.com/maths/...ion_csharp.htm
            >>>>
            >>>--
            >>>HTH,
            >>>>
            >>>Kevin Spencer
            >>>Microsoft MVP
            >>>Software Composer
            >>>http://unclechutney.blogspot.com
            >>>>
            >>>The shortest distance between 2 points is a curve.
            >>>>
            >>>"GraGra33" <gragra33@hotma il.comwrote in message
            >>>news:e90GZdT QHHA.1200@TK2MS FTNGP02.phx.gbl ...
            >>>>Hi all...
            >>>>>
            >>>>I have developed an application for managing a very large resource of
            >>>>artist's paintings and posts them to a web site. The application works
            >>>>well.
            >>>>I'm trying to reduce the complexity of having to work with photoshop
            >>>>and
            >>>>integrate one feature into the application Distortion
            >>>>Transformat ions.
            >>>>>
            >>>>Backgroun d Information:
            >>>>>
            >>>>When paintings are photographed, it's impossible to get a completely
            >>>>perfect
            >>>>image that requires straightening prior to cropping for a number of
            >>>>rasons -
            >>>>the photographer is not standing square on to the painting, the
            >>>>painting is
            >>>>leaning, the camera is not at the correct height, the camera causes
            >>>>barrel
            >>>>distortio n, etc...
            >>>>>
            >>>>Therefore each image must be loaded into photoshop, all 4 corners
            >>>>selected
            >>>>using the polygonal lasso tool then manually applying a Distort
            >>>>Transformat ion (Edit Transform Distort) on the selected region.
            >>>>>
            >>>>The Problem:
            >>>>>
            >>>>The GDI library comes standard with several rectangular
            >>>>transformat ions -
            >>>>stretch, Skew, etc.. But these apply only to a perfect rectangular
            >>>>region
            >>>>where all points are perpendicular to each other.
            >>>>>
            >>>>I have no problems in selecting the non-rectangular region - this is
            >>>>easy.
            >>>>I'm stumped at trying to work out how to take this region and applying
            >>>>the
            >>>>Photoshop like Distort Transformation.
            >>>>>
            >>>>Anyone have any pointers?
            >>>>>
            >>>>Thanks in advance...
            >>>>>
            >>>>Graeme
            >>>>>
            >>>>>
            >>>>
            >>>>
            >>>
            >>>
            >>
            >>
            >
            >

            Comment

            Working...