图像放大和缩小
圖像放大和縮小
- 1. 圖像的縮小
- 2. 圖像的放大
- 3. 用python實(shí)現(xiàn)圖像的縮放
- 3.1 方法一:PIL庫(kù)實(shí)現(xiàn)
- 3.2 方法二:cv庫(kù)實(shí)現(xiàn)
1. 圖像的縮小
圖像縮小分為按比例縮小和不按比例縮小兩種。圖像向縮小后,因?yàn)槌休d的信息量減少,所以畫(huà)布可相應(yīng)縮小。圖像縮小實(shí)際上就是對(duì)原圖數(shù)據(jù)進(jìn)行挑選和處理,獲得期望縮小尺寸的數(shù)據(jù),并盡量保持原有特征不丟失。最簡(jiǎn)單的方法就是等間隔地選取數(shù)據(jù)。
設(shè)原始圖像大小為MN,縮小為k1Mk2N,(k1,k2 均小于1)。
設(shè)原始圖像為F(i,j),i=1,2,…,M j=1,2,…,N;
壓縮后的圖像為G(x,y),,x=1,2,…,k1M y=1,2,…,k2N;
則有G(x,y) = F(c1x,c2y),其中c1 = 1/k1,c2=1/k2;
示例:檔F(i,j)為6X6,k1=0.6,k2=0.75時(shí),有
那么,得到的G圖像行和列數(shù)為x=[1,60.6]=[1,4],四舍五入,最后留下4行,y=[1,60.75]=[1,5],最后留下5列。而行列所對(duì)應(yīng)的值為原始F保留的對(duì)應(yīng)目標(biāo)像素的值,即G(x,y) = F(c1x,c2y)。
2. 圖像的放大
圖像放大從信息處理的角度來(lái)看,與圖像縮小難易程度完全不一樣,圖像縮小是從眾多信息中選出需要的信息,而圖像放大則是需要對(duì)多出的空位填入適當(dāng)?shù)闹?#xff0c;是信息的估計(jì)。
當(dāng)放大倍數(shù)為整數(shù)時(shí),最簡(jiǎn)單的方法是將原圖像中的像素值,填在新圖像中對(duì)應(yīng)的kk大小的子塊中。
設(shè)原始圖像為F(i,j),i=1,2,…,M j=1,2,…,N;
放大后的圖像為G(x,y),,x=1,2,…,k1M y=1,2,…,k1N;
則有G(x,y) = F(c1i,c2*j),其中c1 = 1/k1,c2=1/k2
3. 用python實(shí)現(xiàn)圖像的縮放
3.1 方法一:PIL庫(kù)實(shí)現(xiàn)
相關(guān)庫(kù)PIL,PIL(Python Imaging Library,圖像處理庫(kù))提供了通用的圖像處理功能,主要包括圖像存儲(chǔ)、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作。
應(yīng)用PIL下Image類(lèi):
| src | <PIL.PngImagePlugin.PngImageFile image mode=RGB size=512x512 at 0x20AF35975C8> |
| resized | resized: <PIL.Image.Image image mode=RGB size=307x384 at 0x20AF4266AC8> |
| thumbnail | thumbnail: <PIL.PngImagePlugin.PngImageFile image mode=RGB size=307x307 at 0x20AF35975C8> |
thumbnail 縮略圖是網(wǎng)絡(luò)開(kāi)發(fā)或圖像軟件預(yù)覽常用的一種基本技術(shù)。thumbnail 方法直接修改原圖為縮略圖,不會(huì)另外創(chuàng)建新內(nèi)存。resized會(huì)在創(chuàng)建新的內(nèi)存保存縮放數(shù)據(jù)。
代碼實(shí)現(xiàn):
注意:返回的out3與out4是PIL Image的實(shí)例,直接調(diào)用show方法顯示,不能和cv中的imshow混用。
3.2 方法二:cv庫(kù)實(shí)現(xiàn)
cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]]) -> dst
interpolation - 插值方法。共有5種:
1)INTER_NEAREST - 最近鄰插值法
2)INTER_LINEAR - 雙線性插值法(默認(rèn))
3)INTER_AREA - 基于局部像素的重采樣(resampling using pixel area relation)。對(duì)于圖像抽取(image decimation)來(lái)說(shuō),這可能是一個(gè)更好的方法。但如果是放大圖像時(shí),它和最近鄰法的效果類(lèi)似。
4)INTER_CUBIC - 基于4x4像素鄰域的3次插值法
5)INTER_LANCZOS4 - 基于8x8像素鄰域的Lanczos插值
實(shí)現(xiàn)縮放:
代碼:
總結(jié)
- 上一篇: Unity学习——射箭游戏
- 下一篇: instagram授权流程(第二篇)