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

조회 수: 2 (최근 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
に変更して試してみるなどいかがでしょうか?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 イメージ에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!