画像を読み込んで白黒かカラーかを判別する方法

このQ&Aのポイント
  • 画像を読み込んで白黒かカラーかを判別する方法について教えてください。
  • ファイルのフォーマットはカラー(24or32Bit)で、黄ばんだ紙をスキャナで取り込んだ画像も白黒または準白黒(単一色)としたいです。
  • 単純に画素(RGB)の最大/最小との差が閾値以内の場合を灰色とし、そうでないものをカラーとして判別できる方法をご教授ください。
回答を見る
  • ベストアンサー

画像を読み込んで白黒かカラーかを判別するには?

読み込んだ画像が白黒かカラーかを判別する方法をご教授下さい。 要件としましては、 ・ファイルのフォーマットとしてはどちらもカラー(24or32Bit) ・黄ばんだ紙をスキャナで取り込んだ画像も白黒、または準白黒(単一色?)としたい 単純に考えたところ、画素(RGB)の最大/最小との差が閾値以内の場合は灰色とし、そうでないものはカラーとしたりと考えました。 ですが、これだと黄ばんだ紙に対応できないように思えます。 環境は以下になります。 ・Windows7,XP ・VisualStudio2005 ・.Net framework 2.0 ・OpenCVSharp(OpenCVの.NETラッパ) 以上です。 よろしくお願い致します。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

色空間をRGBからYCrCb,HSV等の「明るさ+色」のものに変換して、色のばらつきで判定するのはどうでしょうか。 http://opencv.jp/opencv-2.2/c/imgproc_miscellaneous_image_transformations.html#cvtcolor

kani81
質問者

お礼

回答ありがとうございます。 アドバイス頂いた内容から、 cvCvtColorを用いてHSV系に変換し、 cvAvgSdvを用いてHSV各要素の標準偏差を算出してみました。 そうしたところ、手持ちのイメージで試した限りですが、 彩度(S)が大体以下のようになりました。   カラー:単色の多いもので約40~50。通常そうに見えるもので80以上、100オーバー。   白黒 :20前後。   黄ばみ:20~30前後。※あまりサンプルなかったのでそれなりですが これから、30~40あたりを閾値にすることで判定できそうです。 ありがとうございました。

その他の回答 (2)

  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.3

3次元空間にプロットしたときに一直線に並んでいたら白黒と判断するのが良いと思います。 たぶん、1つの直線に乗ると仮定して最小二乗法を使うと直線の式が出ますので、各ピクセルについてそれとの距離を測り、その距離の最大値かなにか代表的な値を1つ求め、それがある基準値に収まれば白黒と判断、というアルゴリズムが思いつきます。

kani81
質問者

お礼

回答ありがとうございます。 画像処理そのものや数学の知識はあまりないもので、 回答を有効活用できず申し訳ありません。

回答No.2

あらかじめ、黄ばんでない紙の色をデータとして保存しておき、 その色と比較しないと、 「黄色い紙」との区別が付かないと思います。 人間が黄ばみとして判断しているのは、「『他の』紙の色」と比較しているためだと思います。 人間は記憶ですが、コンピューターは記録(データをファイルに保存)ですね。

kani81
質問者

お礼

回答ありがとうございました。 私の質問としては、 人間が白黒(黄ばみ含む)とカラーを判断していることを、 コンピュータ上の画像情報から判断するため、 どういったデータを画像情報から抽出し、 どのように比較すればよいかを知りたかったのです。 説明が足らず、申し訳ありませんでした。

関連するQ&A

  • 白黒画像をカラーに変更後、保存できない

    http://www.kotaro269.com/articles/30125.html フォトショップで、↑この方法(単に画像にレイヤーで色をつける方法)で白黒画像に色をつけましたが、レイヤーと背景を統合しようとすると白黒に戻ってしまいます。 カラーのまま統合、保存するにはどうしたらよいでしょうか? この方法では無理まのでしょうか? よろしくお願いいたします。

  • イラストレーター グラデーションが白黒になってしまいます

    イラストにグラデーションを着色したいのですが・・・ 選択ツールで着色したい部分をクリックして、カラーバレットの[塗り]ボックスをクリックして(黄色にしました)、グラデーションパレットの[グラデーションの塗り]ボックスをクリックしました。 しかし、グラデーション着色した部分がカラー(黄色)のグラデーションにならず白黒のグラデーションになってしまいます。 カラーバレットのメニューは「RGB」になっています。 どうすればカラーのグラデーションが出来るのでしょうか?

  • なぜ白黒画像の色調整はできないのですか?

    ペイントソフトで白黒画像の色調整はできません。 白黒画像を例えば青っぽくしたいという場合、レイヤーをもう一枚作り、オーバーレイなどした後に統合するしかありません。 RGB情報がそもそもないからでしょうか?

  • デジカメのカラー画像はどうやって作られるのですか。

    デジカメのカラー画像はどうやって作られるのですか。 知っている方は教えてください。 本によると、CCDの表面に色の三原色であるRGBのカラーフィルムが貼ってあります。光がCCDに入ると、まずRGBに分かれてメモリに覚えられます。その後、同じようなRGBカラーフィルムのある液晶画面に出力するそうです。 それで、RGBは1ドットとなり、カラーになると書いていますが、どうもRGBは重なっていないようです。 1ドットの中にあるRGBは重なっていないのにどうしてカラーにできるのですか。

  • 画像の白黒表示

    Visual C++6.0でjpgなどのカラーの画像を白黒にして 保存したいのですが、どうすればよいでしょうか? 日本語プログラミング言語「なでしこ」でソースを 組んでみたのですが、やはりインタプリタなので 速いとは言えず290x350の画像で30分程度かかってしまいます。 なでしこでは 画像を表示してその表示されている色を取得して RGBの形式にし、それを下のURLを参考に (r*30 + g*59 + b*11)/100しています。 VCでjpgなどを処理するにはどうすればよいでしょうか? http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-039.html

  • iphoneでの画像フィルター処理

    お世話になっております。 インスタグラムみたいな画像処理をiphoneで行えるよう、objective-cにて コーディングをしようと思っているのですが、カラーのヒストグラムを調整できるフレームワークとかはありますでしょうか。 最初「Core Image」を使用しようかと思ったのですが、IOS5からの実装ということで断念。 次にOpenCVを使用して行おうと思い「OpenCVプログラミングブック」を参考にコーディングをしていたところ、白黒しか対応していないようです。 なにか、iphone IOS4に対応している「明度」「コントラスト」「露出」「彩度」の変更を可能にするフレームワークや手段はありませんでしょうか。 何卒宜しくお願いします。

  • ペイントによる白黒反転

    Windowsのアクセサリに標準で添付されているペイントで、カラー画像を白黒反転させたい。 以前は、メニューバー→変形→色の反転でカラー画像が白黒の画像に出来ていたと思うのですが、現在は「変形→色の反転」がグレイになって操作が出来ません。 ペイントでカラー画像を白黒にする方法を教えてください。

  • カラーで表示されないのはなぜ?

    スキャナで読み込んだイラストを,ペイントで色づけしているのですが,カラーで表示されずに白黒で画面表示されます。色の反転ではありません。青や黄色で色づけしても,すべて白黒です。なんとかカラーで表示させられないでしょうか?どなたか教えていただけますか?

  • jpg グレー画像を jpg RGB画像に変えたい

    Photoshop Elements 7です。添付イラストの枠を青に、象を黄色にしたのですが jpg@ 122%(グレー/8) となっていて白黒しか反応しません。 これをRGB画像にする方法を 教えてください。よろしくお願いいたします。

  • GeForce6200a TV画像が白黒です

    GeForce6200a TV画像が白黒です TV Wooooに黄色・赤・緑の3本線で接続してみたのですが白黒でしか写りません。 やはりこのコードでは白黒しか無理なのでしょうか? あまり詳しくないのでできるだけ専門用語なしでお願いします

専門家に質問してみよう