c 03/10/17版 c 適当な3色だけで描かれた画像の中の、それぞれの色の部分の面積比 c などを求める。 c 例えば木橋の写真で、木部材の橋全体に占める割合や c 木橋の全景に占める割合を求める場合は、まず、 c 橋の部分を切り出して背景白の画像に貼り付け、 c 木部材の部分を赤一色で塗りつぶし、その他の部材を黒一色で c 塗りつぶした画像を ppm のアスキー形式で保存したものを c senyuu < hoge.ppm c のように入力する。 c ---------------------------------------- c 但し、プログラムのデータ入力部分は、 c ppmファイルの各行のデータの個数がどういうふうになっているかに c 応じて、書き換えなければならない。 c 以下は、横のピクセル数が6の倍数になっている画像(600*400とか)を c Paint Shop Pro 8 ( http://paintshoppro.jp/ ) c で、ppm 形式に保存したファイルからの読み込みに対応させた例 c program senyuu implicit real*8 (a-h, o-z) dimension rgb3(2880000) character p3*2 read(*,100) p3 100 format(a2) write(*,*) ' マジックナンバー:',p3 read(*,*) m,n write(*,*) ' 幅:',m write(*,*) ' 高さ:',n mn=m*n read(*,*) max write(*,*) ' 最大値:',max mn6=mn/6-1 do i=0,mn6 read(*,*) (rgb3(18*i+j),j=1,18) end do c moku=0 nhoka=0 nzenbu=0 c do i=1,mn nr=rgb3(3*i-2) ng=rgb3(3*i-1) nb=rgb3(3*i) c 木部材のRGB階調値を指定 if((nr.eq.150).and.(ng.eq.0).and.(nb.eq.0)) then moku=moku+1 end if c その他部材のRGB階調値を指定 if((nr.eq.0).and.(ng.eq.0).and.(nb.eq.0)) then nhoka=nhoka+1 end if end do c write(*,*) ' 全ピクセル数:',mn write(*,*) ' 木部材ピクセル数:',moku write(*,*) ' その他部材ピクセル数:',nhoka nhasi=moku+nhoka write(*,200) ' 木部材/橋全体:',real(moku)/real(nhasi) write(*,200) ' 橋/全景:',real(nhasi)/real(mn) 200 format(a, f5.3) end c