白黒画像のランダムディザリングのアルゴリズム

4 ビュー (過去 30 日間)
Naoki Ishibashi
Naoki Ishibashi 2017 年 9 月 18 日
編集済み: michio 2017 年 9 月 19 日
今ランダムディザリングを既存のfunctionに頼らず書こうとしています。以下のコードでif文の論理演算子と行列インデックスでエラーが出てしまったのですが、解決方法がうまく見つけられず困っています。アドバイス頂けると幸いです。またランダムディザリングとしても考え方があっているか、間違っていればアドバイス頂けると幸いです。
以下コード
function result_im = random_dither(gray_im)
in_rows = size(gray_im,1);
in_cols = size(gray_im,2);
result_im = zeros(in_cols,in_rows);
for j= 0:in_rows-1
for i=0:in_cols-1
% r = a + (b-a).*rand(N,1) Nth randum numbers from a to b
threshold = 0 + (255-0).*rand;
if (gray_im(i,j) < threshold)
result_im(i,j) = 0;
else
result_im(i,j) = 1;
end
end
end
figure, imshow(result_im);
end
以下エラー
添字インデックスは、実数の正の整数か、論理値のいずれかでなければなりません。
エラー: random_dither (line 9)
if (gray_im(i,j) < threshold)

回答 (2 件)

michio
michio 2017 年 9 月 19 日
編集済み: michio 2017 年 9 月 19 日
エラーの内容はこちらと同じですね。
MATLAB変数への添字は1開始ですので、0を入れるとエラーとなります。例えば
A = rand(1,1);
A(0,0)
添字インデックスは、実数の正の整数か、論理値のいずれかでなければなりません。

Naoki Ishibashi
Naoki Ishibashi 2017 年 9 月 19 日
ご回答ありがとうございます。前回は結局別の方法でやってしまいました。添字に0を入れない解決法がわからないのですが、具体的な解決法も教えて頂けると嬉しいです。
  1 件のコメント
michio
michio 2017 年 9 月 19 日
編集済み: michio 2017 年 9 月 19 日
ちなみに、質問文内に記載されたコードはIshibashiさんが書かれたものでしょうか?
解決の為にご自身で試した事や検討されたこと、考察なども記載頂けると、Ishibashiさんがどこまで理解されてるのかを少し伺えるので、回答する側も少し助かります。
例えば、
for j= 0:in_rows-1
for j= 1:in_rows
に変更して試してみるなどいかがでしょうか?

サインインしてコメントする。

カテゴリ

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!