How to generate a bitmap image without using function...Please help

How can i generate bitmap representation of an image using thresholding?? below code didn't work....
for i=1:r
for j=1:s
thresh=C(i,j)+Di;
if(imean(i,j)>=thresh)
bm(i,j)=1;
else
bm(i,j)=0;
end
end
end
figure
imshow(bm);

8 件のコメント

Sreeda M A
Sreeda M A 2016 年 6 月 29 日
編集済み: Geoff Hayes 2016 年 6 月 29 日
I am getting an error like this :
Attempted to access C(2,1); index out of bounds because size(C)=[1,256].
Error in content (line 51)
thresh=C(i,j)+Di;
Geoff Hayes
Geoff Hayes 2016 年 6 月 29 日
Sreeda - how are r and s initialized? You are trying to iterate over C which is a 1x256 matrix yet r is at least two. Please clarify where these values have come from and how they relate to C.
Sreeda M A
Sreeda M A 2016 年 7 月 4 日
r and s are size of image....256*256 respectively
Stephen23
Stephen23 2016 年 7 月 4 日
@Sreeda M A: Don't waste your time writing loops. MATLAB is a high-level language, so you don't need to mess around with ugly loops. See Walter Roberson's answer for the simplest and fastest solution.
Walter Roberson
Walter Roberson 2016 年 7 月 4 日
If r and s are the size of your image, then your image is stored in some variable other than C.
Sreeda M A
Sreeda M A 2016 年 7 月 4 日
編集済み: Image Analyst 2016 年 7 月 4 日
I changed the code as shown below
imean=padarray(imean,[3,3],0);
for i=1:256
for j=1:256
m1=imean(i:i+2,j:j+2);
thresh=n1(i,j)+sod;
if(m1(i,j)>=thresh)
bm(i,j)=1;
else
bm(i,j)=0;
end
end
end
Here imean is an interband average image,n1 is the minimum of that image and sod is scaled version of dither array......
Image Analyst
Image Analyst 2016 年 7 月 4 日
編集済み: Image Analyst 2016 年 7 月 4 日
I fixed your formatting for you, but please read this.
Also to do a locally adaptive threshold like you did, you can do it vectorized if you just create an m1 (or n1) image with conv2() or imfilter(), then use >=. Let me know if you can't figure it out.
bm =
Sreeda M A
Sreeda M A 2016 年 8 月 10 日
Sorry sir ,but I can't figure it out .

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

回答 (1 件)

Walter Roberson
Walter Roberson 2016 年 6 月 29 日

0 投票

thresh = C + Di;
bm = imean >= thresh;
No loop required.

カテゴリ

ヘルプ センター および File ExchangeImages についてさらに検索

質問済み:

2016 年 6 月 29 日

コメント済み:

2016 年 8 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by