一張數位彩色影像是由許多的點所構成,每一個點稱為一個像素(pixel),每一個像素在電腦內部 需要有24位元(bit)的空間來記錄該像素的顏色,分別是各以8位元紀錄紅色(R)、綠色(G)及藍色(B)通 道的成分值,因為只用了8位元來記錄各通道的成分值,所以各通道的成分值會介於0跟255之間,
例如:一個像素點的像素值可以是(R,G,B) = (218,149,155)10 = (11011010, 10010101, 10011011)2 。
所謂的資訊隱藏,是利用人類對影像個別像素的些微改變無法察覺的特性,將機密位元串(bit stream)藏入在像素值內,有一個藏入方法如下:假定現在待處理的像素值(R,G,B) = (218,149,155)10 = (11011010, 10010101, 10011011)2 ,我們要藏入的機密位元串為(1100…)2 ,首先檢查R和G的二進位 表示法中倒數第二個位元是否一樣,若一樣則R不藏入機密位元且維持不變,若不一樣則將待藏入的 那個機密位元取代R的最後一個位元,
以現有例子而言,R = (218)10 = (11011010)2 ,G = (149)10 = (10010101)2 ,其倒數第二個位元不一樣,所以我們將機密位元串(1100…)2 的第一個位元1取代R的 最後一個位元0之後成為藏入後的R = (11011011)2 = (219)10 ,這樣就完成第一個機密位元的藏入動 作。
接著處理第二個機密位元(1100…)2 的藏入動作,接下來換檢查G和B的二進位表示法中倒數第 二個位元是否一樣,若一樣則G不藏入機密位元且維持不變,若不一樣則將待藏入的那個機密位元取 代G的最後一個位元,以現有例子而言,G = (149)10 = (10010101)2 ,B = (155)10 = (10011011)2 ,其倒 數第二個位元不一樣,所以我們將機密位元串(1100…)2 的第二個位元1取代G的最後一個位元1之 後成為藏入後的G = (10011011)2 = (155)10 維持不變,這樣就完成第二個機密位元的藏入動作。
接著處 理第三個機密位元(1100…)2 的藏入動作,接下來換檢查B和R的二進位表示法中倒數第二個位元是 否一樣,若一樣則B不藏入機密位元且維持不變,若不一樣則將待藏入的那個機密位元取代B的最後 一個位元,以現有例子而言,B = (155)10 = (10011011)2 ,R = (218)10 = (11011010)2 ,其倒數第二個位 元都一樣是1,所以B我們不藏機密位元其值維持不變B = (155)10 = (10011011)2 ,這樣我們就完成了 第一個彩色像素點的機密位元藏入動作,共藏入2個位元(11)2 ,藏入之後的 (R,G,B) = (219,149,155)10 , 接下來的機密位元藏入動作也是比照以上方法進行直到所有機密位元都藏入了或像素點都用完了為 止。
請寫一程式,完成以上在彩色數位影像中做資訊隱藏的動作。
測試資料的第一列是由0與1組成的機密位元串。
測試資料的第二列是由介於0跟255之間並以空白隔開的整數所構成,前三個整數分別代表第 一個像素的RGB值,接下來三個整數分別代表第二個像素的RGB值,以下依此類推。
之後每一組測試資料安排方式依此類推。
對於每一組測試資料,請於同一列依序輸出藏入機密位元串之後以空白隔開的所有像素RGB值。
1100 218 149 155 128 128 128 127 127 127 128 127 128 135 138 196 101010 218 149 155 128 128 128
219 149 155 128 128 128 127 127 127 128 126 128 135 138 196 219 148 155 128 128 128
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |