.MCAD 304010000 1 74 151 0 .CMD FORMAT rd=d ct=10 im=i et=3 zt=15 pr=3 mass length time charge temperature tr=0 vm=0 .CMD SET ORIGIN 0 .CMD SET TOL 0.001000000000000 .CMD SET PRNCOLWIDTH 8 .CMD SET PRNPRECISION 4 .CMD PRINT_SETUP 1.200000 1.216667 1.200000 1.200000 0 .CMD HEADER_FOOTER 1 1 *empty* *empty* *empty* 0 1 *empty* *empty* *empty* .CMD HEADER_FOOTER_FONT fontID=14 family=MS^Sans^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD HEADER_FOOTER_FONT fontID=15 family=MS^Sans^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFAULT_TEXT_PARPROPS 0 0 0 .CMD DEFINE_FONTSTYLE_NAME fontID=0 name=Variables .CMD DEFINE_FONTSTYLE_NAME fontID=1 name=Constants .CMD DEFINE_FONTSTYLE_NAME fontID=2 name=Text .CMD DEFINE_FONTSTYLE_NAME fontID=4 name=User^1 .CMD DEFINE_FONTSTYLE_NAME fontID=5 name=User^2 .CMD DEFINE_FONTSTYLE_NAME fontID=6 name=User^3 .CMD DEFINE_FONTSTYLE_NAME fontID=7 name=User^4 .CMD DEFINE_FONTSTYLE_NAME fontID=8 name=User^5 .CMD DEFINE_FONTSTYLE_NAME fontID=9 name=User^6 .CMD DEFINE_FONTSTYLE_NAME fontID=10 name=User^7 .CMD DEFINE_FONTSTYLE fontID=0 family=MS^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=1 family=MS^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=2 family=MS^Sans^Serif points=12 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=4 family=MS^Sans^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=5 family=Courier points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=6 family=System points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=7 family=Script points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=8 family=Roman points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=9 family=Modern points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD DEFINE_FONTSTYLE fontID=10 family=MS^Serif points=10 bold=0 italic=0 underline=0 colrid=-1 .CMD UNITS U=1 .CMD DIMENSIONS_ANALYSIS 0 0 .CMD COLORTAB_ENTRY 0 0 0 .CMD COLORTAB_ENTRY 128 0 0 .CMD COLORTAB_ENTRY 0 128 0 .CMD COLORTAB_ENTRY 128 128 0 .CMD COLORTAB_ENTRY 0 0 128 .CMD COLORTAB_ENTRY 128 0 128 .CMD COLORTAB_ENTRY 0 128 128 .CMD COLORTAB_ENTRY 128 128 128 .CMD COLORTAB_ENTRY 192 192 192 .CMD COLORTAB_ENTRY 255 0 0 .CMD COLORTAB_ENTRY 0 255 0 .CMD COLORTAB_ENTRY 255 255 0 .CMD COLORTAB_ENTRY 0 0 255 .CMD COLORTAB_ENTRY 255 0 255 .CMD COLORTAB_ENTRY 0 255 255 .CMD COLORTAB_ENTRY 255 255 255 .TXT 3 1 122 0 0 Cg a73.000000,73.000000,160 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard {\b DCT (}{\b\i Discrete Cosine Transform}{\b )}\par \par Assume that we have an 8 x 8 block of integers which represent the \par the gray scale values (0-255) of an 8 X 8 block of pixels.\par } .EQN 16 0 124 0 0 {0:N2}NAME:8 .TXT 0 10 140 0 0 Cg a51.000000,51.000000,76 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard where {\b N1,} { \b N}{\b 2} represent the size of the array and {\b A} is the\par array of integers.} .EQN 3 -10 125 0 0 {0:N1}NAME:8 .EQN 20 0 126 0 0 {0:A}NAME:({8,8}ö100ö100ö9ö9ö9ö9ö9ö9ö100ö100ö9ö9ö9ö9ö9ö9ö100ö100ö9ö9ö9ö9ö9ö9ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100ö100) .TXT 16 0 127 0 0 Cg a73.000000,73.000000,35 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard Then the DCT transform is given by:} .EQN 4 0 128 0 0 {0:k1}NAME:0,1;7 .EQN 3 0 129 0 0 {0:k2}NAME:0,1;7 .EQN 9 0 130 0 0 ({0:B}NAME)[({0:k1}NAME,{0:k2}NAME):((0,{0:N1}NAME-1,{0:i}NAME,((0,{0:N2}NAME-1,{0:j}NAME,4*({0:A}NAME)[({0:i}NAME,{0:j}NAME)*{0:cos}NAME({0:\p}NAME*({0:k1}NAME)/(2*{0:N1}NAME)*(2*{0:i}NAME+1))*{0:cos}NAME({0:\p}NAME*({0:k2}NAME)/(2*{0:N2}NAME)*(2* {0:j}NAME+1))){64})){64}) .EQN 27 0 131 0 0 {0:B}NAME={19043}?_n_u_l_l_ .TXT 21 0 132 0 0 Cg a71.000000,71.000000,74 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard We can now eliminate any element which is less than an arbitrary value, {\b Q:}} .EQN 7 0 133 0 0 {0:Q}NAME:100 .EQN 6 0 134 1 0 ({0:C}NAME)[({0:k1}NAME,{0:k2}NAME):(({0:floor}NAME(({0:B}NAME)[({0:k1}NAME,{0:k2}NAME))){73}(({0:B}NAME)[(({0:k1}NAME,{0:k2}NAME))>{0:Q}NAME)){71}((0){73}(({0:B}NAME)[({0:k1}NAME,{0:k2}NAME)ó{0:Q}NAME)) .EQN 25 0 135 0 0 {0:C}NAME={19043}?_n_u_l_l_ .TXT 25 0 136 0 0 Cg a71.000000,71.000000,109 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard Alternatively, we can divide each element by an arbitrary quantization factor {\b Q}, and take the integer result:} .EQN 9 0 137 0 0 ({0:D}NAME)[({0:k1}NAME,{0:k2}NAME):{0:floor}NAME((({0:B}NAME)[({0:k1}NAME,{0:k2}NAME))/({0:Q}NAME)) .EQN 17 0 138 0 0 {0:D}NAME={0}?_n_u_l_l_ .TXT 18 1 141 0 0 Cg a72.000000,72.000000,134 {\rtf\ansi \deff0{\colortbl;\red0\green0\blue128;}{\fonttbl{\f0 \fcharset0\fnil MS Sans Serif;}}\plain\cf1\fs24 \pard Alternatively we can define a {\i quantization table} and divide our matrix by it. The following matrix has been defined by the JPEG group:} .EQN 20 5 148 0 0 {0:Q}NAME:({8,8}ö64ö32ö32ö32ö16ö16ö16ö16ö32ö32ö16ö16ö16ö8ö8ö8ö32ö16ö16ö16ö16ö4ö4ö4ö16ö16ö16ö8ö8ö4ö4ö1ö16ö8ö8ö8ö8ö2ö1ö1ö8ö8ö8ö8ö8ö1ö1ö1ö8ö8ö8ö8ö8ö1ö1ö1ö8ö4ö4ö4ö2ö1ö1ö1)*100 .EQN 23 -1 149 0 0 ({0:E}NAME)[({0:k1}NAME,{0:k2}NAME):{0:floor}NAME((({0:B}NAME)[({0:k1}NAME,{0:k2}NAME))/(({0:Q}NAME)[({0:k1}NAME,{0:k2}NAME))) .EQN 19 1 151 0 0 {0:E}NAME={19043}?_n_u_l_l_