<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Python 的圖像隱寫術(shù)

          共 3665字,需瀏覽 8分鐘

           ·

          2021-09-03 14:51

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          今天,世界正在見證前所未有的數(shù)據(jù)爆炸,我們每天產(chǎn)生的數(shù)據(jù)量確實令人難以置信。福布斯的文章“我們每天創(chuàng)造多少數(shù)據(jù)?” 指出,以我們目前的速度每天創(chuàng)建大約2.5 千億字節(jié)的數(shù)據(jù),但隨著物聯(lián)網(wǎng) (IoT) 的發(fā)展,這一速度只會加快。僅在過去兩年中,世界上 90% 的數(shù)據(jù)都是生成的,這篇值得重讀!


          現(xiàn)代計算世界圍繞著數(shù)據(jù)這個詞,但到底是什么讓人如此感興趣呢?在當今世界,企業(yè)已經(jīng)開始意識到數(shù)據(jù)就是力量,因為它可以預測客戶趨勢、增加銷售額,并將公司推向新的高度。隨著技術(shù)的快速進步和數(shù)據(jù)不斷創(chuàng)新,數(shù)據(jù)安全已成為我們的首要任務。隨著每天數(shù)以千計的消息和數(shù)據(jù)在互聯(lián)網(wǎng)上從一個地方傳輸?shù)搅硪粋€地方,數(shù)據(jù)共享正在增加,數(shù)據(jù)的保護是發(fā)送者的主要關(guān)注點,我們必須以只有接收者才能理解的秘密方式對消息進行加密,這一點非常重要。


          在本文中,我們將了解什么是最低有效位隱寫術(shù),以及我們?nèi)绾问褂?python 實現(xiàn)它。


          什么是隱寫術(shù)?

          隱寫術(shù)是將秘密信息隱藏在更大的信息中的過程,使人無法知道隱藏信息的存在或內(nèi)容。隱寫術(shù)的目的是保持雙方之間的秘密通信,與隱藏秘密消息內(nèi)容的密碼學不同,隱寫術(shù)隱藏了消息傳遞這一事實。雖然隱寫術(shù)不同于密碼術(shù),但兩者之間有很多類比,一些作者將隱寫術(shù)歸類為密碼術(shù)的一種形式,因為隱藏通信是一種秘密通信。


          使用隱寫術(shù)優(yōu)于加密術(shù)?

          到目前為止,密碼學一直在保護發(fā)送者和預期接收者之間的機密性方面發(fā)揮著最終作用。然而,如今除了密碼學之外,隱寫術(shù)被越來越多地用于為隱藏數(shù)據(jù)添加更多保護層。與單獨使用密碼學相比,使用隱寫術(shù)的優(yōu)勢在于,預期的秘密消息本身不會引起人們的注意,不會成為審查的對象。顯而易見的加密消息,無論它們多么牢不可破,都會引起人們的興趣,并且在加密是非法的國家,這些信息本身可能會被指控有罪。[1]


          隱寫術(shù)的類型

          隱寫術(shù)工作已在不同的傳輸媒體上進行,如圖像、視頻、文本或音頻。


          基本隱寫模型

          如上圖所示,需要隱藏的原始圖像文件 (X) 和秘密消息 (M) 都作為輸入輸入到隱寫編碼器中,隱寫編碼器函數(shù) f(X,M,K) 通過使用最低有效位編碼等技術(shù)將秘密消息嵌入到封面圖像文件中,生成的隱藏圖像看起來與封面圖像文件非常相似,沒有明顯的變化,這樣就完成了編碼。為了檢索秘密消息,隱寫對象被輸入到隱寫解碼器中。[3]


          本文將幫助我們使用 Python 實現(xiàn)圖像隱寫術(shù),它將幫助我們編寫 Python 代碼,使用一種稱為最低有效位的技術(shù)隱藏文本消息。


          最低有效位隱寫術(shù)

          我們可以將數(shù)字圖像描述為一組有限的數(shù)字值,稱為像素。像素是圖像中最小的單個元素,其值表示給定顏色在任何特定點的亮度。因此,我們可以將圖像視為包含固定行數(shù)和列數(shù)的像素矩陣(或二維數(shù)組)。


          最低有效位 (LSB) 是一種技術(shù),其中每個像素的最后一位被修改并替換為秘密消息的數(shù)據(jù)位。


          從上圖可以清楚地看出,如果我們改變 MSB 會對最終值產(chǎn)生更大的影響,但如果我們改變 LSB 對最終值的影響很小,因此我們使用最低有效位隱寫術(shù)。


          LSB 技術(shù)是如何工作的?

          每個像素包含紅、綠、藍三個值,這些值的范圍是 0 到 255,換句話說,它們是 8 位值。[4] 


          讓我們舉一個例子來說明這項技術(shù)的工作原理,假設(shè)我們想將消息“ hi ”隱藏到具有以下像素值的4x4圖像中:


          [(225, 12, 99), (155, 2, 50), (99, 51, 15), (15, 55, 22),(155, 61, 87), (63, 30, 17), (1, 55, 19), (99, 81, 66),(219, 77, 91), (69, 39, 50), (18, 200, 33), (25, 54, 190)]


          使用ASCII 表,我們可以將秘密消息轉(zhuǎn)換為十進制值,然后轉(zhuǎn)換為二進制值:0110100 0110101。現(xiàn)在,我們逐個迭代像素值,在將其轉(zhuǎn)換為二進制后,我們將每個最低有效位依次替換為該消息位(例如 225 是 11100001,我們用第一個數(shù)據(jù)位(0)等替換最后一位,右邊的位(1),依此類推)。這只會將像素值修改為 +1 或 -1,這根本不明顯。執(zhí)行LSBS后得到的像素值如下圖:


          [(224, 13, 99),(154, 3, 50),(98, 50, 15),(15, 54, 23),(154, 61, 87),(63, 30, 17),( 1, 55, 19),(99, 81, 66),(219, 77, 91),(69, 39, 50),(18, 200, 33),(25, 54, 190)]


          使用 Python 在圖像中隱藏文本

          在本節(jié)中,我們可以找到使用 Python 代碼一步一步地隱藏和顯示過程,打開一個google collab筆記本并按照以下步驟操作:


          在開始編寫代碼之前,我們可以使用左側(cè)菜單欄中顯示的上傳選項上傳我們想用于隱寫術(shù)的圖像(png)。

          第 1 步:導入所有必需的 Python 庫

          第 2 步:定義一個將任意類型數(shù)據(jù)轉(zhuǎn)換為二進制的函數(shù),我們將在編碼和解碼階段使用該函數(shù)來將秘密數(shù)據(jù)和像素值轉(zhuǎn)換為二進制。

          第 3 步:編寫一個函數(shù),通過改變 LSB 將秘密信息隱藏到圖像中

          第 4 步:定義一個函數(shù),用于解碼隱藏圖像中的隱藏消息

          第 5 步:該函數(shù)將輸入的圖像名稱和秘密消息作為用戶的輸入,并調(diào)用 hideData() 對消息進行編碼

          第6步:創(chuàng)建一個函數(shù),讓用戶輸入需要解碼的圖片名稱,調(diào)用showData()函數(shù)返回解碼后的信息

          第 7 步:主函數(shù)()


          結(jié)果:


          對消息進行編碼:

          解碼消息:

          如果小伙伴們對代碼感興趣,可以在Github上找到我的筆記本。


          參考:

          [1].https://towardsdatascience.com/steganography-hiding-an-image-inside-another-77ca66b2acb1

          [2].https://www.edureka.co/blog/steganography-tutorial

          [3].https://www.forbes.com/sites/bernardmarr/2018/05/21/how-much-data-do-we-create-every-day-the-mind-blowing-stats-everyone-should-read/#191d0b0160ba

          [4].https://www.ukessays.com/essays/computer-science/steganography-uses-methods-tools-3250.php

          [5].https://www.thepythoncode.com/article/hide-secret-data-in-images-using-steganography-python

          [6].https://www.youtube.com/watch?v=xepNoHgNj0w&t=1922s



          Github代碼連接:
          https://github.com/rroy1212/Image_Steganography/blob/master/ImageSteganography.ipynb

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女在线视频 | 伊人成人大香综合网 | 中文字幕国产第一页 | 久久视频黄片视频大全 | 国内精品久久久久久久久久变脸 |