• ベストアンサー

2枚の画像間の色ヒストグラム距離の計算方法について

2枚の画像間のカラーヒストグラム距離の計算方法で悩んでおります。 今2枚の画像があって、カラーヒストグラムを求めます。2つのヒストグラムを各ビンごとに比較して距離を計算すると、例えば青一色の画像と水色一色の画像の距離と青一色の画像と赤一色の画像の距離は等しくなってしまいます。普通の感覚と同じように、前者の距離の方が後者の距離より近くなるような計算方法はありませんでしょうか? 距離というのは画像間距離です。 よろしくお願い致します。

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

  • ベストアンサー
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

一旦RGB値をLabやLuvといったものに変換してから距離を計算するというのは?

amiamiamino
質問者

お礼

回答ありがとうございます。 そもそもRGBで考えないということですね。 それらの色空間に詳しくないので一度勉強してみます。

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

今は  (R1-R2)+(G1-G2)+(B1-B2) といった感じで計算しているということでしょうか。 これならいかがですか?  Sqrt((R1-R2)^2+(G1-G2)^2+(B1-B2)^2)

amiamiamino
質問者

お礼

回答ありがとうございます。 ユークリッド距離ということですか・・・ 参考にします。

関連するQ&A

  • PhotoShopで黒いロゴの色を変える

    こんにちは DVDのMyラベルの作成等でDVDの各ロゴをラベルの色に合わせて変更したいのです。 元の画像がPhotoShopでしか開けないものなので、このソフトでなければいけません。バージョンは7.0を使っています。 他の質問の回答にあるような「色の置き換え」ですと、元の色が黒なので色相を変更してもカラーはかわらず、明度を変えてちょっと明るくなる程度で、黄色や青などにかえることはできません。 全部一色の黒を別の1カラーに変えるだけなので比較的簡単にできるかと思いきや、苦戦しています。 この「色の置き換え」で、黒系の色からでも赤や黄色等に変更したりもできるのでしょうか、また他の方法でもかまいませんので、黒い文字を他の色に変更する方法がありましたら教えてください。 よろしくお願い致します。

  • 写真・画像の色の置き換え方法

    こんにちは。画像の色の置き換えの方法について教えてください。 お客様から貰ったロゴ(画質の悪いチラシ)をスキャナで読み込んで HP用に加工しなくてはならないのですが 頂いたロゴは背景色が赤で、お客様のHPカラーのご希望はグリーンです。 たとえば、背景色つきのロゴ(jpg形式)を加工する場合、背景の色を赤からグリーンに変えたいとします。(ロゴは青だとします。) ほとんどの赤の部分はPhotoshopのイメージ→色調補正→色の置き換えで グリーンに変換できると思うのですが、 ロゴにアンチエイリアスがかかって、赤と青が混ざったような色の部分 (ロゴの周りと言えばいいんでしょうか)の色も自然な感じで グリーンと青が混ざったように簡単に加工する方法はありますか? やぱり、色の置き換えでこつこつと変換していくしかないのでしょうか? この方法だと、ロゴとは関係ない他の部分に同じ色があった場合 その色も変換されてしまいます。 そうなるとまた、他の部分の変わってしまった色を元に戻すのもやっかいです。 画像が綺麗に加工できなくて困っています。 どなたかお知恵を貸していただけないでしょうか? よろしくお願いしますm(._.)m

  • 画像容量の計算方法が分かりません

    画像容量の計算方法が分かりません。 例えば ・800×600ピクセル、24ビットカラー画像の容量 ・256×256ピクセル、256段階グレースケール画像の容量 などは、どのように考えれば良いのでしょうか?

  • 画像からヒストグラムを作りたいのですが

    画像からヒストグラムを計算し、それをグラフにしてあらわしたいと思っています。プログラムは以下のようなところまでできており、TextFieldにファイル名を入力し、EnterkeyもしくはOpenを押すと左下にその画像が表示されるところまでできています。 Startを押すと、その画像のRGBヒストグラムを計算し、赤、緑、青各色のグラフを三つ右下に表示したいのですがGraphicsの使い方や、BufferedImageの使い方がわからず四苦八苦しております。ヒストグラムをしては横区間を16としてやりたいと思っております。自分なりにはヒストグラム値を16で割り、その数値をもとにGraphicsオブジェクトに与えてそれをもとに描写するという方向で作成していましたがわたくしには難しく頓挫してしまいました。どうぞよろしくお願いいたします。 /*ここからソース*/ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.imageio.*; import java.io.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { public static class ActionB1 implements ActionListener { JTextField input; JLabel pict1; JFrame frame2; public ActionB1(JTextField input0,JLabel pict10,JFrame A0){ input =input0; pict1=pict10; frame2 = A0; } public void actionPerformed(ActionEvent e){ if(getClass().getResource(input.getText())==null){ pict1.setText("file not found!!!"); } else { ImageIcon temp =new ImageIcon(getClass().getResource(input.getText())); pict1.setIcon(temp); } pict1.repaint(); } } public static class ActionB2 implements ActionListener{ JLabel pict2; JTextField input; JFrame frame3; public ActionB2(JTextField input0,JLabel pict20,JFrame A0){ input =input0; pict2=pict20; frame3=A0; } public void actionPerformed(ActionEvent e){ File filename = new File(input.getText()); BufferedImage Image = null; try { Image = ImageIO.read(filename); } catch (IOException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } //ここからわかりません } public static void main(String[] args){ JFrame frame =new JFrame("タイトル"); frame.setSize(600,400); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JButton b1 =new JButton("OPEN"),b2=new JButton("START"); JTextField t1 = new JTextField(30); p1.add(t1); p1.add(b1); p1.add(b2); b1.setBounds(350,10,100,20); b2.setBounds(460,10,100,20); t1.setBounds(110,10,230,20); p1.setBounds(20,10,80,20); frame.getContentPane().add(b1); frame.getContentPane().add(b2); frame.getContentPane().add(t1); frame.getContentPane().add(p1); p2.setLayout(new GridLayout(1,2)); JLabel pict1= new JLabel(),pict2= new JLabel(); p2.add(pict1); p2.add(pict2); ActionB1 actB1 = new ActionB1(t1,pict1,frame); ActionB2 actB2 = new ActionB2(t1,pict2,frame); b1.addActionListener(actB1); b2.addActionListener(actB2); t1.addActionListener(actB1); frame.getContentPane().add(p1,BorderLayout.NORTH); frame.getContentPane().add(p2,BorderLayout.CENTER); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

    • ベストアンサー
    • Java
  • 画像計算で疑問があります

    画像計算で疑問があります 画像の計算方法自体は過去の質問やら別サイトなどで確認しております 同じ画像でも表示形式やらなんやらでサイズが違っていたり 画像の容量が、画像の計算方法使っても合わないです 例えばペイントソフトで64×64のサイズに一色(例えば黒)一点をつけただけの画像をbmp形式で作成します すると5174バイトのサイズになります (他の描画ソフトで作っても同じになりました) ですが画像の計算をすると64×64の時点で計算すると4096にもなってしまい、何バイト掛けようがサイズの計算が合わなくなってしまうように思われます また全く同じ物なのにjpgにすると軽くなり718バイトになったりして サイズの計算とは別になってしまいました もし色々な画像のサイズが計算できるのなら知りたいので 解るかた教えて下さい また画像の計算について何か専門的な分野があるのなら それの名称等も良ければ教えて下さい

  • 描画するときの画像の色を変えたい

    こんにちは。 html5でcanvasに画像を描画しているのですが、この時に画像の色調を変える方法はありますでしょうか? 画像はアルファ付きのpngで、周囲が透明の白い図形です。 この図形を例えば青っぽく描画したり、赤っぽく描画したりしたいのですが、javascriptで可能でしょうか?

  • Pixus860iでカラーに黒い線が

    機種はPIXUS860iです。 年賀状印刷をしようと、試し印刷をしたところ、カラーの部分にそったように黒いかすれた線が印刷されます。 他のパターンをいんさつしてみたところ、おそらく文字(もしくは文字画像)だけにできるようです。 色は赤一色や緑一色、青一色...と、どうやらはっきりめの一色ものにつくようです。 これはどうすれば直るのでしょうか? クリーニングは何回もしたのですが直らず、結局ヘッドを直接拭きましたが直りません。 ヘッド自動調整も何度もしました。

  • またまたワインの蒸留で・・・

    すみません・・・。またまた質問させていただきます(^^; ワインの蒸留で85℃以前のものと、85℃以上のものの液体を取りました。前者は淡い赤色で火をつけてみたら燃え尽きるのが早かったです。後者は無色で火をつけると青っぽく燃えました。この二つの液体はいったいなんなんでしょう??そして分解した水はいったいどこへ・・・?? わからないことだらけなんで教えてください・・・

  • リストの行頭に画像を使う方法について

    こんにちは。nekotoraと申します。 CSSを使用して、リストの行頭に画像を表示させる方法を2つ試しました。 以下、スタイルシートの部分です。 ul.kajo {list-style-image:url(images/list04.gif); vertical-align:middle;} li.ban {list-style-type:none; padding-left:22px; background-image: url(images/list04.gif); background-repeat: no-repeat;} 前者の結果は、画像と文字の距離を変更することが できないようです。 後者の結果は、画像と文字の距離を変更できますが、 左側にマージンを設定したように引っ込んでしまい ます。 前者のように表示して、画像と文字の距離を変更 することは可能でしょうか? どうぞよろしくお願い申し上げます。

  • RGBの色を混ぜるとは計算上どうなるのですか?

    池谷裕二さんのHPで自己組織化マップSOM の説明がわかりやすく書いてあります。 http://gaya.jp/spiking_neuron/som.htm そこで、同じ手順で自己組織化のシミュレーションをプログラミングしたのですが、 沢山のマス目の一つを選択してその周辺の8個のマス目を新しく作った色に   「そのマスの周囲にも、少しだけ■を混ぜてやる。」 これが具体的にどんな計算なのかが分からずうまく自己組織化しません。HPの例から 画像ソフトに貼り付けてRGBを読むと  染める色(紺色)       染められる色          結果の色 (R000 G000  B153) + (R000 G016  B255) =(R000 G009  B255)  青っぽいマス  (R000 G000  B153) + (R164 G255  B000) =(R105 G255  B150)  緑っぽいマス (R000 G000  B153) + (R255 G013  B000) =(R161 G255  B000)  赤っぽいマス (R000 G000  B153) + (R052 G255  B203) =(R000 G184  B255)  水色っぽいマス とこんな計算結果らしいのです。アルゴリズムが読めませんのであれこれ試してみました。 一色の強さ0~255までという限度がありますから単純に足すとたいがいの場合、RGBどの色かがオーバーフローします。それを単純にはみ出ただけ足切りしてもだめ。(上記の計算結果もそうなっていません)傾向が反映されたらとRGBを定数で割り算して加えると盤面全体がグレーに限りなく近づいてしまいます。 何とか自然に自己組織化するところがもっと多いマスで見たいのですが、「マス目にちょっと絵の具を垂らす。」ことをどのように計算式で表すのか、、、、ご存じの方、教えていただけませんか。

専門家に質問してみよう