質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • アルゴリズム

    408questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • 統計

    52questions

    統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

2枚の画像の濃淡具合を比較する方法

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 655

horumonitame

score 3

二枚の画像を用意し、その画像の濃淡の度合いについて、各画素単位で比較を行いたいと考えています。

例えば、画素値が  1,2,3,4 となる画像と 3,4,5,6 からなる画像があったとして、
それぞれ左から順番に対応していたとします。

このとき、値自体は全て違いますが、濃淡の分布における、対応点同士の比較では等しい濃淡の分布だと評価したいです。

しかし、画素値が1,2,3,4 となる画像と 3,4,5,7 からなる画像があったとすると、
2枚の画像を比較すると、4番目の画素については濃さが違うので修正が必要だと解釈できるように比較方法を探しています。

違うケースで言うと、
画素値が1,3,5,7となる画像と1,2,3,4となる画像があったとすると、
2枚目の画像は濃淡の変化が弱い為、 1,2,3,4 という画素値を 
1と2は 画素値が大きいので、もっと小さく修正しなければならない
3と4は 画素値が小さいので、もっと大きく修正しなければならない

というように、濃淡のコントラストが違う場合には、対応点同士の比較では、濃すぎる、薄すぎる点のピックアップをしたいです。

以上、これを実現する手法を考えているのですが、良い案が浮かびません。何か良い方法はないでしょうか。


要するに…
2枚の画像のグラデーションの変化の度合いを画素1つずつに対し評価したい。
しかし、1枚目と2枚目の同じ位置の画素同士を画素値で単純比較することができない。
なんらかの手法によって2枚目の画像の画素値に手を加えて1枚目の画像と比較できる状態にしたい。
2枚の画像の各画素値を操作した後、閾値を定義しそれを超えて1枚目の画像との対応点における画素値の差が見られた時、
その画素は、1枚目の画像と比較して濃淡の分布が濃すぎるまたは薄すぎると判断しようと考えている。

という状況です。数学やデータの比較に強い方、是非とも知恵を貸していただけないでしょうか。
よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

0

画素値が1,3,5,7となる画像と1,2,3,4となる画像があったとすると、すなわちコントラストが異なる2枚の画像に対して2枚目の画像は濃淡の変化が弱い為、前半部分2画素は、値を小さくする必要があると評価し、後半部分2画素は値を大きくする必要があると評価できる

こちらの意味がよくわからなかったのですが、おそらくそれぞれの画像値を正規化してしまうことで実現できるのではないでしょうか?(例えば、それぞれの画像の一番小さい画素の値を 0、一番大きい画素の値を 1 にしてしまう)

#ケース1
[1,2,3,4] -> [ 0.0, 0.333, 0.666, 1.0]
[3,4,5,6] -> [ 0.0, 0.333, 0.666, 1.0]

#ケース2
[1,3,5,7] -> [ 0.0, 0.333, 0.666, 1.0]
[1,2,3,4] -> [ 0.0, 0.333, 0.666, 1.0]


あとはこれらの値の差分をとった配列などを作成し、その値を見ていくことで「濃すぎる」「薄すぎる」の判断ができるかと思います。
また、対象の問題によっては、正規化の際に外れ値などを考慮する必要があるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/27 10:43

    回答ありがとうございます。
    >>こちらの意味がよくわからなかったのですが…
    分かりにくくてすみません。

    ケース2についてですが、
    濃淡の分布的には、つまり正規化した値では等しいと判断できるけれど変化の度合いが異なる場合、
    変化の度合いが大きい 1⇒3⇒5⇒7 画素値が2ずつの変化
    変化の度合いが小さい 1⇒2⇒3⇒4 画素値が1ずつ変化 の場合

    2枚目の画像について
    画素1と画素2は、もっと値を小さく変更しなければならない(薄いので、もっと濃くする)
    画素3と画素4は、もっと値を大きく変更しなければならない(濃いので、もっと薄くする)
    という結果になるように2枚の画像を比較したいということです。

    ケース2で正規化した結果の差分をとってしまうと画素1つ1つについて0になってしまうので
    正しく濃淡の判定ができなくて、困っています。

    キャンセル

  • 2017/01/27 11:18

    理解力不足ですみません。一枚目の画像 [1,3,5,7] に対して、二枚目の画像 [1,2,3,4] は具体的にどの様に変更したいのでしょうか?[0,1,4,5] の様な形にしたいのですか?

    キャンセル

  • 2017/01/27 13:45

    前提として、2枚の画像は濃淡画像(RとGとBの値が同じ画像)だとします。
    上の例ですと二枚目の画像は
    (R,G,B)=(1,1,1) (R,G,B)=(2,2,2) (R,G,B)=(3,3,3) (R,G,B)=(4,4,4)という値からなるということです。
    この二枚目の濃淡画像に、薄すぎる部分は一部青を混ぜ、濃すぎる部分は赤を混ぜて表示する予定です。
    薄すぎる場合を 5段階、濃すぎる場合を 5つの段階にそれぞれ分け、
    元は、RとGとBの値が同じ白黒の画像に対し例えば以下のような計算を行います。

    薄い部分 レベル5と判断した場合 0.0×二枚目のある画素値(R,G,B) +1.0×(0,0,255)
    薄い部分 レベル4と判断した場合 0.2×二枚目のある画素値(R,G,B) +0.8×(0,0,255)
    薄い部分 レベル3と判断した場合 0.4×二枚目のある画素値(R,G,B) +0.6×(0,0,255)
    薄い部分 レベル2と判断した場合 0.6×二枚目のある画素値(R,G,B) +0.4×(0,0,255)
    薄い部分 レベル1と判断した場合 0.8×二枚目のある画素値(R,G,B) +0.2×(0,0,255)

    こうすると、より薄いと判断された部分には青の混ざり具合が色濃く反映される、という仕組みです。

    なんらかの方法で、1枚目の画像の画素値の分布を考慮したうえで
    2枚目の画像の各点が1枚目と比べて濃すぎるか、薄すぎるかを判断する必要があります。

    キャンセル

  • 2017/02/02 11:52 編集

    ちょっと複雑で、図や画像が欲しいところです。
    正規化という話なら、画素の総和が1となる手法もありますね。そちらではどうでしょうか。
    [a b c d] -> [a/(a+b+c+d) b/(a+b+c+d) c/(a+b+c+d) d/(a+b+c+d)]
    とする方法です。

    キャンセル

0

値自体は全て違いますが、濃淡の分布における、対応点同士の比較では等しい濃淡の分布だと評価したいです。
しかし、画素値が1,2,3,4 となる画像と 3,4,5,7 からなる画像があったとすると、 
2枚の画像を比較すると、4番目の画素については濃さが違うので修正が必要だと解釈できるように比較方法を探しています。

単純に、左から順に差分値を算出して、比較すれば良いのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/27 14:35

    回答ありがとうございます。
    >>単純に、左から順に差分値を算出して、比較すれば良いのでは?

    そうした場合、上に書きましたが、
    例えば、画素値が 1,2,3,4 となる画像と 3,4,5,6 からなる画像があったとして、
    それぞれ左から順番に対応していたとします。
    このとき、値自体は全て違いますが、濃淡の分布における、対応点同士の比較では等しい濃淡の分布だと評価したいです
    ⇒この要件を満たさなくなっていしまいます。

    このような単純な例なら、2枚目の画像に対し全画素値に対して2ずつ引き、2枚目の画像を変換したのち、1枚目の画像との比較を行えば、濃淡の比較ができますが、

    2枚の画像の濃淡の分布が異なる場合は、この方法を適応することができなくなってしまいます。
    (引き算をするにしても一体何の値を引くのか分からなくなる)

    キャンセル

  • 2017/01/27 15:15

    1,2,3,4/3,4,5,6を左から引けば、1,1,1/1,1,1となりますよ。

    キャンセル

0

補足説明ありがとうございます。それでしたら正規化せず、下記の手順でどうでしょうか。

  1. 二つの画像の画素値の差分をとる
  2. 差分の中央値や平均値などにシフト
  3. 値の符号で濃淡を、絶対値で度合いを判断(適宜5段階に分ける)
 [1,2,3,4] と [3,4,5,6] の場合
  1. 差分をとる
    [1,2,3,4] - [3,4,5,6] => [-2,-2,-2,-2]
  2. 中央値(-2)にシフト
    [-2,-2,-2,-2]  => [0,0,0,0]
  3. 評価
    [0,0,0,0]
 [1,2,3,4] と [3,4,5,7] の場合
  1. 差分をとる
    [1,2,3,4] - [3,4,5,7] => [-2,-2,-2,-3]
  2. 中央値(-2)にシフト
    [-2,-2,-2,-3]  => [0,0,0,-1]
  3. 評価
    [0,0,0,-1]
 [1,3,5,7] と [1,2,3,4] の場合
  1. 差分をとる
    [1,3,5,7] - [1,2,3,4] => [0,-1,-2,-3]
  2. 中央値(-1.5)にシフト
    [0,-1,-2,-3] => [1.5,0.5,-0.5,-1.5]
  3. 評価
    [1.5,0.5,-0.5,-1.5]

シフトする値(中央値、平均値、最頻値等)によって結果に差異があるかと思いますが、問題の性質や実際に試行錯誤した結果から選択してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

独立性の検定と残差分析をやられてはいかがでしょうか?
(あまりこのようなケースを見たことが無いので適切な分析かは分かりませんが。)

独立性の検定とは、2つ以上のグループへのアンケートなどに対し、「グループの違い」によって「アンケート結果」に影響があるか(グループの違いはアンケート結果と独立な要素か)を検定するもので、例えばアンケートの回答数がグループ間で違っていても比較ができる手法です。

一方、ここで言う残差分析とは、各回答に対し、グループの違いがアンケート結果と独立であると仮定したとき、実際にその回答数が起こりうる確率(※厳密には少々違います)を評価することで、各回答に対する「独立からの乖離度」を評価することができます。

このようなものに対し、各グループのアンケートを「各画像」、各回答を「画素」、回答数を「濃度」と置き換えることで、2つの画像の比較(もちろん2つ以上の画像についても同時に評価できます)ができ、また、残差分析によって各画素についての評価もできるかと思います。

なお、ここで全てを説明するのはあまりに難しいので
参考となりそうなリンクを貼ります。
(中途半端になってしまい申し訳ありません。)
https://walking-elephant.blogspot.jp/2010/02/blog-post.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • アルゴリズム

    408questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • 統計

    52questions

    統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。