ここから本文です

MATLABで二値化をするプログラムを教えてください。 画像読み込みはimreadを使う...

kou********さん

2013/5/2310:02:21

MATLABで二値化をするプログラムを教えてください。
画像読み込みはimreadを使うのですが
モノクロ化はrgb2grayは使わずに

[X,map]=imread('4.2.04.tiff'); %画像読み込み

[H.W.C]=size(X);

Y=zeros(H,W);
for i=1:H
for j=1:W
Y(i,j)=floor((X(i,j,1)+X(i,j,2)+X(i,j,3))/3);
end
end
imshow(Y);

このような感じでrgb2grayの中身をプログラムで行いたいです。
このプログラムはもらい物をうつしたものですが中身がほとんど理解できていません。
このプログラムもかなり間違っていると思うし
プログラムについてあまり詳しくないのでなるべく初心者向け説明をお願いします。

閲覧数:
2,202
回答数:
1

違反報告

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

ona********さん

2013/5/2323:16:54

rgb2grayの中身を行うも何も、
http://www.mathworks.co.jp/jp/help/images/ref/rgb2gray.html?searchH...
にはrgb2grayのアルゴリズムが
0.2989 * R + 0.5870 * G + 0.1140 * B
ですよって書いてるんで、その通り組めばいいんですけどね。
Xは3次元配列ですが、
X(:,:,1)にはRの情報が、X(:,:,2)にはGの情報が、X(:,:,3)にはBの情報が入っています。

Y(i,j)=floor((X(i,j,1)+X(i,j,2)+X(i,j,3))/3);
ってのは要するに(R+G+B)/3をしているってことです。

ということで、そのもらいもののプログラムの足し算のところをちょこっと変更してやればよさそうですね。

ちなみにこのプログラムに関しては間違ってはいないと思われますが、効率の悪い(matlabっぽくない)書き方になっています。

参考になれば幸いです。

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

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

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

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

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

閉じる

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

不適切な投稿でないことを報告しました。

閉じる