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