• ベストアンサー

MATLABについてです

画像処理に使うMATLABについてです。 MATLABでimagescを使って、データを画像化しました。 画像化してカラーバーを表示させました。 ここからが質問です。カラーバーの値は普通にしてたらそのデータのままの値(自分の場合、光の強度)ですが、これをログにしたいです。 カラーバーの数値をログにするにはどうしたらいいのでしょうか? 簡単にできるのか、また、imagesc以外に別の何かを使うのか。 参考書を見ても、カラーバーの数値をログにするやり方はないので、詳しい方教えて下さい。 お願いします。

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

  • ベストアンサー
  • Kules
  • ベストアンサー率47% (292/619)
回答No.3

三度Kulesです。 >colorbar とか使うのでしょうか。ネットとか見てもよくわかりません。 ええと…前回の私の回答に付けたリンク先見ました? 「 colorbar - カラー スケールを示すカラー バー 代替方法 Figure ツール バーのカラー バー ツール でプロットにカラー バーを追加するか、Figure メニューの [挿入]、[カラー バー] を使用します。 」 って書いてますよね?カラーバーの挿入ボタンを押してカラーバーを出現させるのはあくまで代替方法で、コマンドウィンドウかあるいはmファイル中でcolobar;と打ち込んでもカラーバーは出てきます。 また、同じリンク先に colorbar(...,'PropertyName',propertyvalue) という使い方が書いてある通り、関数colorbarは入力を受け付け、colorbar(…,プロパティの名前,プロパティ値,…)という形で使うことができます。 正直この辺はプロパティの操作に慣れてないとキビシイところだと思います。使いながら覚えていくしかないかと。 (特にこのあたりのグラフィックスハンドルの操作について丁寧に説明されているサイトや本は見たことがありません。私にサイトを立ち上げるスキルと時間があれば自分で作りたいぐらいなんですけどね(笑)) とりあえずだまされたと思って、figureを一通り作り終えた後に colobar('Ytick',10*log10(0.1:0.1:1));←縦長カラーバーの時 colobar('Xtick',10*log10(0.1:0.1:1));←横長カラーバーの時 と打ち込んでみて下さい。 これで思った通りのものが出なければ、その症状とともに補足願います。 参考になれば幸いです。

その他の回答 (2)

  • Kules
  • ベストアンサー率47% (292/619)
回答No.2

A No.1のKulesです。 >色と数値の対応はそのままで、カラーバーの横の数値をログにしたいです。 めんどくさい方が来ましたね(笑) そうですね、もう一つ確認させて下さい。 例えば色強度のデータが0~1で表現されているとすると、(細かいことを考えなければ)colorbarの目盛は0:0.2:1とかになっていると思います。その場合、 ・単純にそのスケールの中での常用対数値にしたい。例えば1に対応するところには0と書きたいし、0.5に対応するところには-0.3010と書きたい。 ・そのスケールの値をそのまま常用対数値に直すだけではだめ。例えば、1に対応するところには「0dB」と書きたいし、0.1に対応するところには「-10dB(-20dBかな?)」と書きたい。(dBは付けても付けなくても一緒) の二通りが考えられます。 前者の場合は、 http://www.mathworks.co.jp/help/ja_JP/techdoc/ref/colorbar.html を見るとaxes propertyの設定をそのまま使える(colorbarってaxesだって知ってましたか?visible propertyがoff(かcallback)にされているんで普段は気付かないですけどね。なんのことかわからなかったらスルーして下さい)ので、 colorbarを図の下や上(つまりバーが横長)の時はxtickを、左や右(つまりバーが縦長)の時はytickを調整してやる 例えば線形で0.1:0.1:1に目盛を打ちたい時はcolobar('Ytick',10*log10(0.1:0.1:1))とすれば所望の動作になるはずです。 後者の場合はさらにメンドクサイです。ytickとyticklabelをいじるぐらいしか有効な方法がなさそうなので。([dB]をつけなくていいというのであれば、imagescに与えるデータやaxesのClimプロパティなどをいじることで何とかなるかもですが) こちらがしたいという場合はさらに補足願います。 参考になれば幸いです。

adw8mck3
質問者

補足

imagescで画像化させて「カラーバーの挿入」を押してカラーバーを右に表示させるやり方を今までやってきました。 このカラーバーの数値をログにしたいです。 前者の単純にそのスケールの中での常用対数値にしたいです。 colorbar とか使うのでしょうか。ネットとか見てもよくわかりません。

  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

>カラーバーの数値をログにするにはどうしたらいいのでしょうか? これだと何をしたいのかイマイチはっきりしないので補足要求します。 次のうちどれをしたいのでしょうか? ・カラーバーの色と数値の対応はそのままで(例えば光強度0が青に対応し、1が赤に対応するなら0.5が緑みたいな)、カラーバーの横に書かれる数値をログにしたい。(この場合、0,0.2,0.4,0.6,0.8,1のところに目盛を振ると-Inf,-0.6090,-0.3080,-0.2219,-0.097,0のようになります) ・カラーバーの色と光強度の対数値を対応(例えば0dBが青で20dBが赤なら10dBが緑みたいな)させたい ・カラーバー上の色の帯を対数に対応させたい(例えば青は赤より幅を大きくしたい) 2つ目の場合imagescに与える色強度をlogにすればほぼ解決します。 1つ目と3つ目の場合はcolorbarのグラフィックハンドルをもらっていろいろいじれば出来ますがちょっとめんどくさいです(もっと簡単な方法もあるかも知れませんが、私は知らないです) 上記について補足願います。

adw8mck3
質問者

補足

一番最初の場合です。 色と数値の対応はそのままで、カラーバーの横の数値をログにしたいです。