• ベストアンサー

ソースを教えてください。

今卒論を制作しているのですが、 急遽プログラミングを使うことになりました。 これまで全く手を付けていなかった分野のため大変困っています。 私の行っている作業としては、 写真をピクセルごとにRGB値をだしていくというものなのですが、 白(R=255 G=255 B=255)となった場合はデータとして出力しない、 省く、除くとしたいのです。 たぶん以下のようなIf文になるとおもうのですが、 If R=255 and G=255 and B=255 then thenのあとの出力しない、省く、除くとはどのような ソースとなるのでしょうか? まだプログラムに関して未熟なので、用語の使い方に 誤りなどがあったかもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

全ビット255のみを白と扱っているようですが、 255,255,254は白とはいわないのでしょうか?? 写真の画像解析だと全ビット255の白というのも極小でしかありません。 普通白とはRGB値で240以上のものを指します。 一部放送などではこれ以上の点は一律にカットされてしまいます。 よってプログラムは if R>240 and G>240 and B>240 then ~ とされるのが望ましい。 上記の場合、何も処理しないのですから普通はネストを抜ける処理、 例えばExit subだとか、Exit For、 あるいはGotoを使って好きな場所にとばすのが一般的だと思います。 (Gotoの多用は忌み嫌われるので避けること)

yduakiishi
質問者

お礼

回答ありがとうございます。 数値の点に関してまで指摘いただいて 本当にありがとうございます。 言語もつかわせてもらいます。

yduakiishi
質問者

補足

gungnir7さんに教えていただきたいのですが、 普通白とはRGB値で240以上のものを指すというのは どこの情報なのでしょうか? 色のことで研究をしているので情報源が分かるので あればいろいろ調べたいのですが。 例えば黒の場合の領域など。 ほかの方でも分かる方がいらっしゃったら、 質問の趣旨からはずれるのですがよろしくお願いします。

その他の回答 (3)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.4

回答が出揃っているようなので蛇足として読んでください。 条件によっては記述を変えると難しくなる場合があります。 そのような場合、 if 条件 then <何も書かない> else <ここに処理> endif と書いたり、 if !(条件) then  <処理> endif とするのがいいと思います。

yduakiishi
質問者

お礼

このような書き方も出来るんですね。 参考になります。 ありがとうございます。

noname#77845
noname#77845
回答No.2

#1の方が示した方法 if R < 255 and G < 255 and B < 255 then データ出力 だと、RGBの内一つでも255だったら出力しません。 一つでも255未満だったら「白」じゃないので if R < 255 or G < 255 or B < 255 then データ出力 の方が良いかと…。

yduakiishi
質問者

お礼

指摘ありがとうございます。 orとandを理解したいと思います。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

使用言語が分かりませんが ご質問のような調子で書くなら if R < 255 and G < 255 and B < 255 then データ出力 というように、条件を反転させるほうが分かりやすいと思います。

yduakiishi
質問者

お礼

反転させたほうが確かに分かりやすいです。 ありがとうございます。

関連するQ&A