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

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

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

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

統計

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

Q&A

4回答

2350閲覧

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

horumonitame

総合スコア11

アルゴリズム

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

統計

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

0グッド

2クリップ

投稿2017/01/26 16:46

編集2017/01/27 04:48

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

例えば、画素値が 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枚目の画像と比較して濃淡の分布が濃すぎるまたは薄すぎると判断しようと考えている。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

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

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

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

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

投稿2017/01/30 19:07

Victorian-Vat

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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]


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

投稿2017/01/27 05:43

編集2017/01/27 05:49
Kapustin

総合スコア1186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

値自体は全て違いますが、濃淡の分布における、対応点同士の比較では等しい濃淡の分布だと評価したいです。
しかし、画素値が1,2,3,4 となる画像と 3,4,5,7 からなる画像があったとすると、

2枚の画像を比較すると、4番目の画素については濃さが違うので修正が必要だと解釈できるように比較方法を探しています。

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

投稿2017/01/27 05:17

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horumonitame

2017/01/27 05:35

回答ありがとうございます。 >>単純に、左から順に差分値を算出して、比較すれば良いのでは? そうした場合、上に書きましたが、 例えば、画素値が 1,2,3,4 となる画像と 3,4,5,6 からなる画像があったとして、 それぞれ左から順番に対応していたとします。 このとき、値自体は全て違いますが、濃淡の分布における、対応点同士の比較では等しい濃淡の分布だと評価したいです ⇒この要件を満たさなくなっていしまいます。 このような単純な例なら、2枚目の画像に対し全画素値に対して2ずつ引き、2枚目の画像を変換したのち、1枚目の画像との比較を行えば、濃淡の比較ができますが、 2枚の画像の濃淡の分布が異なる場合は、この方法を適応することができなくなってしまいます。 (引き算をするにしても一体何の値を引くのか分からなくなる)
t_obara

2017/01/27 06:15

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

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 01:04

Kapustin

総合スコア1186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horumonitame

2017/01/27 01:43

回答ありがとうございます。 >>こちらの意味がよくわからなかったのですが… 分かりにくくてすみません。 ケース2についてですが、 濃淡の分布的には、つまり正規化した値では等しいと判断できるけれど変化の度合いが異なる場合、 変化の度合いが大きい 1⇒3⇒5⇒7 画素値が2ずつの変化 変化の度合いが小さい 1⇒2⇒3⇒4 画素値が1ずつ変化 の場合 2枚目の画像について 画素1と画素2は、もっと値を小さく変更しなければならない(薄いので、もっと濃くする) 画素3と画素4は、もっと値を大きく変更しなければならない(濃いので、もっと薄くする) という結果になるように2枚の画像を比較したいということです。 ケース2で正規化した結果の差分をとってしまうと画素1つ1つについて0になってしまうので 正しく濃淡の判定ができなくて、困っています。
Kapustin

2017/01/27 02:18

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

2017/01/27 04: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枚目と比べて濃すぎるか、薄すぎるかを判断する必要があります。
WoodenHamlet

2017/02/02 02:53 編集

ちょっと複雑で、図や画像が欲しいところです。 正規化という話なら、画素の総和が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)] とする方法です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問