#------------------------------------------------------------------------
#
# Copyright (c) 1997-1998 by Cornell University.
#
# See the file "license.txt" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
#------------------------------------------------------------------------
package require DvmBasic
package require DvmByteGeom
package require DvmPnm
source ../lib/pnmlib.tcl
if {$argc != 2} {
puts "enter input pgm filename :"
set inname [gets stdin]
puts "enter output pgm filename :"
set outname [gets stdin]
} else {
set inname [lindex $argv 0]
set outname [lindex $argv 1]
}
#puts [format "homo transform %s into %s" $inname $outname]
# change the target dimension here
# the image will be transformed to a trapezoid with
# top = w2, bottom = w2-20, height = h2
# four points are respectively (0,0), (w2, 0), (w2-50, h2), (50,h2)
set w2 [expr 200]
set h2 [expr 100]
set hdrbuf [read_pgm $inname]
set hdr [lindex $hdrbuf 0]
set buf [lindex $hdrbuf 1]
set w [pnm_hdr_get_width $hdr]
set h [pnm_hdr_get_height $hdr]
set l [byte_homo_compute_matrix $w $h $w2 0 [expr $w2-50] $h2 50 $h2]
set a [lindex $l 0]
set b [lindex $l 1]
set d [lindex $l 2]
set e [lindex $l 3]
set m [lindex $l 4]
set n [lindex $l 5]
set newbuf [byte_new $w2 $h2]
byte_set $newbuf 0
byte_homo $buf $newbuf $a $b 0 $d $e 0 $m $n 1
pnm_hdr_set_width $hdr $w2
pnm_hdr_set_height $hdr $h2
write_pgm $hdr $newbuf $outname
byte_free $newbuf
byte_free $buf
pnm_hdr_free $hdr