473,386 Members | 1,606 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

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
Jan 26 '07 #1
5 1268
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:

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" <gr******@hotmail.comwrote in message
news:e9**************@TK2MSFTNGP02.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


Jan 26 '07 #2
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" <un**********@nothinks.comwrote in message
news:e2**************@TK2MSFTNGP02.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:

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" <gr******@hotmail.comwrote in message
news:e9**************@TK2MSFTNGP02.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



Jan 26 '07 #3
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" <gr******@hotmail.comwrote in message
news:uA**************@TK2MSFTNGP02.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" <un**********@nothinks.comwrote in message
news:e2**************@TK2MSFTNGP02.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:

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" <gr******@hotmail.comwrote in message
news:e9**************@TK2MSFTNGP02.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




Jan 26 '07 #4
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" <un**********@nothinks.comwrote in message
news:uC**************@TK2MSFTNGP02.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" <gr******@hotmail.comwrote in message
news:uA**************@TK2MSFTNGP02.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" <un**********@nothinks.comwrote in message
news:e2**************@TK2MSFTNGP02.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:

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" <gr******@hotmail.comwrote in message
news:e9**************@TK2MSFTNGP02.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




Jan 26 '07 #5
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
http://unclechutney.blogspot.com

The shortest distance between 2 points is a curve.

"GraGra33" <gr******@hotmail.comwrote in message
news:ui****************@TK2MSFTNGP03.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" <un**********@nothinks.comwrote in message
news:uC**************@TK2MSFTNGP02.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" <gr******@hotmail.comwrote in message
news:uA**************@TK2MSFTNGP02.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" <un**********@nothinks.comwrote in message
news:e2**************@TK2MSFTNGP02.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:

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" <gr******@hotmail.comwrote in message
news:e9**************@TK2MSFTNGP02.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
>
>




Jan 29 '07 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Arvinder Channey | last post by:
Hello Sir!, i could not find any information on how to make a non-rectangular Frame in JAVA swings.For that i think one has to write own new Frame container,then how to do this?.. If anybody...
2
by: Grzesiek | last post by:
Hello Is it possible to rotate a non-rectangular region ? Rectangular regions, created by CreateRectRgn can be rotated using ExtCreateRegion, but how do the same thing with regions created by ...
1
by: Tony Reynolds | last post by:
Hi I'm working on a project with a non-rectangular form. I found that if in the form constructor I define a region, say GraphicsPath p = new GraphicsPath() p.AddEllipse(20, 20, 200, 200)...
5
by: dln | last post by:
Could someone point me to a good reference point (books, websites, etc...) that will show me how to create non-rectangular Windows forms using C# (although I could probably figure things out if the...
5
by: Tiraman | last post by:
Hi, i have some questions about non-rectangular forms 1) i build a form as a non-rectangular by setting the form background to some bmp file and the transparenceyKey to the color which i want...
2
by: Just close your eyes and see | last post by:
hi all I was making a non rectangular form in C# using a bitmap with a white background and set the transparency key property of the form to white and it works but when I color quality from the...
3
by: dsvagelj | last post by:
Hi. I wanted to create a non rectangular form (Winamp, BSPlayer), and I followed the instructions in MSDN on the topic. Created a bitmap, set the background color of the bitmap to blue 0000ff, set...
5
by: GraGra33 | last post by:
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...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.