Perubahan Bit LSB MSB pada citra digital


Pada dasarya setiap citra digital 2D direpresentasikan kedalam bentuk nilai pixel pada setiap posisi 2 dimensi (x,y). Disetiap pixel nya itu dapat direpresentasikan derajat keabuabuannya dalam bentuk nilai 0-255 atau juga bisa kita representaikan dalam bentuk byte yang terdiri dari 8 bit (catatan: tentunya tergantung dari format yang digunakan, saat ini kita menggunakan bmp atau png)

b0,b1,b2,b3,b4,b5,b6,b6 ==> adalah susunan bit dengan b0 adalah adalah MSB Most significant bit atau high order bit dengan kata lain nilai terbesar dari susunan bit, sedangkan b6 adalah nilai terkecil dari susunan bit.

Misal citra digital grayscale mempunyai pixel 512×512 Pixel, kita hanya mengambil b0 atau b4 atau b6 nya saja apa yang akan terjadi?

melalui program script sederhana matlab dapat kita dapatkan hasil sebagai berikut
Screenshot from 2015-09-05 17:10:52
Program tanpa uint8 (unsigned integer 8)

Screenshot from 2015-09-05 17:12:37
Program dengan uint8 (unsigned integer 8)

dari gambar diatas dapat kita simpulkan bahwa perbuahan pada bit MSB akan membuat citra “rusak” dan sebaliknya pada perubahan bit pada LSB. Hal ini sering dimanfaatkan untuk enkripsi citra ataupun steganografi citra

Script matlab

clc, clear all, close all
Im=imread('Cameraman.bmp');
subplot(3,3,1), subimage(Im)
set(gca,'visible','off')
[M N]=size(Im);
Im_b=de2bi(Im,8,'left-msb');
[Mb Nb]=size(Im_b);
for j=1:Nb
    Im_bx=zeros(Mb,Nb);
    for i=1:Mb
        Im_bx(i,j)=Im_b(i,j);
    end
    Im_r=reshape((bi2de(Im_bx,'left-msb')),N,M);
    subplot(3,3,j+1), subimage(uint8(Im_r))
    set(gca,'visible','off')
end