專利名稱:一種立體驗證碼的生成方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機和3D顯示領域,尤其是涉及一種立體驗證碼的生成方法和裝置。
背景技術:
驗證碼主要應用于網(wǎng)絡,不少網(wǎng)站為了防止用戶利用機器人程序自動注冊、登錄、 灌水,都采用了驗證碼技術。驗證碼,是將一串隨機產(chǎn)生的數(shù)字或符號,生成一幅圖片,圖片里加上一些干擾,例如隨機畫數(shù)條直線,畫一些點,由用戶肉眼識別其中的信息,輸入表單提交網(wǎng)站驗證,驗證成功后才能使用某項功能。隨著人工智能和圖像理解技術的發(fā)展機器對圖像中字符的識別能力越來越強。如何生成人眼便于識別、而程序難以識別的驗證碼,成為重要課題。同時,3D技術日趨完善,各種媒體對3D顯示的支持也越來越廣泛,3D設備普及率日益升高,如同彩色顯示器在主流領域取代了黑白顯示器一樣,3D顯示設備有望在不久的將來取代傳統(tǒng)2D顯示設備。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術,本發(fā)明要解決的技術問題是提供一種只能通過立體觀看方式看出內(nèi)容,便于人眼識別,難以被機器人程序識別的立體驗證碼的生成方法和裝置。為了解決上述技術問題,本發(fā)明采用如下技術方案一種立體驗證碼的生成方法, 包括如下步驟
準備兩份無規(guī)律的散點確定驗證碼的內(nèi)容,該驗證碼的內(nèi)容為二值圖像;
將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割,首先將驗證碼內(nèi)容與散點圖重合, 對于驗證碼內(nèi)容中表示內(nèi)容的像素,對散點圖保留原本像素;對于驗證碼內(nèi)容中沒有表示內(nèi)容的像素,對散點圖刪除該像素,置為“透明”;
將切割后的第一份散點圖復制為兩份,一份向右進行位移,作為立體驗證碼的左內(nèi)容, 另一份向左位移,作為立體驗證碼的右內(nèi)容;
將第二份散點圖復制為兩份,分別作為立體驗證碼的左、右背景圖,對左背景圖向左位移,對右背景圖向右位移;
將左背景圖水平向左進行非線性變形得到新的左背景圖; 將右背景圖水平向右進行非線性變形得到新的右背景圖; 將左內(nèi)容覆蓋在左背景圖之上,得到立體驗證碼的左圖; 將右內(nèi)容覆蓋在右背景圖之上,得到立體驗證碼的右圖; 將立體驗證碼的左圖與右圖合成為立體圖。上述的散點圖是指在一種單一顏色的背景上,隨機地分布著另一種單一顏色的多個點,各點的大小、形狀因隨機性而不完全相同,各點之間的距離大小,也因隨機性而不完全相同。一種上述立體驗證碼的生成裝置,包括散點圖生成模塊,用于生成兩份無規(guī)律的散點內(nèi)容切割模塊,用于將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割; 內(nèi)容位移模塊,用于將立體驗證碼的左內(nèi)容、右內(nèi)容分別進行位移,使其在立體驗證碼中表現(xiàn)出“出屏”效果;
背景位移模塊,用于將立體驗證碼的左背景、右背景圖分別進行位移,使其在立體驗證碼中表現(xiàn)出“入屏”效果;
背景變形模塊,用于對左、右背景圖進行非線性變形,使其在立體圖中表現(xiàn)出“凹陷”效
果;
左右圖生成模塊,用于生成立體驗證碼的左、右立體圖生成模塊,用于將立體驗證碼的左、右圖生成最終的立體驗證碼。上述最終的立體驗證碼,形式由存儲方法和顯示方法決定,將左、右圖分別存儲為普通圖片文件,包括jpg、bmp、png、gif、tif,或存儲為常用的立體圖格式ΜΡ0。與現(xiàn)有技術相比,本發(fā)明具有以下有益效果使用本發(fā)明生成的驗證碼,其左、右圖都是無規(guī)律的散點,無法分辨出任何信息,由人眼的立體感知原理可知,使用正確的方式觀看立體圖,人眼可以看到“浮出”的驗證碼內(nèi)容;由于程序難以模仿人眼的立體感知能力, 加之本發(fā)明對背景進行了非線性變形,所以程序難以識別驗證碼中的信息。本發(fā)明還可用于其它娛樂性場合,生成有趣味性的立體圖片。
圖1為本發(fā)明立體驗證碼的生成方法的流程圖; 圖2為本發(fā)明立體驗證碼的生成裝置的結(jié)構(gòu)示意圖; 圖3為本發(fā)明實施例散點圖4為本發(fā)明實施例驗證碼內(nèi)容示例圖5為本發(fā)明實施例散點圖按照驗證碼內(nèi)容的形狀進行切割后的示例圖; 圖6為與本發(fā)明技術方案無關,而為了直觀的表示非線性變形的非線性變形之前的示意圖7為對圖6進行非線性變形之后的示意圖。
具體實施例方式下面將結(jié)合附圖及具體實施方式
對本發(fā)明作進一步的描述。一種立體驗證碼的生成方法,流程圖如圖1,該方法包括
步驟101 準備兩份無規(guī)律的散點圖,示例圖如圖3,具體地,就是在白色的背景上,隨機地分布著很多黑色的點,各點的大小、形狀因隨機性而不完全相同,各點之間的距離較小,也因隨機性而不完全相同,另外,顏色不一定必須是黑色和白色,只要是有兩種有明顯區(qū)別的顏色均可;
步驟102 確定驗證碼的內(nèi)容,必須為二值圖像,也就是說,該內(nèi)容的圖像上的每個像素點,只能為“有色”和“無色”之一,有內(nèi)容之處為“有色”,無內(nèi)容之處為“無色”,示例圖如圖4,圖4中的內(nèi)容為文字“3D”,除此之外的部分皆為“無色”;
步驟103 將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割,切割后的示例圖見圖5, 具體地,將驗證碼內(nèi)容與散點圖重合,對于驗證碼內(nèi)容的“有色”像素,對散點圖保留原本像素;對于驗證碼內(nèi)容的“無色”像素,對散點圖刪除該像素,置為“透明”;
步驟104 將切割后的第一份散點圖復制為兩份,一份向右進行幾個像素的位移,作為立體驗證碼的左內(nèi)容,另一份向左進行幾個像素的位移,作為立體驗證碼的右內(nèi)容,以使立體驗證碼中的內(nèi)容表現(xiàn)出“出屏”效果;
步驟105 將第二份散點圖復制為兩份,分別作為立體驗證碼的左、右背景圖,對左背景圖向左進行幾個像素的位移,對右背景圖向右進行幾個像素的位移,以使立體驗證碼中的內(nèi)容表現(xiàn)出“入屏”效果;
步驟106 將步驟105中所述左背景圖水平向左進行非線性變形得到新的左背景圖, 具體地,所有像素向左平移,平移距離與該像素距圖像中心的距離呈倒數(shù)相關,也就是距離越遠,平移距離越小,這里舉例一種典型的計算方法設圖像中心的坐標為(x0,y0),設置一個最大位移為5,那么對于任意一個坐標為(x,y)的像素,其平移距離為
5*exp [-abs (χ-χΟ)/100] *exp [_abs (y-yO)/100],為了 更直觀地表現(xiàn)非線性變形,參見圖6,將圖6向左進行非線性變形之后得到圖7 ;
步驟107 將步驟105中所述右背景圖水平向右進行非線性變形得到新的右背景圖, 方法與步驟106中所述相同,這樣得到的背景,在立體圖中表現(xiàn)出“凹陷”效果;
步驟108 將步驟104所述左內(nèi)容覆蓋在步驟106所述左背景圖之上,得到立體驗證碼的左圖,具體地,將左內(nèi)容與左背景圖重合,用左內(nèi)容的像素替代左背景圖的像素,對于左內(nèi)容的“透明”部分,則保留左背景圖的像素;
步驟109 將步驟104所述右內(nèi)容覆蓋在步驟107所述右背景圖之上,得到立體驗證碼的右圖,方法與步驟108中所述相同;
步驟110 將步驟108所述左圖與步驟109所述右圖合成為立體圖,立體圖的形式需由存儲方法和顯示方法決定,例如可以將左、右圖并排放置,存儲為一個普通圖片文件,如 jpg、bmp、png、gif、tif等,也可以存儲為現(xiàn)今立體圖的常用格式ΜΡ0。一種用于上述的立體驗證碼的生成裝置,如圖2,該裝置包括
散點圖生成模塊,用于生成兩份無規(guī)律的散點圖,散點圖的示例圖見圖3。具體地,散點圖生成模塊通過圖像編程,得到以白色為背景,在其上隨機地分布很多黑色的點,各點的大小、形狀因隨機性而不完全相同,各點之間的距離較小,也因隨機性而不完全相同,這樣兩張散點圖,另外,顏色不一定必須是黑色和白色,只要是有兩種有明顯區(qū)別的顏色均可;散點圖生成模塊也可以存儲一張很大的散點圖,在使用時隨機抽取其中一部分,將其做隨機地變形即可。內(nèi)容切割模塊,用于將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割。具體地,驗證碼的內(nèi)容由人工確定,必須為二值圖像,也就是說,該內(nèi)容的圖像上的每個像素點,只能為“有色”和“無色”之一,有內(nèi)容之處為“有色”,無內(nèi)容之處為“無色”, 示例圖如圖4。內(nèi)容切割模塊將驗證碼內(nèi)容與散點圖重合,驗證碼內(nèi)容的“有色”像素,對散點圖保留原本像素;驗證碼內(nèi)容的“無色”像素,對散點圖刪除該像素,置為“透明”,切割后的示例圖見圖5。
內(nèi)容位移模塊,用于將立體驗證碼的左內(nèi)容、右內(nèi)容分別進行位移,使其在立體驗證碼中表現(xiàn)出“出屏”效果。具體地,內(nèi)容位移模塊將切割后的第一份散點圖復制為兩份,一份向右進行幾個像素的位移,作為立體驗證碼的左內(nèi)容,另一份向左進行幾個像素的位移,作為立體驗證碼的右內(nèi)容,以使立體驗證碼中的內(nèi)容表現(xiàn)出“出屏”效果。背景位移模塊,用于將立體驗證碼的左背景、右背景圖分別進行位移,使其在立體驗證碼中表現(xiàn)出“入屏”效果。具體地,背景位移模塊將第二份散點圖復制為兩份,一份向左進行幾個像素的位移,作為立體驗證碼的左背景圖,另一份向右進行幾個像素的位移,作為立體驗證碼的右背景圖,以使立體驗證碼中的內(nèi)容表現(xiàn)出“入屏”效果。背景變形模塊,用于對左、右背景圖進行非線性變形,在立體圖中表現(xiàn)出“凹陷”效果,同時給程序識別帶來更大困難。具體地,背景變形模塊將左背景圖所有像素向左平移,平移距離與該像素距圖像中心的距離呈倒數(shù)相關,也就是距離越遠,平移距離越小,這里舉例一種典型的計算方法 設圖像中心的坐標為(x0,y0),設置一個最大位移為5,那么對于任意一個坐標為(x,y)的像素,其平移距離為5*exp [-abs (x-xO)/100] *exp [-abs (y-yO)/100],因為散點圖非常雜亂,肉眼觀看難以分辨,為了更直觀地表現(xiàn)非線性變形,參見圖6,將圖6向左進行非線性變形之后得到圖7;
類似地,背景變形模塊將右背景圖向右進行變形; 如此,背景變形模塊生成新的左、右背景圖。左右圖生成模塊,用于生成立體驗證碼的左、右圖。具體地,左右圖生成模塊將左內(nèi)容與左背景圖重合,用左內(nèi)容的像素替代左背景圖的像素,對于左內(nèi)容的“透明”部分,則保留左背景圖的像素,得到立體驗證碼的左類似的,左右圖生成模塊將右內(nèi)容與右背景圖重合,用右內(nèi)容的像素替代左背景圖的像素,對于右內(nèi)容的“透明”部分,則保留右背景圖的像素,得到立體驗證碼的右圖。立體圖生成模塊,用于將立體驗證碼的左、右圖生成最終的立體驗證碼。具體地,立體圖生成模塊使用左、右圖生成立體圖,即為最終的立體驗證碼。立體圖的形式需由存儲方法和顯示方法決定,可以將左、右圖分別存儲為普通圖片文件,包括 jpg、bmp、png、gif、tif,也可以存儲為常用的立體圖格式ΜΡ0。立體圖的左、右圖都是沒有規(guī)律的散點,無法分辨任何信息;由人眼的立體感知原理可知,使用本發(fā)明生成的驗證碼,配合正確的觀看方式,人眼可以看到“浮出”屏幕的驗證碼內(nèi)容,同時可以看到“下沉”在屏幕下方、并且“向后凹陷”的背景圖片;由于程序難以模仿人眼的立體感知能力,加之本發(fā)明對驗證碼的背景進行了非線性變形,所以程序難以識別驗證碼中的信息。以上所述僅為本發(fā)明之較佳實施例而已,并非用以限定本發(fā)明的申請專利范圍以及特定使用方式,其他未脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應包含在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1.一種立體驗證碼的生成方法,其特征在于,包括如下步驟 準備兩份無規(guī)律的散點圖;確定驗證碼的內(nèi)容,該驗證碼的內(nèi)容為二值圖像;將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割,首先將驗證碼內(nèi)容與散點圖重合, 對于驗證碼內(nèi)容中表示內(nèi)容的像素,對散點圖保留原本像素;對于驗證碼內(nèi)容中沒有表示內(nèi)容的像素,對散點圖刪除該像素,置為“透明”;將切割后的第一份散點圖復制為兩份,一份向右進行位移,作為立體驗證碼的左內(nèi)容, 另一份向左位移,作為立體驗證碼的右內(nèi)容;將第二份散點圖復制為兩份,分別作為立體驗證碼的左、右背景圖,對左背景圖向左位移,對右背景圖向右位移;將左背景圖水平向左進行非線性變形得到新的左背景圖; 將右背景圖水平向右進行非線性變形得到新的右背景圖; 將左內(nèi)容覆蓋在左背景圖之上,得到立體驗證碼的左圖; 將右內(nèi)容覆蓋在右背景圖之上,得到立體驗證碼的右圖; 將立體驗證碼的左圖與右圖合成為立體圖。
2.根據(jù)權(quán)利要求1所述的立體驗證碼的生成方法,其特征在于所述的散點圖是指在一種單一顏色的背景上,隨機地分布著另一種單一顏色的多個點,各點的大小、形狀因隨機性而不完全相同,各點之間的距離大小,也因隨機性而不完全相同。
3.一種用于權(quán)利要求1所述的立體驗證碼的生成裝置,其特征在于包括散點圖生成模塊,用于生成兩份無規(guī)律的散點圖;內(nèi)容切割模塊,用于將第一份散點圖按照驗證碼內(nèi)容的形狀進行切割; 內(nèi)容位移模塊,用于將立體驗證碼的左內(nèi)容、右內(nèi)容分別進行位移,使其在立體驗證碼中表現(xiàn)出“出屏”效果;背景位移模塊,用于將立體驗證碼的左背景、右背景圖分別進行位移,使其在立體驗證碼中表現(xiàn)出“入屏”效果;背景變形模塊,用于對左、右背景圖進行非線性變形,使其在立體圖中表現(xiàn)出“凹陷”效果;左右圖生成模塊,用于生成立體驗證碼的左、右圖;立體圖生成模塊,用于將立體驗證碼的左、右圖生成最終的立體驗證碼。
4.根據(jù)權(quán)利要求1或2或3所述的立體驗證碼的生成方法和裝置,其特征在于最終的立體驗證碼,形式由存儲方法和顯示方法決定,將左、右圖分別存儲為普通圖片文件,包括jpg、bmp、png、gif、tif,或存儲為常用的立體圖格式ΜΡ0。
全文摘要
本發(fā)明公開了一種立體驗證碼的生成方法和裝置,通過對無規(guī)律的散點圖進行切割、位移,把驗證碼內(nèi)容融入其中,得到立體驗證碼的左、右內(nèi)容圖;再通過對另一份無規(guī)律的散點圖進行非線性變形得到立體驗證碼的左、右背景圖,最終將立體驗證碼的左、右內(nèi)容圖和左、右背景圖合成為立體圖,本發(fā)明中左、右圖都是無規(guī)律的散點,無法分辨出任何信息,但使用正確的方式觀看立體圖,人眼可以看到“浮出”的驗證碼內(nèi)容;由于程序難以模仿人眼的立體感知能力,加之本發(fā)明對背景進行了非線性變形,所以程序難以識別驗證碼中的信息。
文檔編號G06T19/00GK102254355SQ20111018626
公開日2011年11月23日 申請日期2011年7月5日 優(yōu)先權(quán)日2011年7月5日
發(fā)明者周圣云 申請人:周圣云