I have an image and separated it into R G B planes.next i have applied bit plane slicing to each planes. now i want to convert the bit plane sliced images to bitmap images(in 1's and -1's form),i have written following code.but it displays black img
2 次查看(过去 30 天)
显示 更早的评论
%this is the code:
clear all;
clc;
close all;
a=imread('F:\iris_db\1.png');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/150779/image.png)
R=a;
G=a;
B=a;
R(:,:,2)=0;
R(:,:,3)=0;
G(:,:,1)=0;
G(:,:,3)=0;
B(:,:,1)=0;
B(:,:,2)=0;
imwrite(R,'F:\second year\output imgs\1stplane.png');
imwrite(G,'F:\second year\output imgs\2ndplane.png');
imwrite(B,'F:\second year\output imgs\3rdplane.png');
%%apply bit plane slicing on R plane
R=double(R);
rp1=bitget(R,1);
rp2=bitget(R,2);
rp3=bitget(R,3);
rp4=bitget(R,4);
rp5=bitget(R,5);
rp6=bitget(R,6);
rp7=bitget(R,7);
rp8=bitget(R,8);
imwrite(rp1,'F:\second year\output imgs\rp1.png');
imwrite(rp2,'F:\second year\output imgs\rp2.png');
imwrite(rp3,'F:\second year\output imgs\rp3.png');
imwrite(rp4,'F:\second year\output imgs\rp4.png');
imwrite(rp5,'F:\second year\output imgs\rp5.png');
imwrite(rp6,'F:\second year\output imgs\rp6.png');
imwrite(rp7,'F:\second year\output imgs\rp7.png');
imwrite(rp8,'F:\second year\output imgs\rp8.png');
% apply bit plane slicing on G plane
G=double(G);
gp1=bitget(G,1);
gp2=bitget(G,2);
gp3=bitget(G,3);
gp4=bitget(G,4);
gp5=bitget(G,5);
gp6=bitget(G,6);
gp7=bitget(G,7);
gp8=bitget(G,8);
imwrite(gp1,'F:\second year\output imgs\gp1.png');
imwrite(gp2,'F:\second year\output imgs\gp2.png');
imwrite(gp3,'F:\second year\output imgs\gp3.png');
imwrite(gp4,'F:\second year\output imgs\gp4.png');
imwrite(gp5,'F:\second year\output imgs\gp5.png');
imwrite(gp6,'F:\second year\output imgs\gp6.png');
imwrite(gp7,'F:\second year\output imgs\gp7.png');
imwrite(gp8,'F:\second year\output imgs\gp8.png');
% apply bit plane slicing on B plane
B=double(B);
bp1=bitget(B,1);
bp2=bitget(B,2);
bp3=bitget(B,3);
bp4=bitget(B,4);
bp5=bitget(B,5);
bp6=bitget(B,6);
bp7=bitget(B,7);
bp8=bitget(B,8);
imwrite(bp1,'F:\second year\output imgs\bp1.png');
imwrite(bp2,'F:\second year\output imgs\bp2.png');
imwrite(bp3,'F:\second year\output imgs\bp3.png');
imwrite(bp4,'F:\second year\output imgs\bp4.png');
imwrite(bp5,'F:\second year\output imgs\bp5.png');
imwrite(bp6,'F:\second year\output imgs\bp6.png');
imwrite(bp7,'F:\second year\output imgs\bp7.png');
imwrite(bp8,'F:\second year\output imgs\bp8.png');
now generate binary bitmap of the plane images. convert into 1's and
%%-1's format. read a bit, if it is 1 then keep it as it is else make it %%-1
[d1,d2,d3]= size(a);
%
for i=1:d1 %d1=576
for j=1:d2 %d2=768
%for rp1
if rp1(i,j)==1
rp1(i,j)=1;
else
rp1(i,j)=-1;
end
if rp2(i,j)==1
rp2(i,j)=1;
else
rp2(i,j)=-1;
end
if rp3(i,j)==1
rp3(i,j)=1;
else
rp3(i,j)=-1;
end
if rp4(i,j)==1
rp4(i,j)=1;
else
rp4(i,j)=-1;
end
if rp5(i,j)==1
rp5(i,j)=1;
else
rp5(i,j)=-1;
end
if rp6(i,j)==1
rp6(i,j)=1;
else
rp6(i,j)=-1;
end
if rp7(i,j)==1
rp7(i,j)=1;
else
rp7(i,j)=-1;
end
if rp8(i,j)==1
rp8(i,j)=1;
else
rp8(i,j)=-1;
end
end
end
imshow(rp8);
impixelinfo;
[EDITED, Jan, Please format your code - Thanks]
0 个评论
回答(1 个)
Jan
2013-10-17
This is meaningless:
if rp1(i,j)==1
rp1(i,j)=1;
...
An easier and faster method to replace 0 by -1 without two loops:
rp1(rp1==0) = -1;
A "binary" format with -1 instead of zeros is rather unusual. I do not assume that Matlab supports this strange format.
Better stay at the zeros. Perhaps this helps:
rp8 = uint8(rp8);
imshow(rp8);
Or:
img8 = ind2rgb(rp8, [0,0,0; 0,1,0]);
imshow(img8);
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!