⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch29.htm

📁 《Perl 5 Unreleased》
💻 HTM
📖 第 1 页 / 共 4 页
字号:
items in $y<BR>

107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return undef if ($ct1 !=

$ct2) ;<BR>

108<BR>

109&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0;$i&lt;$ct1;$i++)

{<BR>

110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sum += $$x[$i] * $$y[$i];

<BR>

111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $sum;<BR>

113 }<BR>

114<BR>

115 # ------------------------------------------------------------

<BR>

116 # Returns an array that is the cross product of two vectors.

<BR>

117 # ------------------------------------------------------------

<BR>

118 sub xProduct {&nbsp;&nbsp;# (\@\@); Declare as taking two

pointers to arrays<BR>

119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($x,$y) = @_;<BR>

120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @array;<BR>

121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $result = \@array;<BR>

122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $i, $j;<BR>

123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $ct1 = $#{$x} + 1;&nbsp;&nbsp;&nbsp;#

items in $x<BR>

124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $ct2 = $#{$y} + 1;&nbsp;&nbsp;&nbsp;#

items in $y<BR>

125<BR>

126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0;$i&lt;$ct1;$i++)

{<BR>

127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for

($j=0;$j&lt;$ct2;$j++) {<BR>

128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$result[$i][$j]

= $$x[$i] * $$y[$i];<BR>

129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#

print &quot; $i, $j, $$result[$i][$j] \n&quot;;<BR>

130&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

<BR>

131&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return @array;<BR>

133 }</FONT></TT>

</BLOCKQUOTE>

<HR>

<H2><A NAME="UsingMatrices"><B><FONT SIZE=5 COLOR=#FF0000>Using

Matrices</FONT></B></A></H2>

<P>

Just like with vectors, you can use Perl references on matrices.

As an example of developing code for a prototype, this section

covers the following items:

<UL>

<LI><FONT COLOR=#000000>Reading an ASCII PBM file</FONT>

<LI><FONT COLOR=#000000>Collecting histogram information to show

work with matrices in Perl</FONT>

<LI><FONT COLOR=#000000>Applying a 3</FONT><FONT FACE="Symbol">&#165;</FONT>3

convolution smoothing filter on the image

<LI><FONT COLOR=#000000>Writing a resulting ASCII PBM file</FONT>

</UL>

<P>

This section covers the image shown in Figure 29.1. The image

is a black-and-white cartoon, but the techniques you'll learn

here can be applied to color images as well. Listing 29.5 contains

the complete code for developing the images shown in Figures 29.2

and 29.3.

<P>

<A HREF="f29-1.gif" tppabs="http://www.mcp.com/815097600/0-672/0-672-30891-6/f29-1.gif" ><B>Figure 29.1 : </B><I>The unfiltered image.</I></A>

<HR>

<BLOCKQUOTE>

<B>Listing 29.5. The complete listing for reading and writing

PBM files.<BR>

</B>

</BLOCKQUOTE>

<BLOCKQUOTE>

<TT><FONT FACE="Courier">&nbsp;&nbsp;1 #!/usr/bin/perl<BR>

&nbsp;&nbsp;2<BR>

&nbsp;&nbsp;3 #-------------------------------------------------------

<BR>

&nbsp;&nbsp;4 #&nbsp;&nbsp;&nbsp;&nbsp;Read and write ASCII PPM

files<BR>

&nbsp;&nbsp;5 #-------------------------------------------------------

<BR>

&nbsp;&nbsp;6 # Author: Kamran Husain&nbsp;&nbsp;4.4.96<BR>

&nbsp;&nbsp;7 # NO WARRANTIES WHATSOEVER APPLY HERE!! Copy freely,

use<BR>

&nbsp;&nbsp;8 # at will, with no restrictions.<BR>

&nbsp;&nbsp;9 #-------------------------------------------------------

<BR>

&nbsp;10 use Getopt::Long;<BR>

&nbsp;11 GetOptions('out=s');<BR>

&nbsp;12<BR>

&nbsp;13 open (TEXT,&quot;pirate.ppm&quot;) || die &quot;\n Cannot

open $!\n&quot;;<BR>

&nbsp;14 @image = ();<BR>

&nbsp;15 @hist = ();<BR>

&nbsp;16 ($wd, $ht, @image) =&nbsp;&nbsp;&amp;readImage;<BR>

&nbsp;17 close &lt;TEXT&gt;;<BR>

&nbsp;18<BR>

&nbsp;19 print &quot;@image &quot;;<BR>

&nbsp;20 @hist = &amp;getHistogram($ht,$wd,@image);<BR>

&nbsp;21<BR>

&nbsp;22 $ctr = 0;<BR>

&nbsp;23 $hi = $#hist + 1;<BR>

&nbsp;24<BR>

&nbsp;25 # ------------------------------------------------------

<BR>

&nbsp;26 # Display histogram of image in memory<BR>

&nbsp;27 # ------------------------------------------------------

<BR>

&nbsp;28 print &quot;Histogram of image\n&quot;;<BR>

&nbsp;29 for ($i = 0; $i &lt; $hi; $i++) {<BR>

&nbsp;30 if ($hist[$i] != 0) {<BR>

&nbsp;31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf &quot;[%3d]

= %5d &quot;, $i, $hist[$i] ; $ctr++;<BR>

&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if

($ctr &gt;= 5) {<BR>

&nbsp;33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ctr

= 0;<BR>

&nbsp;34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print

&quot;\n&quot;<BR>

&nbsp;35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

<BR>

&nbsp;36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

&nbsp;37 }<BR>

&nbsp;38<BR>

&nbsp;39 # ------------------------------------------------------

<BR>

&nbsp;40 #&nbsp;&nbsp;&nbsp;Write to disk as unfiltered.<BR>

&nbsp;41 # ------------------------------------------------------

<BR>

&nbsp;42 @convolve = ( 0.1, 0.1, 0.1,<BR>

&nbsp;43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.1, 0.1,

0.1,<BR>

&nbsp;44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.1, 0.1,

0.1);<BR>

&nbsp;45 print &quot;\n Filter 1 applied&quot;;<BR>

&nbsp;46 &amp;applyFilter3($wd,$ht,\@convolve,\@image);<BR>

&nbsp;47 &amp;dumpImage ('filt1.ppm', $wd, $ht);<BR>

&nbsp;48<BR>

&nbsp;49 @convolve = ( 0.1, 0.0, 0.1,<BR>

&nbsp;50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0, 0.5,

0.0,<BR>

&nbsp;51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.1, 0.0,

0.1);<BR>

&nbsp;52 print &quot;\n Filter 2 applied&quot;;<BR>

&nbsp;53 &amp;applyFilter3($wd,$ht,\@convolve,\@image);<BR>

&nbsp;54<BR>

&nbsp;55 &amp;dumpImage ('filt2.ppm', $wd, $ht);<BR>

&nbsp;56<BR>

&nbsp;57 exit(0);<BR>

&nbsp;58<BR>

&nbsp;59 # ------------------------------------------------------

<BR>

&nbsp;60 #&nbsp;&nbsp;&nbsp;&nbsp;Dump PPM file to disk given

file name,<BR>

&nbsp;61 #&nbsp;&nbsp;&nbsp;&nbsp;ht and width of image<BR>

&nbsp;62 # ------------------------------------------------------

<BR>

&nbsp;63 sub dumpImage {<BR>

&nbsp;64<BR>

&nbsp;65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $fname = shift

@_;<BR>

&nbsp;66&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $wd = shift @_;

<BR>

&nbsp;67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $ht = shift @_;

<BR>

&nbsp;68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $i,$j,$k,$v;<BR>

&nbsp;69<BR>

&nbsp;70 print &quot;\n Writing file $fname $wd by $ht&quot;;

<BR>

&nbsp;71<BR>

&nbsp;72 open (OUTPUT,&quot;&gt;$fname&quot;) || die &quot;Cannot

open $fname $! &quot;;<BR>

&nbsp;73 select OUTPUT;<BR>

&nbsp;74 print &quot;P3\n&quot;;<BR>

&nbsp;75 print &quot;# Test output\n&quot;;<BR>

&nbsp;76 print &quot;$wd $ht\n&quot;;<BR>

&nbsp;77 print &quot;255\n&quot;;<BR>

&nbsp;78<BR>

&nbsp;79 $count = 0;<BR>

&nbsp;80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i&lt;$ht;$i++)

{<BR>

&nbsp;81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=0;$j&lt;$wd;$j++)

{<BR>

&nbsp;82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$v

= $$image[$i][$j];<BR>

&nbsp;83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf

&quot;%3d %3d %3d &quot;, $v,$v,$v;<BR>

&nbsp;84&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$count++;

<BR>

&nbsp;85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if

(($count % 5) == 0) {<BR>

&nbsp;86&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$count

= 0;<BR>

&nbsp;87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print

&quot;\n&quot;;}<BR>

&nbsp;88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

<BR>

&nbsp;89&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

&nbsp;90 close OUTPUT;<BR>

&nbsp;91 select STDOUT;<BR>

&nbsp;92 }<BR>

&nbsp;93<BR>

&nbsp;94<BR>

&nbsp;95 # ------------------------------------------------------

<BR>

&nbsp;96 #&nbsp;&nbsp;&nbsp;&nbsp;Read PPM file from disk given

file name,<BR>

&nbsp;97 #&nbsp;&nbsp;&nbsp;&nbsp;Return b/w version back along

with ht and width of<BR>

&nbsp;98 #&nbsp;&nbsp;&nbsp;&nbsp;image.<BR>

&nbsp;99 # ------------------------------------------------------

<BR>

100 sub readImage { # (\@) for image data;<BR>

101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @image;<BR>

102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $result = \@image;<BR>

103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $format = &lt;TEXT&gt;;

<BR>

104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $comment = &lt;TEXT&gt;;

<BR>

105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a = &lt;TEXT&gt;;<BR>

106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chop $a;<BR>

107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ($cols, $rows) =

split(' ',$a);<BR>

108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local $colors = &lt;TEXT&gt;;

<BR>

109&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $row = 0;<BR>

110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $col = 0;<BR>

111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $a;<BR>

112<BR>

113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rows = int($rows);<BR>

114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cols = int($cols);<BR>

115<BR>

116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ($a = &lt;TEXT&gt;)

{<BR>

117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chop $a;<BR>

118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@words = split(' ',$a);

<BR>

119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$count = $#words;<BR>

120<BR>

121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (@words) {<BR>

122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($r,$g,$b)

= splice(@words,0,3);<BR>

123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$row][$col]

= ($r+$g+$b)/3;<BR>

124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col++;

<BR>

125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($col

&gt;= $cols) { $row++; $col = 0 }<BR>

126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

128&nbsp;&nbsp;&nbsp;&nbsp;return ($cols,$rows,@image);<BR>

129&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

130<BR>

131<BR>

132 # ------------------------------------------------------<BR>

133 #&nbsp;&nbsp;&nbsp;&nbsp;Calculate histogram of up to 256

colors in<BR>

134 #&nbsp;&nbsp;&nbsp;&nbsp;the passed image bytes.<BR>

135 # ------------------------------------------------------<BR>

136 sub getHistogram {<BR>

137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($rows,$cols,$img) =

@_;<BR>

138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @image = @$img;<BR>

139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @refered = ();<BR>

140&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $hst = \@refered;<BR>

141<BR>

142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $i,$j,$k;<BR>

143<BR>

144&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i&lt;$rows;$i++)

{<BR>

145&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

for($j=0;$j&lt;$cols;$j++) {<BR>

146&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$k

= $$image[$i][$j];<BR>

147&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$hst[$k]

+= 1;<BR>

148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

<BR>

149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (@refered);<BR>

151 }<BR>

152<BR>

153<BR>

154 # ------------------------------------------------------<BR>

155 #&nbsp;&nbsp;&nbsp;&nbsp;Apply 3x3 filter to the image<BR>

156 #&nbsp;&nbsp;&nbsp;&nbsp;Return resulting image.<BR>

157 # ------------------------------------------------------<BR>

158 sub applyFilter3 {<BR>

159&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($rows,$cols,$convolve,$img)

= @_;<BR>

160&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @fir = @$convolve;<BR>

161&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @image = @$img;<BR>

162&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $i,$j,$k,$v;<BR>

163<BR>

164&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;\n

Filter: $rows X $cols &quot;;<BR>

165&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i&lt;9;$i++)

{<BR>

166&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&nbsp;&nbsp;&nbsp;&quot;\[

$fir[$i] \]&quot;;<BR>

167&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>

168&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=1;$i&lt;$rows -1;$i++)

{<BR>

169&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=1;$j&lt;$cols

- 1;$j++) {<BR>

170&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$k

=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i-1][$j-1] * $fir[0] +

<BR>

171&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i][$j-1]&nbsp;&nbsp;&nbsp;*

$fir[1] +<BR>

172&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i+1][$j-1]

* $fir[2] +<BR>

173&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i-1][$j]&nbsp;&nbsp;&nbsp;*

$fir[3] +<BR>

174&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i][$j]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*

$fir[4] +<BR>

175&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i+1][$j]&nbsp;&nbsp;&nbsp;*

$fir[5] +<BR>

176&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i-1][$j+1]&nbsp;*

$fir[6] +<BR>

177&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i][$j+1]&nbsp;&nbsp;&nbsp;*

$fir[7] +<BR>

178&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$$image[$i+1][$j+1]

* $fir[8];<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -