白黒画像のランダムディザリングのアルゴリズム
Afficher commentaires plus anciens
今ランダムディザリングを既存の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)
Réponses (2)
エラーの内容はこちらと同じですね。
MATLAB変数への添字は1開始ですので、0を入れるとエラーとなります。例えば
A = rand(1,1);
A(0,0)
添字インデックスは、実数の正の整数か、論理値のいずれかでなければなりません。
Naoki Ishibashi
le 19 Sep 2017
0 votes
1 commentaire
ちなみに、質問文内に記載されたコードはIshibashiさんが書かれたものでしょうか?
解決の為にご自身で試した事や検討されたこと、考察なども記載頂けると、Ishibashiさんがどこまで理解されてるのかを少し伺えるので、回答する側も少し助かります。
例えば、
for j= 0:in_rows-1
を
for j= 1:in_rows
に変更して試してみるなどいかがでしょうか?
Catégories
En savoir plus sur イメージ dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!