どうしたらエラーが出なくなるでしょうか
19 views (last 30 days)
Show older comments
clear all; clc, close all, imtool close all;
%%1行ずつ順番に実行
%%画像の二値化処理
I = imread('eyedown.png'); %ファイルから画像の読み込み
figure; imshow(I);%別ウィンドウで画像の表示
figure; imhist(I);%%ヒストグラムを表示
k = I>200;%%大小を比較して二値化する
figure; imshow(k);
画像を二値化しようとしています。ただ、9行目を実行すると下記のようなエラーが表示されてしまいます。どのようにしたらよいでしょうか。
次を使用中のエラー: images.internal.imageDisplayValidateParams>validateCData
入力が logical (バイナリ) の場合は 2 次元でなければなりません。
エラー: images.internal.imageDisplayValidateParams (行 30)
common_args.CData = validateCData(common_args.CData,image_type);
エラー: images.internal.imageDisplayParseInputs (行 79)
common_args = images.internal.imageDisplayValidateParams(common_args);
エラー: imshow (行 253)
images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});
エラー: kiso (行 9)
figure; imshow(k);
0 Comments
Answers (1)
Kojiro Saito
on 16 Jun 2023
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);
0 Comments
See Also
Categories
Find more on イメージ タイプの変換 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!