ここから本文です

scilabの画像処理についてです

kk0804aaさん

2015/12/216:27:11

scilabの画像処理についてです

scilabで100px×120pxの画像を2値化するにあたり,閾値として輝度値の最頻値を求めたいのですが,どのようにプログラムを書けばよいのでしょうか・・・?

各ピクセルでのR,G,Bの値を求めて変換式で輝度値に変換するプログラムを全ピクセルに対して行い,最頻値を求めるという筋書きなのですが,ご教授願います

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
580
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

qgsjs452さん

2015/12/518:22:24

Scilabでかいてみました。
Scilab5.5.2を使いました。SIVPを使っています。
SIVPはATOMSで事前にインストールしてください。



//画像を読み込み
img01=imread(pathconvert(getSIVPpath()) + "images" + filesep() + "lena.png");


//グレースケールに変換
img01 = rgb2gray(img01);

//画像を表示
imshow(img01);

//ヒストグラムを計算
[count, cells]=imhist(img01);

//ヒストグラムをプロット
scf(0);clf;
plot(cells,count);

//最頻値を計算
[maxcount,maxpos]=max(count);

//最頻値をコンソールにプロット
printf("最頻値:%d カウント:%d",cells(maxpos),maxcount);



ちなみに、rgb2grayは下記の式で計算しているとhelpにありました。
G = 0.299*R + 0.587*G + 0.114*B.

Scilabでかいてみました。
Scilab5.5.2を使いました。SIVPを使っています。...

質問した人からのコメント

2015/12/6 02:26:55

うまくできました!
ありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

2015/12/222:56:07

scilabはいじってないのですが、検索すると
http://seesaawiki.jp/w/h_yoshiaki/d/Scilab%A4%C7%B2%E8%C1%FC%BD%E8%...
あたりとかいろいろ書いてありますね。OpenCVを取り込んだみたいなのでモノクロへの変換も二値化の閾値選定も関数一発でやってはくれそうですが、練習として自分でやりたいのなら、

輝度はいろいろ係数に説はありますけれど(人間の感覚の話なので)ざっくり緑6赤3青1で混ぜとけばそこそこの白黒画像になります。各色255段階とすれば
(G*6+R*3+B)/10
これを輝度としてR/G/Bに同じ値で入れればいいんじゃないかしら。

ヒストグラムは、多分サイズ256の配列を作って、ピクセルを全部サーチして一つづつの画素の輝度を添字として配列の要素を+1して、全部終わったら一番大きな値を探す、ということでなんとかなるでしょう。
画素が
255 255 128 64 129 255 ...
と並んでいたら、ヒストグラム用の配列hist[256]について
hist[255]を+1
hist[255]を+1
hist[128]を+1
hist[64]を+1
hist[129]を+1
hist[255]を+1
...
としていけば各輝度ごとのピクセルの数がわかりますよね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。