I>200を実行したときに、RGBそれぞれの色の配列で輝度値が200より大きいものが1、200以下が0となる、1か0かのlogical配列が作られます。kのサイズはm行n列×3 (RGB)のlogical配列です。
方法1
エラーメッセージにあるとおり、logical配列をそのままimshowで表示するには、m行n列×1にする必要があります。
ここでは画像peppers.pngを使ったサンプルにしています。
I = imread('peppers.png'); %ファイルから画像の読み込み
figure; imshow(I);%別ウィンドウで画像の表示
figure; imhist(I);%%ヒストグラムを表示
k = I>200;%%大小を比較して二値化する
figure; imshow(k(:,:,1)); % R成分のlogical配列のみ抽出
方法2
他のやり方として、RGB全てのlogical配列を画像表示するにはloglcalからuint8やdoubleなどに型変換すれば実現できます。0と1の輝度値では画像が暗いので、下記のサンプルでは255倍して0か255のdouble型の輝度値にしています。
I = imread('peppers.png'); %ファイルから画像の読み込み
figure; imshow(I);%別ウィンドウで画像の表示
figure; imhist(I);%%ヒストグラムを表示
k = I>200;%%大小を比較して二値化する
figure; imshow(k*255);
方法3
I = imread('peppers.png'); %ファイルから画像の読み込み
I = rgb2gray(I); % グレースケール画像に変換
figure; imshow(I);%別ウィンドウで画像の表示
figure; imhist(I);%%ヒストグラムを表示
k = I>200;%%大小を比較して二値化する
figure; imshow(k);