版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于Imagick和GD的WEB圖像處理技術(shù)摘要移動互聯(lián)網(wǎng)已經(jīng)邁入了5G時代,讓程序和功能變得輕量化是應(yīng)用程序產(chǎn)品設(shè)計的一個趨勢。隨著圖形處理器的不斷升級、移動端處理器性能不斷地提升,小程序、微程序以及WebAPP在可見的未來將成為應(yīng)用的主流形式。它們多以WEB形式(HTML+CSS+JS)為主體,擁有極強的兼容性、可移植性和跨平臺能力。圖像處理是信息化時代的重要功能。圖像處理技術(shù)不僅能靈活地提供哈希值感知、貝塞爾曲線繪制之類的專業(yè)功能,也能夠按照用戶需求進行圖像的基本屬性調(diào)整和處理。。通過GD以及Imagick這兩大開源庫,即便使用移動設(shè)備也可以進行專業(yè)的圖像處理,且處理效果并不遜于專業(yè)的PC端圖像處理軟件。本系統(tǒng)將以PHP為后端語言,對Imagick和GD兩大開源庫進行揚棄,并編寫一個專用的圖像處理庫以致力于在WEB場景下實現(xiàn)專業(yè)的圖像處理。關(guān)鍵詞:圖像處理技術(shù);Web服務(wù);Imagick;GDABSTRACTMobileInternethasenteredtheeraof5G,makingprogramsandfunctionslightweightisatrendofapplicationproductdesign.Withthecontinuousupgradingofthegraphicsprocessorandthecontinuousimprovementoftheperformanceofthemobileterminalprocessor,smallprograms,microprogramsandWebAPPwillbecomethemainstreamformsofapplicationsintheforeseeablefuture.TheyaremostlyintheformofWEB(HTML+CSS+JS)asthemainbody,withastrongcompatibility,portabilityandcross-platformability.Imageprocessingisanimportantfunctionintheinformationage.Theimageprocessingtechnologycannotonlyprovidethehashvalueperception,Besselcurvedrawingandotherprofessionalfunctionsflexibly,butalsocanadjustandprocessthebasicattributesoftheimageaccordingtotheuser'sneeds.ThroughGDandImagick,twoopensourcelibraries,professionalimageprocessingcanbecarriedoutevenusingmobiledevices,andtheprocessingeffectisnotinferiortothatofprofessionalPCimageprocessingsoftware.ThissystemwillusePHPastheback-endlanguagetodiscardImagickandGD,andwriteaspecialimageprocessinglibrarytoachieveprofessionalimageprocessingintheWEBscene.Keywords:Imageprocessingtechnology,Webservices,Imagick,GD目錄摘要 1ABSTRACT 1目錄 2第一章 緒論 41.1 研究背景及意義 41.2國內(nèi)外研究現(xiàn)狀 41.3主要研究工作及創(chuàng)新點 4第二章 相關(guān)理論和原理介紹 52.1系統(tǒng)運行環(huán)境 52.2圖片縮略圖處理 52.2.1等比及固定尺寸縮放 52.2.2居中剪裁 52.2.3等寬、等高縮放 62.3圖像相似度對比 62.4圖像剪裁 62.4.1基本位置裁剪 72.4.2智能剪裁 72.5GIF縮略圖處理 82.5.1GIF縮略圖壓縮 82.5.2GIF動畫效果移除 82.6圖片合并及水印疊加 82.7圖像旋轉(zhuǎn) 9第三章圖像濾鏡 103.1卷積核圖像處理 103.1.1空卷積核 113.1.2圖像銳化和邊緣檢測 113.1.3浮雕效果 123.1.4均值模糊 123.2高斯模糊 133.3圖像常用屬性調(diào)整 163.3.1圖像亮度調(diào)整 163.3.2改變圖片顏色及對比度 163.3.3圖像噪點及色階調(diào)整 163.3.4灰色及反色處理 173.3.5柵格化處理 17第四章繪制貝塞爾曲線 17第五章實驗結(jié)果和渲染效果 185.1圖片相似度對比實驗結(jié)果 185.2圖片智能剪裁效果 205.3圖片合并及水印疊加效果 205.4圖片亮度線性調(diào)整效果 215.5改變圖片顏色及對比度效果 215.6圖像噪點及色階調(diào)整效果 235.7灰度及反色處理渲染:效果 235.8柵格化處理效果 245.9繪制貝塞爾曲線 245.9.1一階貝塞爾曲線 245.9.2繪制二階貝塞爾曲線 245.9.3繪制三階貝塞爾曲線 245.9.4繪制高階貝塞爾曲線 25第六章總結(jié)與展望 256.1總結(jié) 256.2展望 26參考文獻 27
緒論研究背景及意義在WEB領(lǐng)域中,Imagick和GD是兩種主流的圖像處理類庫。他們各有所長,但在專業(yè)領(lǐng)域比如模糊處理、添加濾鏡、相似度對比、貝塞爾曲線繪制等方面均有不足之處。我國的高速信息網(wǎng)絡(luò)正在迅猛發(fā)展中,信息社會已經(jīng)邁入了5G時代。與此同時,我國云串流、云服務(wù)等新興產(chǎn)業(yè)也在茁壯成長中。市場上正缺少一款既專業(yè)、穩(wěn)定,又能實現(xiàn)跨平臺操作的圖像處理解決方案。高速信息通信網(wǎng)絡(luò)環(huán)境是孕育著云應(yīng)用。基于云計算,云計算運營商為用戶提供的服務(wù)被稱作云應(yīng)用。云應(yīng)用是云計算的最終目的,也就是將應(yīng)用程序甚至是操作系統(tǒng)安裝在云端,通過本地的虛擬化或輕量型接口訪問云應(yīng)用并獲得與本地應(yīng)用相似或更優(yōu)越的性能體驗。受制于傳統(tǒng)的4G網(wǎng)絡(luò)速度和為普及的高速光纖網(wǎng)絡(luò)帶來的高丟包率、高延遲和低帶寬,導(dǎo)致云應(yīng)用的體驗不完整、不流暢,產(chǎn)業(yè)研發(fā)投入也較少。隨著5G的全面商用,云應(yīng)用的需求正日益迫切?;赪ebAPP的云應(yīng)用成了跨平臺程序的主流開發(fā)方案。圖像云處理應(yīng)用作為高頻使用場景的一種,也是市場上迫切需要的產(chǎn)品。1.2國內(nèi)外研究現(xiàn)狀Web圖像處理技術(shù)在國內(nèi)的研究成果雖然非常豐富,但大多是基于工業(yè)工程、醫(yī)療領(lǐng)域、機器學(xué)習(xí)方面的圖像識別研究。輕量型的民用跨平臺產(chǎn)品市場主要被國外的成果所占據(jù)。美國微軟公司早于2010年就推出了MicrosoftOffice系列產(chǎn)品的網(wǎng)頁版,并于2016年推出Office365的網(wǎng)頁版。這一系列的云產(chǎn)品的實際使用體驗并不遜于本地安裝的同系列產(chǎn)品,并且還有異地辦公、數(shù)據(jù)同步和多人協(xié)作編輯的優(yōu)勢。世界知名的軟件公司AdobeS.I(推出了著名的Photoshop)也于2014年宣布,與谷歌公司合作進行Adobe系列的云產(chǎn)品研發(fā)。我國5G商用起步早、網(wǎng)絡(luò)資費低、光纖網(wǎng)絡(luò)正在逐步普及。相信在不久的將來,我國的云應(yīng)用、云圖像處理產(chǎn)業(yè)會越來越完善。1.3主要研究工作及創(chuàng)新點為了使Web圖像處理應(yīng)用程序獲得專業(yè)的使用體驗,本文將重點研究基于Imagick和GD的基礎(chǔ)類庫處理、Web應(yīng)用運行環(huán)境構(gòu)建、圖片相似度對比、圖片智能剪裁、基于卷積核圖像處理的高斯模糊算法以及貝塞爾曲線繪制算法。與Imagick和GD不同,本系統(tǒng)主要在智能剪裁、圖像主體智能識別、圖片相似度對比等方面使用了基于直方圖的算法,使得主體判斷更加方便和人性化,提高了系統(tǒng)的專業(yè)性以及用戶的實際使用體驗。與傳統(tǒng)的桌面端應(yīng)用程序不同,本實驗所研究的Web圖像處理技術(shù)將在保留完整功能的基礎(chǔ)上,以跨平臺和云服務(wù)為出發(fā)點,打造一款高性能的Web圖像處理技術(shù)方案。本文將基于Imagick和GD,建立一個高度集成、專業(yè)的WEB圖像處理類庫,來滿足日益增長的對跨平臺圖像處理功能的需要。相關(guān)理論和原理介紹2.1系統(tǒng)運行環(huán)境Imagick和GD是兩款款依賴于PHP的圖像處理拓展類庫??紤]到面對云服務(wù)的高并發(fā)需求,實驗平臺采用CentOS7+PHP7.4.3。處理器采用了IntelXeonX5672服務(wù)器級處理器,3.2GHz主頻,四核八線程,并配備了64G的ECC內(nèi)存,可以勝任中型流量和并發(fā)的服務(wù)請求和穩(wěn)定性需求。在Linux操作系統(tǒng)中安裝PHP需要先安裝autoconf,gcc,fcc-c++,ImageMagick-devel依賴,以便后續(xù)的編譯拓展模塊操作。2.2圖片縮略圖處理2.2.1等比及固定尺寸縮放等比縮放的實現(xiàn)主要依靠Imagick中寬高比的計算。本系統(tǒng)聲明一個全局方法:publicfunctionresizeFit(&$image,$newWidth,$newHeight)。&$image為輸入的父圖像的地址,$newWidth為生成的子圖像的寬,$newHeight為子圖像的高。本文先設(shè)定一個$width變量使它等于父圖像的寬,同理設(shè)定一個$height變量使它等于父圖像的高。設(shè)置$ratio為父圖像的寬與高之比:$width/$height。這里涉及到一個問題,就是用戶究竟是想以新設(shè)定的高為基準(zhǔn)還是以寬為基準(zhǔn)進行等比縮放?故本系統(tǒng)會先進行一個簡單的判斷。默認情況下,先以新寬為基準(zhǔn)進行等比縮放處理,新建一個$resizeWidth=$newWidth;$resizeHeight=round($newWidth/$ratio)。此后,先將經(jīng)過等比縮放計算后的寬$resizeHeight與用戶輸入的設(shè)定寬$newHeight進行對比。如果$resizeWidth>$newWidth或$resizeHeight>$newHeight,則可以判斷新設(shè)定的寬高比不匹配,故再重新以高為基準(zhǔn)。設(shè)置$resizeHeight為$newHeight,再重新用$newHeight乘以寬高比$ratio,將計算后的寬度賦值給$resizeWidth。將這一對符合比例的寬高比輸出并重塑圖像尺寸即可。固定尺寸縮放則無需計算寬高比,直接按照用戶輸入的新款和新高重塑子圖像尺寸。本系統(tǒng)聲明一個全局方法:publicfunctionresizeExact(&$image,$newWidth,$newHeight)。2.2.2居中剪裁居中剪裁的主要思路是先用等比縮放,把較短的邊等比縮放縮放到新的尺寸a,然后將長邊的大于a的部分居中剪裁掉,這樣圖片不會變形。本系統(tǒng)聲明一個全局方法:publicfunctioncrop(&$image,$cropWidth,$cropHeight,$position='center',$offsetX=0,$offsetY=0)來進行所有的剪裁操作,默認為居中剪裁。該方法會在第四部分的“智能剪裁”中進一步使用,故本部分先使用$position=’center’來進行居中剪裁操作,先求得縮放后的圖片的居中線的位置,再將用戶輸入的$cropWidth或$cropHeight(長邊)取半分別延長至距中線兩端,獲得居中剪裁后新的圖片的坐標(biāo)x和y。使用Imagick或GD中的內(nèi)置方法依照坐標(biāo)進行剪裁即可。
2.2.3等寬、等高縮放與等比縮放不同的是,等寬和等高縮放無需考慮另一變量的值,按照用戶的設(shè)定忠實的進行等比縮放即可。2.3圖像相似度對比對比圖片的相似度有許多算法,平均哈希算法(aHash)是一種常用的算法。它也通常被運用于文件完整性的校驗中。平均哈希算法通過以下的步驟來獲得圖片的Hash值。(a)對目標(biāo)圖片進行縮放;(b)將目標(biāo)圖片轉(zhuǎn)單通道灰度;(c)計算平均像素值;(d)根據(jù)c步驟求出的值計算指紋。因此該算法實現(xiàn)起來較為簡單。表1aHash得到圖片Hash值地算法步驟具體內(nèi)容縮放圖片輸入圖片大小尺寸各異,為了統(tǒng)一圖片的輸入,統(tǒng)一將圖片尺寸縮放為8*8,一共得到了64個像素點。轉(zhuǎn)灰度圖輸入圖片的灰度圖類型各異。通常由RGB三通道、RGBA四通道彩色,單通道灰度等組成。為了統(tǒng)一下一步輸入標(biāo)準(zhǔn),將非單通道圖片都轉(zhuǎn)為單通道灰度圖。其中RGB三通道轉(zhuǎn)單通道算法有下面幾種:1.浮點算法:Gray=R0.3+G0.59+B0.112.整數(shù)方法:Gray=(R30+G59+B11)/1003.移位方法:Gray=(R76+G151+B*28)>>8;4.平均值法:Gray=(R+G+B)/3;5.僅取綠色:Gray=G;算像素均值通過上一步可得一個8x8的整數(shù)矩陣G,計算這個矩陣中所有元素的平均值,假設(shè)其值為a據(jù)像素均值計算指紋初始化輸入圖片的ahash=""從左到右一行一行地遍歷矩陣G每一個像素如果第i行j列元素G(i,j)>=a,則ahash+="1"如果第i行j列元素G(i,j)<a,則ahash+="0"之后,通過計算出的指紋來比較漢明距離。如果兩組圖片的漢明距離小于或等于10,那么一般可以認為他們是相似的。2.4圖像剪裁圖像剪裁分為人工剪裁和智能剪裁兩種方式。智能剪裁是自動識別圖像中的重要部分,剪裁時候偏向于保留重點部分。
2.4.1基本位置裁剪基本位置剪裁包含9個位置,如下圖所示:基本剪裁利用Imagick內(nèi)置的crop方法中對$position不同值所代表的的不同變量的x與y值坐標(biāo)的計算,進行剪裁并逐一輸出。2.4.2智能剪裁智能剪裁的目的,是要在一張圖片中,自動識別圖片的重點內(nèi)容,并按照用戶輸入的剪裁后的圖片尺寸,在保留重點內(nèi)容的情況下進行裁剪。創(chuàng)建一個全局方法:privatefunction_smartCrop($oldImage,$cropW,$cropH)。其中$oldImage為父圖片,$cropW為裁剪后輸出的子圖片的寬度,$cropH為裁剪后輸出的子圖片的高度。對這一功能實現(xiàn),主要依賴Imagick和GD中的histogram()方法,通過圖像二值化來進行智能剪裁。圖像二值化的目的是最大限度的將圖象中感興趣的部分保留下來,在很多情況下,也是進行圖像分析、特征提取與模式識別之前的必要的圖像預(yù)處理過程。系統(tǒng)采用基于兩個峰值平均值的閾值(雙峰法)。1996年,Prewitt提出了直方圖雙峰法,即當(dāng)灰度直方圖明顯為雙峰時,選取兩個峰值之間谷底對應(yīng)的灰度作為閾值。這個函數(shù)的實現(xiàn)是一個迭代的過程。在每次處理之前,判斷直方圖數(shù)據(jù)是否為雙峰直方圖。如果沒有,則對直方圖數(shù)據(jù)進行半徑為1的平滑處理(窗口大小為3)。若重復(fù)一定次數(shù),如1000次未得到雙峰直方圖,則該函數(shù)無法執(zhí)行。如果成功,則最終閾值為兩個峰值之間的底值。值得說明的是,原始直方圖需要平滑。平滑需要在當(dāng)前像素之前的信息,因此需要在平滑之前備份數(shù)據(jù)。此外,受數(shù)據(jù)類型精度的限制,必須將其轉(zhuǎn)換為浮點數(shù)據(jù)進行處理。如下圖所示的平滑后的直方圖,便是滿足本算法的基本圖型。對于那些具有平坦的直方圖或單峰圖像,該方法不合適。2.5GIF縮略圖處理2.5.1GIF縮略圖壓縮GIF縮略圖壓縮要求對GIF圖片進行分辨率的修改的同時保留其動畫。由于GIF動畫都是多個基礎(chǔ)圖片作為基礎(chǔ)幀,將連續(xù)幀逐幀播放來實現(xiàn)動畫的效果,因此只需分離GIF動畫的每一幀圖片,再對分離出來的圖片逐個進行分辨率壓縮即可。使用GD內(nèi)置的使用resizeFit()方法可以實現(xiàn)對GIF動畫的分離和壓縮操作。2.5.2GIF動畫效果移除移除動畫效果的原理是隨機抽取GIF中的一個圖片幀并輸出。使用Imagick中的flatten()方法,將GIF處理為單幀圖片并輸出。2.6圖片合并及水印疊加圖片合并,是將兩張或多張圖片合并為一張圖片的處理方式。通常以一張為底圖,將其他圖片以種種方式處理后,添加到底圖的上方的某些位置,并重新渲染為一張新的圖片。進行圖片合并處理的重要前提是確定圖片每一點元素的位置。因此需要先使用二維數(shù)組來對圖片建立平面直角坐標(biāo)系。首先,對圖片建立直角坐標(biāo)系,確定底圖的位置,將底圖整體平均劃分為9個區(qū)域,分別是:top-left,top-center,top-right,center-left,center,center-right,bottom-left,bottom-center,bottom-right。其次,將欲合并的圖片按照每個區(qū)域的分辨率進行等比縮放。最后,依次將縮放后的欲合并圖片的左頂點、右頂點與合并區(qū)域的左頂點、右頂點坐標(biāo)貼合。如有需要,可以再次對圖片進行效果渲染。系統(tǒng)使用GD引擎帶有的一個全局方法blend()。這個方法除了提供常規(guī)的圖片合并之外,還提供了圖片合并時,對底圖以外的圖片需要進行哪些程度的二次處理。通過這一方法實現(xiàn)的圖片合并可以實現(xiàn)添加水印、長截圖合并等效果。2.7圖像旋轉(zhuǎn)圖像的旋轉(zhuǎn)是圖像處理中的一項基本功能。它需要將目標(biāo)圖像進行任意角度的平面旋轉(zhuǎn),同時需要給被旋轉(zhuǎn)后的圖片重新定義分辨率,給底色進行重新上色等操作。這項操作主要依賴PHP集成的imagerotate()方法進行定角度圖像旋轉(zhuǎn)以及GD的imagecolorallocatealpha()方法來為圖像分配顏色透明度。PHP全局方法:imagerotate(resource$image,float$angle,int$bgd_color[,int$ignore_transparent=0]):resource將src_im圖像用給定的angle角度旋轉(zhuǎn)。bgd_color指定了旋轉(zhuǎn)后沒有覆蓋到的部分的顏色。旋轉(zhuǎn)的中心是圖像的中心,旋轉(zhuǎn)后的圖像會按比例縮小以適合目標(biāo)圖像的大小,邊緣不會被剪去。GD中:intimagecolorallocatealpha(resource$image,int$red,int$green,int$blue,int$alpha)imagecolorallocatealpha()的行為和imagecolorallocate()相同,但多了一個額外的透明度參數(shù)alpha,其值從0到127。0表示完全不透明,127表示完全透明。效果主要實現(xiàn)流程如下:①使用imagerotate()進行圖片角度旋轉(zhuǎn),并進行透明處理②使用imagecolorallocatealpha()為透明部分填充用戶設(shè)定的底色第三章圖像濾鏡在圖片處理中,濾鏡效果是非常常用的功能。本文主要用圖像卷積濾波(卷積核)來實現(xiàn)諸如浮雕、高斯模糊之類的效果。3.1卷積核圖像處理在模糊處理中,最常用的是高斯模糊(GaussianBlur)。要實現(xiàn)高斯模糊,與圖像卷積濾波有密切的關(guān)系。圖像卷積濾波是圖像處理最基本的方法,可以產(chǎn)生非常多不同的效果。圖中的矩陣為二維原始像素矩陣、二維圖像濾波矩陣(又稱卷積核,濾波器和卷積核是同一概念)以及最終濾波后的新像素圖像。對于原始圖像的每個像素,計算其域像素和濾波矩陣的相應(yīng)元素的結(jié)果,然后相加作為當(dāng)前中心像素位置的值,從而完成濾波處理。原始圖像經(jīng)過一定的卷積核處理后可以轉(zhuǎn)換成另一幅圖像。對于過濾器而言,有一定的規(guī)則:①過濾器的大小應(yīng)該是奇數(shù),這樣它就有一個中心。如3x3、5x5或7x7。有一個中心,也就有一個半徑。例如,一個5×5大小的核的半徑是2。②濾波器矩陣的所有元素之和應(yīng)該等于1,這是確保過濾前后圖像的亮度保持不變。當(dāng)然,這不是一個嚴(yán)格的要求。③如果濾波器矩陣的所有元素的總和大于1,則濾波后的圖像比原圖像要亮。反之,如果小于1,由此產(chǎn)生的圖像將更暗。如果總和為0,圖像不會變黑,但也很暗。④對于過濾后的結(jié)構(gòu),可能會出現(xiàn)大于255的負數(shù)或值。在這種情況下,我們將它們直接截斷在0到255之間。對于負數(shù),也可以采用絕對值。濾波器對原圖進行操作有以下幾種具體的例子。3.1.1空卷積核空卷積核沒有做任何事情,直接輸出到原始圖像中。因為只有中心點的值是1。鄰域點的權(quán)值為零,因此對濾波后的值沒有影響。3.1.2圖像銳化和邊緣檢測 圖像的銳化與邊緣檢測非常相似,首先找到邊緣,然后在原始圖像中加入邊緣。這樣一來就增強了圖像的邊緣,使圖像看起來更加清晰。將兩者的操作統(tǒng)一起來對濾波器進行銳化,即在邊緣檢測濾波器的基礎(chǔ)上,再在中間加1,使濾波后的圖像具有與原始圖像相同的亮度,但會更加銳化。如果增加核的維度和深度,會得到更精密的銳化:3.1.3浮雕效果浮雕濾鏡賦予圖像3D陰影效果。只需從另一側(cè)的像素中減去中心一側(cè)的像素即可。這時像素值可以是負數(shù),我們把負數(shù)看成陰影,把正數(shù)看成光,然后給得到的圖像加上128的偏移。這時,大多數(shù)圖片都變成了灰色。這是一個45度的浮雕過濾器:如果繼續(xù)增加核的維度和深度,會得到更夸張的效果:3.1.4均值模糊我們可以將當(dāng)前像素與其四個鄰域的像素平均。之后再將整個矩陣除以5,或者直接在濾波器的5個位置取0.2的值,如下所示:加大核后:由此可見,均值模糊也可以使圖像模糊,但其模糊性不是很平滑,模糊的主要原因是遠離中心的點與接近中心的權(quán)值相同,產(chǎn)生的模糊效果也一樣。為了實現(xiàn)平滑,使權(quán)重值跟隨中心的距離并變化,可以通過正態(tài)分布的性質(zhì)即中間大、兩端小來實現(xiàn)。3.2高斯模糊高斯模糊(英語:GaussianBlur),又稱高斯平滑。它常常被用于降低圖像噪聲和細節(jié)層次。這種模糊技術(shù)產(chǎn)生的圖像具有羊毛玻璃所觀測到的視覺效果,與鏡頭的離焦成像效果和普通照明的陰影效果有明顯的不同。若要實現(xiàn)高斯模糊,則需要通過構(gòu)建對應(yīng)的權(quán)重矩陣來進行濾波。正態(tài)分布中,越接近中心點,取值越大,越遠離中心,取值越小。在計算平均值時,我們只需要以“中心點”為原點,而其他點則按正常曲線的位置來分配權(quán)重,這樣就可以得到權(quán)重平均值。正態(tài)分布是一種明顯可取的加權(quán)分配模型。反映正態(tài)分布需要使用高函數(shù)來實現(xiàn)。如上圖所示分布是一維的。我們需要二維的正態(tài)分布來處理二維的圖像和圖片數(shù)據(jù)。我們常用高斯函數(shù)來描述正態(tài)分布的密度。高斯函數(shù)有多重維度的表達。其一維形式是:f在上面的函數(shù)中,σ為方差。μ為均值。在我們計算權(quán)重平均值時,中心點為原點。因此,這里的μ=0。f根據(jù)一維高斯函數(shù),可以推導(dǎo)得到二維高斯函數(shù):g有了高斯函數(shù)的二維展開表達式,就可以開始計算權(quán)重矩陣了。假定中心點的坐標(biāo)是(0,0),則與其的距離最近的8個點的坐標(biāo)如下圖所示:與中心點距離更大的點的坐標(biāo)也可以以此類推。我們還需要設(shè)定σ的值來繼續(xù)計算權(quán)重矩陣。設(shè)σ的值為1.5,則模糊半徑為1的權(quán)重矩陣如下:這9個點的權(quán)重總和等于0.4787147。若僅僅計算這9個點的加權(quán)平均值是不夠的。我們必須讓它們的權(quán)重之和等于1。所以,上面的9個值還要分別除以0.4787147,從而獲取最終的權(quán)重矩陣。除以總值這個過程也稱作“歸一問題”?!皻w一”的最終目的是要讓矩陣的權(quán)重總值等于1。如果權(quán)重總值大于1的話,使用的濾鏡會讓圖像更偏明亮。如果權(quán)重總值<1,那這樣的濾鏡會讓圖像偏暗。我們可以通過權(quán)重矩陣來計算高斯模糊的值。設(shè)某圖像有9個pixelpoints,其灰度值如下(0~255):每個點乘以自己對應(yīng)的權(quán)重值:得到新的權(quán)重矩陣:將這矩陣中9個像素點的權(quán)重值加起來,我們可以得到中心點的高斯模糊的值。之后,我們需要對所有的像素點重復(fù)這個過程。重復(fù)完成后,就可以“高斯模糊”處理后的圖像。如果圖片時彩色的(彩色圖片一般是RGB或RGBA四通道),那么就需要對三個通道分別做“高斯模糊”。如果一個點在邊界上,而且周邊沒有足夠的點(如下圖)會采用以下3種處理方法:
方法一:對稱處理。對稱處理的基本方法是建立鏡像,把原像上的每一點拷貝到鏡像上的對應(yīng)位置。通過這一處理方法來模擬出新的矩陣。方法二:將其賦值為0。我們將圖像想象為無限長。而我們要處理的邊界則是這樣的一個圖像的一部分。那么,除了我們給定值的部分,其余部分的像素值都為0。方法三:為邊界賦值。與方法二不同,雖然同樣要將圖像想象為無限長,但是我們并不是將邊界賦值為0,而是賦值為對應(yīng)的附近的邊界點的值。3.3圖像常用屬性調(diào)整3.3.1圖像亮度調(diào)整在GD中,我們采用的是線性的亮度調(diào)整算法。利用色相、飽和度、亮度(Hue,Saturation,Lightness)顏色空間來進行調(diào)整。我們僅僅需要調(diào)整亮度的部分(Lightness)既可以調(diào)節(jié)整個圖像的亮度表現(xiàn)。本系統(tǒng)直接調(diào)用其GD中算法接口使用。使用Brightness()函數(shù),加亮或者變暗圖片。3.3.2改變圖片顏色及對比度改變圖片顏色的實質(zhì)是調(diào)整Red,Green,Blue三色通道。使用Imagick中內(nèi)置的colorize()函數(shù)。這樣就可以調(diào)節(jié)圖片的紅綠藍三個通道的BasicColor來改變圖片的顏色。Colorize()函數(shù)需要設(shè)定紅、綠、藍三種顏色的參數(shù)范圍:如果取值在(-100,1)之間,則對比度會降低。如果不作出任何更改,則設(shè)定為使用GD的Contrast()方法也可以改變圖片的對比度:(-100,-1)則減少;0不作變化;3.3.3圖像的噪點以及色階調(diào)整使用GD的dither()方法來為圖像添加一定的噪點,讓圖片獲得更豐富的細節(jié)層次。該方法只有兩個參數(shù):$diffusion和$ordered。它們分別可以讓噪點分布更加擴散和更加規(guī)整。使用Imagick的gamma()方法也可以進行色階調(diào)整。3.3.4灰色及反色處理分別使用GD的Grayscale參數(shù)和Invert參數(shù)來進行灰度和反色處理。3.3.5柵格化處理柵格化,是把矢量圖像轉(zhuǎn)換成像素點組成的點陣圖像,也叫像素畫。這里使用Imagick的Pixelate參數(shù)進行柵格化處理。第四章繪制貝塞爾曲線貝塞爾曲線是二維圖形處理程序中廣泛使用的數(shù)學(xué)曲線(BezierCurve)。貝塞爾曲線由起始點、錨點和控制點組成。起始點在曲線開始的一段,錨點在曲線結(jié)束或固定結(jié)點的一段。控制起始點和錨點之間的控制點的位置,曲線的形狀會發(fā)生不同程度的彎曲。它的的實現(xiàn)原理如下:設(shè)P0,P02,P2,是一條隨機曲線上的順序三個不同的點(如下圖所示,為起始點和錨點)。過P0和P2點所作的兩條切線相交于P1。再P02P當(dāng)P0,P2固定,引入?yún)?shù)PPP當(dāng)t∈(0,1)時,式A和B分別表示控制二邊形的第一條邊和第二條邊。這兩個式子分別表示兩條一次的貝塞爾曲線曲線。我們再將A、B兩式代入C式得:P當(dāng)t∈(0,1)時,它表示了由P0,P1,P2三個點所規(guī)范的一條二次貝塞爾曲線P02。并且這個式子表示,這由此可以推導(dǎo)得出,由4個點定義的三次貝塞爾曲線P03可以有如下的定義:由點(P0,P1,P2)和(P1,P2,P3)所規(guī)范的兩條二次貝塞爾曲線的線性組合。由n+1個控制點PP由此推出各次貝塞爾曲線的遞推計算公式:P由此我們可以在程序中使用此計算公式繪制貝塞爾曲線。第五章實驗結(jié)果和渲染效果5.1圖片相似度對比實驗結(jié)果實驗以Lena圖為原圖:圖1Lena(Origin)圖縮放為8×8,得到64個像素點:圖28x8分辨率下使用float算法處理得到了灰度下8×8分辨率的Lena圖:圖3灰度下8x8分辨率其中8x8分辨率下對應(yīng)的數(shù)據(jù)矩陣為:通過計算,可以得到上面矩陣的均值a=121.328125,。將上面的矩陣中所有≥a的位置為1,<a的位置=0,可以得到新的二進制矩陣:所以可得Lena圖的aHash為:1011111010011110100111011010100110101011101000110000111000101100將二進制的ahash轉(zhuǎn)十六進制的哈希值可以得到:BE9測試一下aHash算法。使用一張帶噪聲的麗娜圖(圖片上隨便畫一點東西來增加噪聲)和另一張完全不一樣的圖片來做相似度對比。圖4Lena(noise)圖 圖5Barbara圖通過aHash算法我們得出圖1、圖4、圖5三個圖片的哈希值。之后用漢明距離來計算圖1、圖4、圖5之間的漢明距離。圖6實驗結(jié)果這里證實了我們通過ahash算法來區(qū)別圖片的相似度是成功的,這一功能可用于智能識圖的算法建立圖像指紋。5.2圖片智能剪裁效果使用2.4.2的圖像智能剪裁方法,對父圖片進行智能剪裁后,輸出的子圖片如下圖所示,可能一定程度上還是能突出主體的。5.3圖片合并及水印疊加效果normal模式+center位置的渲染效果及multiplay模式及top-left位置的渲染效果:overlay模式+bottom-right位置的渲染效果及2、 screen模式+top-left位置的渲染效果:5.4圖片亮度線性調(diào)整效果5.5改變圖片顏色及對比度效果改變圖片顏色:改變圖片對比度:
5.6圖像噪點及色階調(diào)整效果圖像噪點調(diào)整:圖像色階調(diào)整:5.7灰度及反色處理渲染:效果灰度處理反色處理:
5.8柵格化處理效果5.9貝塞爾曲線的繪制5.9.1一階曲線一階曲線就是一根簡單的線段,是由曲線(P0,P1)之間5.9.2二階曲線二階貝塞爾曲線是一條拋物線,是分別由曲線(P0,P1)之間的連續(xù)點Q0、由(P1,P2)的連續(xù)點QB(t)=5.9.3三階曲線5.9.4繪制高階貝塞爾曲線以四階貝塞爾曲線的繪制為例:在WEB領(lǐng)域中,常用高階貝塞爾曲線來繪制驗證碼圖形,如:第六章總結(jié)與展望6.1總結(jié)在陸續(xù)攻克了硬件環(huán)境問題、系統(tǒng)環(huán)境搭建、Imagick和GD類庫調(diào)用及修改、平均哈希值求圖片相似度、卷積核實現(xiàn)銳化、浮雕效果、均值模糊、高斯模糊實驗、貝塞爾曲線繪制等一系列困難和挑戰(zhàn)后,最終完成了本文的實驗?zāi)康摹T趯嶒炦^程中,在卷積核圖像處理中,所學(xué)的線性代數(shù)的知識發(fā)揮了重要的作用,同時其他的數(shù)學(xué)知識也幫助我成功地推導(dǎo)貝塞爾曲線的遞推計算公式并,用算法實現(xiàn)了繪制貝塞爾曲線的功能。這讓我意識到,數(shù)學(xué)也是計算機科學(xué)中不可或缺的重要技能。實驗結(jié)果非常令人滿意。高斯模糊的渲染效果符合了實驗的預(yù)期。圖片相似度對比的正確率也達到了99%。我也成功地通過渲染高階貝塞爾曲線成功進行了隨機驗證碼的生成??傮w來說,實驗非常地成功。圖片的水印疊加功能在修改了GD處理庫的原生方法后,用更自然地方式復(fù)現(xiàn)了功能。本文所構(gòu)建的系統(tǒng)已經(jīng)可以滿足絕大多數(shù)的線上圖片處理的需求。除了基礎(chǔ)的圖片剪裁、分辨率修改、屬性調(diào)整等功能之外,還提供了圖片相似度對比、浮雕效果、均值模糊、高斯模糊、柵格化處理、貝塞爾曲線繪制等專業(yè)功能,讓系統(tǒng)能在更多的使用場景下發(fā)揮作用。其中,采用了平均哈希算法的圖片相似度對比傳統(tǒng)的圖片相似度對比開銷更小
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024土地抵押權(quán)轉(zhuǎn)讓居間合同附風(fēng)險評估3篇
- 日照公司借貸合同范例
- 租金代位求償 合同范例
- 2024土地承包合同補充協(xié)議范本確保土地承包合同實施效果3篇
- 辣椒種苗售賣合同范例
- 招聘專員績效合同范例
- 2024全新幼兒園入園兒童教育成果展示及評價合同下載3篇
- 電子商品租賃合同范例
- 合伙辦學(xué)合同范例
- 拆除裝修合同范例
- 民辦學(xué)校教職工入職背景審查制度
- 2024年新人教版四年級數(shù)學(xué)上冊《教材練習(xí)21練習(xí)二十一(附答案)》教學(xué)課件
- 2024年湛江市農(nóng)業(yè)發(fā)展集團有限公司招聘筆試沖刺題(帶答案解析)
- 商業(yè)倫理與社會責(zé)任智慧樹知到期末考試答案2024年
- MOOC 創(chuàng)新思維與創(chuàng)業(yè)實驗-東南大學(xué) 中國大學(xué)慕課答案
- 二級公立醫(yī)院績效考核三級手術(shù)目錄(2020版)
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺詞完整版
- GB/T 16865-1997變形鋁、鎂及其合金加工制品拉伸試驗用試樣
- 校長考核民意測評表
- 副市長在全市財政工作會議上的講話
評論
0/150
提交評論