I had partitioned the image ('cameraman.tif' )into 8-bit map images ( C1, C2, C3, C4, C5, C6, C7, C8) but unable to rejoin to get back the original image 'C' as shown below in the related code in the Body Section.

1 view (last 30 days)
C=imread('cameraman.tif');
C1=bitget(C,1); figure, imshow(logical(C1));title('Bit plane 1');
C2=bitget(C,2); figure, imshow(logical(C2));title('Bit plane 2');
C3=bitget(C,3); figure, imshow(logical(C3));title('Bit plane 3');
C4=bitget(C,4); figure, imshow(logical(C4));title('Bit plane 4');
C5=bitget(C,5); figure, imshow(logical(C5));title('Bit plane 5');
C6=bitget(C,6); figure, imshow(logical(C6));title('Bit plane 6');
C7=bitget(C,7); figure, imshow(logical(C7));title('Bit plane 7');
C8=bitget(C,8); figure, imshow(logical(C8));title('Bit plane 8');

Accepted Answer

Guillaume
Guillaume on 9 Dec 2016
Edited: Guillaume on 9 Dec 2016
The first thing where you've gone wrong is to create all these C* images. If you're numbering variables, you're doing something wrong. Matlab already has a very effective way of storing things with a numbering index, it's called a matrix or cell array. So:
Cbit{1} = bitget(C, 1); figure, ...
Cbit{2} = ...
%etc
And, since you're now using a cell array, you can avoid retyping/ copy-pasting all this repeating code simply by replacing it with a loop:
Cbit = cell(1, 8); %always a good idea to preallocate although in your case won't make a difference
for bit = 1:8
Cbit{bit} = bitget(C, bit); figure, imshow(logical(Cbit{bit})), title(sprintf('Bit plane %d', bit));
end
Isn't that easier?
As for putting the image back together, simply use the inverse operation. You use bitget to get the bits, use bitset to set them back:
newC = zeros(size(C), class(C));
for bit = 1:8
newC = bitset(newC, bit, Cbit{bit});
end
Another option to reconstruct that image is to do the arithmetic yourself. One of the many ways (in R2016):
newC = sum(cat(3, Cbit{:}) .* permute(2.^(0:7), [1 3 2]), 3)

More Answers (0)

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!