MATLAB Answers

画像の読み取りと輝度値の分散について

35 views (last 30 days)
添付の画像をMATLABで読み取り、線加工された部分の輝度値の分散を計算したいのですが、どのようにすればいいのでしょうか?

  2 Comments

Kei Otsuka
Kei Otsuka on 17 Sep 2018
"線加工された部分"がどこかを明示することはできますか?
画像を見ると十字に線が入っているように見えますが、、どこまでの範囲を
線と定義するかによって、分散の値が大きく変わりそうです。
Taiki Murakawa
Taiki Murakawa on 20 Sep 2018
コメントありがとうございます。
十字の部分の輝度値の分散を求めるつもりです。 今の所、線加工を中心として30*30pixelに画像を切り取り、分散値を算出する予定です。

Sign in to comment.

Accepted Answer

Etsuo Maeda
Etsuo Maeda on 20 Sep 2018
画像の雰囲気からすると、Siチップにレーザー系のツールで線加工をしたものでしょうか。 画像の汚れからすると、光学顕微鏡を使って観察をしたように見えます。 私の予想が当たっている場合は、対物レンズ専用の用紙と洗浄液で掃除してあげてください。 もし、走査型電子顕微鏡で観察しているならば、サンプルロード前にエアを吹くなどして表面をきれいにしておきましょう。
画像の読み取りにはimread関数を使うことが出来ます。
A = imread('sample.bmp');
生成されるAはRGBの情報を含んでいるようです。 観察に使ったカメラの設定を変えればグレースケールの情報が出力されるはずですので、ご検討ください。
次に輝度値についてです。 一般に輝度はある方向からみた単位面積あたりの明るさとして定義されます。 カメラの設定、スケールが全く不明の状態ですから、厳密性を無視して極々簡単に単位面積当たりの画像の明るさを輝度とするならば、読み込んだAがそのまま輝度の分布となります。
B = rgb2gray(A);
としてグレースケール変換してからプロットをすると、下記のようになります。
h = surf(B);
h.EdgeColor = 'none';
線加工された部分の定義が難しいようでしたら、このプロットからご自身で条件を付けてみましょう。 なお、分散についてはvar関数などが準備されています。
HTH

  4 Comments

Show 1 older comment
Etsuo Maeda
Etsuo Maeda on 20 Sep 2018
エラーメッセージからすると、imread関数を実行した場所にsample.bmpが存在していないようです。もし、別の場所にある場合は、
A = imread('C:\MyFiles\sample.bmp')
のように、ファイルパスも指定する必要があります。MATLABに限らず、完全にプログラミング初心者ということであれば、MATLABの基礎コース【無料】の受講をおすすめします。(文面だけで説明するのはかなり難しいですので・・・)
また、私の手元で確認した限り、輝度の高い場所が画像中心からずれているようです。試料の水平や、光学顕微鏡のコンデンサレンズの調整もしておいた方がいいと思います。
HTH
Taiki Murakawa
Taiki Murakawa on 20 Sep 2018
返答ありがとうございます。
プログラミング初心者なので、基礎コースの方で勉強してきます。
画像がずれてるのは、私のトリミングでのミスです。
ご教授ありがとうございました。
Etsuo Maeda
Etsuo Maeda on 20 Sep 2018
お返事ありがとうございます。基礎コースを終了されれば、私のコードもすぐに理解できると思います。また疑問点がありましたら、MATLAB Answersでご質問ください。

Sign in to comment.

More Answers (0)

Sign in to answer this question.