13.2. GEOMETRIC OPERATIONS
199
the result of displacing the input image up and to the left. The lower left
hand corner shows the result of displacing the input image down and to the
right (x
displace
and y
displace
are negative values such as -10). The lower right
hand corner shows displacement up and to the right.
Figure 13.2: Examples of Displacement
Note that when any operator moves an image, blank areas ll in the
vacant places.
Figure 13.3 shows stretching. The upper left hand corner is the input.
The upper right hand corner is the result of stretching the input image in
both directions (set x
stretch
and y
stretch
to 2.0). The lower left hand corner
is the result of stretching the input image with values less than 1.0. This
causes shrinking. The lower right hand corner shows how to combine these
eects to enlarge the image in the horizontal direction and shrink it in the
vertical direction.
Figure 13.4showsrotation. Theupperleft hand corner is theinputimage.
The other areas show the result of rotating the input image by pinning down
the upper left hand corner (the origin). The other areas show rotations of 
=30, 45, and 60 degrees.
Figure 13.5shows thein uence ofthecross product terms x
cross
and y
cross
.
Setting these terms to anything but 0.0 introduces non-linearities (curves).
This is because equations (13.1) and (13.2) multiply the terms by both x and
Pdf password reset - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert password protected pdf to normal pdf online; create pdf password
Pdf password reset - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert protected pdf to word online; password pdf
200
CHAPTER 13. GEOMETRIC OPERATIONS
Figure 13.3: Examples of Stretching
Figure 13.4: Examples of Rotation about the Origin
C# Word - Render Word to Other Images
Used to register all DLL assemblies. WorkRegistry.Reset(); // Load a Word file. String assemblies. WorkRegistry.Reset(); // Load a Word file.
copy text from protected pdf; convert protected pdf to word
C# powerpoint - Render PowerPoint to Other Images
Used to register all DLL assemblies. WorkRegistry.Reset(); // Load a PowerPoint file. WorkRegistry.Reset(); // Load a PowerPoint file.
convert password protected pdf to normal pdf; add password to pdf file with reader
13.2. GEOMETRIC OPERATIONS
201
y. The input image is on the left side of Figure 13.5 with the output shown
on the right (x
cross
and y
cross
=0.01). Values much bigger than this distort
the output image to almost nothing.
Figure 13.5: Examples of Cross Products
Using higher order terms in equations (13.1) and (13.2) can cause greater
distortion to the input. You can add a third order term to equation (13.1)
(x x y  x
doublecross
)and equation (13.2) (y  y  x  y
doublecross
). Try this for
homework. It will be easy given the source code.
Figure 13.6 shows the result of using all four operations at once. This is
the result of displacing down and to the right, enlarging in both directions,
rotating 30 degrees, and using cross products. It is a simple matter of setting
the terms in the equations.
Listing 13.1 shows the geometry routine that implements these opera-
tions. It has the same form as the other image processing operators in this
series. The parameters are from equations (13.1) and (13.2). First, geometry
converts the input angle theta from degrees to radians and calculates the sine
and cosine. The next section prepares the stretch terms to prevent dividing
by zero.
The loops over i and j move through the input image. All the math uses
doubles to preserve accuracy. new
iand new
j are the coordinates of the
pixels in the input image to copy to the output image.
The nal section of geometry sets the output image to the new points
in the input image. If bilinear == 1, we will call the bi-linear interpolation
function described below. If bilinear == 0, we set the output image directly.
Encode, Decode JPEG2000 Images in Web Image Viewer | Online
Select "Save Reset" to reset to the default values; We are dedicated to provide powerful & profession imaging controls, PDF document, image to pdf files and
adding a password to a pdf using reader; pdf password online
Encode, Decode JPEG2000 Images in .NET Winforms | Online Tutorials
Decoder to the default values; Click "Save Reset" to save reset values; We are dedicated to provide powerful & profession imaging controls, PDF document, image
break pdf password; pdf password remover online
202
CHAPTER 13. GEOMETRIC OPERATIONS
Figure 13.6: Combining All Four Geometric Operations
The compound if statement checks if the new points are inside the image
array. If they are not, set the out
image to the FILL value (this lls in
vacant areas).
13.3 Rotation About Any Point
The geometric operations above can rotate an image, but only about the
origin (upper left hand corner). Another type of rotation allows any point
(m, n) in the image to be the center of rotation. Equations (13.3) and
(13.4) describe this operation [13.2]. Figure 13.7 illustrates how the input
image (the rectangle) revolves about the point (m, n). Figure 13.8 shows
several examples. The upper left hand corner is the input image. The other
three quadrants show 45 degree rotations about dierent points in the image.
Almost anything is possible by combining the basic geometric operations
shown earlier with this type of rotation. For example, you can displace and
stretch an image using the earlier operations and rotate that result about
any point.
X= x  cos()   y  sin()   m  cos(theta) +n  sin() +m
(13.3)
VB.NET Image: JPEG 2000 Codec for Image Encoding and Decoding in
Integrate PDF, Tiff, Word compression add-on with JPEG 2000 codec easily in VB.NET; Reset JPEG 2000 Codec in VB.NET Application. RasterEdge image JPEG 2000 codec
pdf protection remover; password on pdf
C# Image: C# Code to Encode & Decode JBIG2 Images in RasterEdge .
Using C# Code. The following C# example code shows how to reset and customize SDK library also supports compressing and decompressing of Word & PDF documents as
convert password protected pdf to excel online; add password to pdf file without acrobat
13.4. BI-LINEAR INTERPOLATION
203
Y = y  cos()+ x sin()   m  sin(theta)  n  sin()+ n
(13.4)
Figure 13.7: Rotation About any Point m,n
Listing 13.1 next shows the routine arotate that performs rotation about
any point (m, n). arotate converts the angle of rotation from degrees to
radians and calculates the sine and cosine. It loops through the image and
calculates the new coordinates tmpx and tmpy using equations (13.3) and
(13.4). If bilinear == 1, use bi-linear interpolation (coming up next). If
bilinear == 0, check to see if the new coordinates are in the image array. If
the are, set the output image to those points in the input image.
13.4 Bi-Linear Interpolation
Now that we havesome basics behind us, let’s move forward. Critical tomak-
ing the results of any of the operations look good is bi-linear interpolation.
Bi-linear interpolation is present in any good image processing applications
performed today in commercials, music videos, and movies. As usual, bi-
linear interpolation is a big name for a common sense idea. It lls in holes
with gray levels that make sense [13.3] [13.4].
C# Convert: PDF to Word: How to Convert Adobe PDF to Microsoft
WorkRegistry.Reset(); // Define input and output files path. String inputFilePath = @"**pdf"; String outputFilePath = @"**docx"; // Convert PDF to Word.
reader save pdf with password; open password protected pdf
C# PDF Convert: How to Convert Tiff Image to PDF File
WorkRegistry.Reset(); // Define input and output files path. String inputFilePath = @"**tif"; String outputFilePath = @"**pdf"; // Convert Tiff to PDF and
break pdf password online; protected pdf
204
CHAPTER 13. GEOMETRIC OPERATIONS
Figure 13.8: Examples of Rotation About Any Point
The bent lines in Figure 13.9 show why bi-linear interpolation is impor-
tant. The left side did not use bi-linear interpolation. It has jagged lines.
The smooth bent lines in the right side illustrate how bi-linear interpolation
makes things look so much better.
There is a reason for the jagged lines. In many geometric operations,
the resulting pixel lies somewhere between pixels. A pixel’s new coordinates
could be x=25.38 and y=47.83. Which gray level is assigned to that pixel?
Rounding o suggests x=25 and y=48. (That is what happens in the code
listings when the parameter bilinear== 0.) Roundingo producesthe jagged
lines.
Bi-linear interpolation removes jagged lines by nding a gray level be-
tween pixels. Interpolation nds values between pixels in one direction (inter-
polating 2/3’s of the way between 1 and 10 returns 7). Bi-linear interpolation
nds values between pixels in two directions, hence the prex \ bi."
Figure 13.10 illustrates how to perform bi-linear interpolation. Point P3
(x, y) is somewhere between the pixels at the four corners. The four corners
are at integer pixels (x=25, x=26, y=47, y=48). Equations (13.5), (13.6),
and (13.7) nd a good gray level for point P3. In these equations, x and
yare fractions (if x=25.38 and y=47.83, then in the equations x=0.38 and
y=0.83).
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
ZoomOut: Decrease current zoom percentage of C#.NET WinViewer. FitWidth, FitHeight, ShowOneToOne: Reset size of the currently displayed PDF document page.
adding a password to a pdf file; pdf file password
How to C#: Convert PDF, Excel, PPT to Word
to PDF; VB.NET Protect: Add Password to PDF; Output.docx"; // Load a PDF document. WorkRegistry.Reset(); String inputFilePath = Program.RootPath + "\\" 1.pptx
create copy protected pdf; password protected pdf
13.4. BI-LINEAR INTERPOLATION
205
Figure 13.9: A Comparison of Not Using Bi-Linear Interpolation and Using
Bi-Linear Interpolation
gray(P1) = (1 x)gray(floor(x);floor(y))+xgray(ceiling(x);floor(y))
(13.5)
gray(P2) = (1 x)gray(floor(x);ceiling(y))+xgray(ceiling(x);ceiling(y))
(13.6)
gray(P3) = (1  y) gray(P1) +y  gray(P2)
(13.7)
Equation (13.5) nds the gray level of point P1 by interpolating between
the two upper corners. Equation (13.6) nds the gray level of point P2 by
interpolating between the two lower corners. Equation (13.7) nally nds
the gray level of P3 by interpolating between points P1 and P2.
Listing 13.1 shows the routine bilinear
interpolate that implements these
equations. The input parameters are the image array the
image and the
point (x, y) (in their full form x=25.38 and y=47.83). bilinear
interpolate
returns the gray level for (x, y). This routine contains slow, double precision
oating point math. This is the trade-o between techniques | speed verses
good looks.
This rst part of bilinear
interpolatechecks ifx and y are inside the image
array. If not, the routine returns a FILL value. The next statements create
the  oor x and y, ceiling x and y, fractional parts of x and y, and one minus
206
CHAPTER 13. GEOMETRIC OPERATIONS
Figure 13.10: Bi-Linear Interpolation
the fractions shown in the gure and needed by the equations. The nal
statements calculate the gray levels of points P1, P2, and P3. The routine
returns the nal gray level of P3.
Bi-linear interpolation is a simple idea, uses a simple routine, and makes
aworld of dierence in the output image. The images shown earlier for ge-
ometric operations all used the bi-linear option. I recommend the rounding
method for quick experiments and bi-linear interpolation for nal presenta-
tions.
13.5 An Application Program
Listing 13.2 shows the geometry program. This program allows the user to
either perform the geometric operations of gure 13.1 or the rotation about
a point of gure 13.7. geometry interprets the command line, loads the
parameters depending on the desired operation, and calls the operations. It
has the same form as the other applications in this text.
13.6. A STRETCHING PROGRAM
207
13.6 A Stretching Program
Auseful utility for image processing is enlarging and shrinking an entire im-
age. The many uses include making an image t a display screen for printing
or imaging and making two images about the same size for comparisons.
The stretching and bi-linear interpolation tools now available permit general
stretching.
The main routine and subroutines shown in listing 13.3 make up the
stretch program. The command line is:
stretch input-image-le output-image-le x-stretch y- stretch bilinear
Ifthebilinearparameteris 1, stretch uses bi-linear interpolation otherwise
it uses basic rounding.
stretch has the same form as most applications in this text. It uses the
create
resized
image
le because the output le and input le have dierent
sizes. The main routine allocates the image arrays (dierent sizes), reads
the input, calls the stretch subroutine, and writes the output. The stretch
subroutine borrows heavily from the geometry subroutine shown in listing
13.1.
Figure 13.11 shows results of the stretch program. It demonstrates how
stretch can enlarge in one direction while shrinking in another. The more
you experiment with image processing, the more you will nd yourself using
stretch. It is very handy.
Figure 13.11: The Boy Image Enlarged Horizontally and Shrunk Vertically
208
CHAPTER 13. GEOMETRIC OPERATIONS
13.7 Conclusions
This chapter discussed geometric operations. These powerful and  exible
operations change the relationships, size, and shape of objects in images.
They allow you to manipulate images for better display, comparison, etc.
Keep them handy in your collection of tools.
13.8 References
13.1 \Digital Image Processing," Kenneth R. Castleman, Prentice-Hall, 1979.
13.2 \Mathematical Elements for Computer Graphics," David F. Rogers, J.
Alan Adams, McGraw-Hill, New York, New York, 1976.
13.3 \The Image Processing Handbook, Third Edition," John C. Russ, CRC
Press, 1999.
13.4. \Modern Image Processing," Christopher Watkins, Alberto Sadun,
Stephen Marenka, Academic Press, Cambridge, Mass., 1993.
Documents you may be interested
Documents you may be interested