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

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;
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.
r and s are size of image....256*256 respectively
@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.
If r and s are the size of your image, then your image is stored in some variable other than C.
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 =
Sorry sir ,but I can't figure it out .

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

답변 (1개)

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

카테고리

도움말 센터File Exchange에서 Images에 대해 자세히 알아보기

질문:

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