注意1:图像插值理论的理解
對(duì)interpolation的說(shuō)明:
interpolation : string, optional, default: None
Acceptable values are 'none', 'nearest', 'bilinear', 'bicubic',
'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser',
'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc',
'lanczos'
If `interpolation` is None, default to rc `image.interpolation`.
See also the `filternorm` and `filterrad` parameters.
If `interpolation` is 'none', then no interpolation is performed
on the Agg, ps and pdf backends. Other backends will fall back to
'nearest'.
插值:字符串,可選,默認(rèn):無(wú)
???????????? 可接受的值是“無(wú)”,“最接近”,“雙線性”,“雙三次”,
???????????? “spline16”,“spline36”,“hanning”,“hamming”,“hermite”,“kaiser”
???????????? 'quadric','catrom','gaussian','bessel','mitchell','sinc',
????????????“蘭克澤斯”
???????????? 如果`interpolation`為None,則默認(rèn)為rc`image.interpolation`。
???????????? 另見(jiàn)`filternorm`和`filterrad`參數(shù)。
???????????? 如果“插值”為“無(wú)”,則不執(zhí)行插值
???????????? 在Agg,ps和pdf后端。 其他后端將回落到
????????????“最近”。
?
圖像的縮放很好理解,就是圖像的放大和縮小。傳統(tǒng)的繪畫工具中,有一種叫做“放大尺”的繪畫工具,畫家常用它來(lái)放大圖畫。當(dāng)然,在計(jì)算機(jī)上,我們不再需要用放大尺去放大或縮小圖像了,把這個(gè)工作交給程序來(lái)完成就可以了。下面就來(lái)講講計(jì)算機(jī)怎么來(lái)放大縮小圖象;在本文中,我們所說(shuō)的圖像都是指點(diǎn)陣圖,也就是用一個(gè)像素矩陣來(lái)描述圖像的方法,對(duì)于另一種圖像:用函數(shù)來(lái)描述圖像的矢量圖,不在本文討論之列。
越是簡(jiǎn)單的模型越適合用來(lái)舉例子,我們就舉個(gè)簡(jiǎn)單的圖像:3X3 的256級(jí)灰度圖,也就是高為3個(gè)象素,寬也是3個(gè)象素的圖像,每個(gè)象素的取值可以是 0-255,代表該像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如圖像的象素矩陣如下圖所示(這個(gè)原始圖把它叫做源圖,Source):
234???38????22
67?????44????12
89?????65????63
?
這個(gè)矩陣中,元素坐標(biāo)(x,y)是這樣確定的,x從左到右,從0開(kāi)始,y從上到下,也是從零開(kāi)始,這是圖象處理中最常用的坐標(biāo)系,就是這樣一個(gè)坐標(biāo):
?
??---------------------->X
??|
??|
??|
??|
??|
∨Y
?
如果想把這副圖放大為 4X4大小的圖像,那么該怎么做呢?那么第一步肯定想到的是先把4X4的矩陣先畫出來(lái)再說(shuō),好了矩陣畫出來(lái)了,如下所示,當(dāng)然,矩陣的每個(gè)像素都是未知數(shù),等待著我們?nèi)ヌ畛?#xff08;這個(gè)將要被填充的圖的叫做目標(biāo)圖,Destination):
???????????????????????????
???????????????????????????
???????????????????????????
???????????????????????????
現(xiàn)在從最簡(jiǎn)單的情況說(shuō)起
1.最近鄰插值
該算法是最簡(jiǎn)單的插值算法,就只是把放大后缺失的點(diǎn)的像素值用最靠近的原圖的像素值直接填進(jìn)去就可以了,比如坐標(biāo)為(0,0),那么該坐標(biāo)對(duì)應(yīng)源圖中的坐標(biāo)可以由如下公式得出:
放大系數(shù)t=dstWidth/srcWidth=4/3
srcX=dstX/t, srcY = dstY/t
好了,套用公式,就可以找到對(duì)應(yīng)的原圖的坐標(biāo)了(0/(4/3),0/(4/3))=>(0,0)
,找到了源圖的對(duì)應(yīng)坐標(biāo),就可以把源圖中坐標(biāo)為(0,0)處的234象素值填進(jìn)去目標(biāo)圖的(0,0)這個(gè)位置了。
接下來(lái),如法炮制,尋找目標(biāo)圖中坐標(biāo)為(1,0)的象素對(duì)應(yīng)源圖中的坐標(biāo),套用公式:
(1/0.75,0*0.75)=>(0.75,0)
結(jié)果發(fā)現(xiàn),得到的坐標(biāo)里面竟然有小數(shù),這可怎么辦?計(jì)算機(jī)里的圖像可是數(shù)字圖像,象素就是最小單位了,象素的坐標(biāo)都是整數(shù),從來(lái)沒(méi)有小數(shù)坐標(biāo)。這時(shí)候采用的一種策略就是采用四舍五入的方法(也可以采用直接舍掉小數(shù)位的方法),把非整數(shù)坐標(biāo)轉(zhuǎn)換成整數(shù),好,那么按照四舍五入的方法就得到坐標(biāo)(1,0),完整的運(yùn)算過(guò)程就是這樣的:
(1*0.75,0*0.75)=>(0.75,0)=>(1,0)
那么就可以再填一個(gè)象素到目標(biāo)矩陣中了,同樣是把源圖中坐標(biāo)為(1,0)處的像素值38填入目標(biāo)圖中的坐標(biāo)。
????????
依次填完每個(gè)象素,一幅放大后的圖像就誕生了,像素矩陣如下所示:
234????38?????22?????22?
67??????44?????12?????12?
89??????65?????63?????63?
89??????65?????63?????63??
這種放大圖像的方法叫做最臨近插值算法,這是一種最基本、最簡(jiǎn)單的圖像縮放算法,效果也是最不好的,放大后的圖像有很嚴(yán)重的馬賽克,縮小后的圖像有很嚴(yán)重的失真;效果不好的根源就是其簡(jiǎn)單的最臨近插值方法引入了嚴(yán)重的圖像失真,比如,當(dāng)由目標(biāo)圖的坐標(biāo)反推得到的源圖的的坐標(biāo)是一個(gè)浮點(diǎn)數(shù)的時(shí)候,采用了四舍五入的方法,直接采用了和這個(gè)浮點(diǎn)數(shù)最接近的象素的值,這種方法是很不科學(xué)的,當(dāng)推得坐標(biāo)值為 0.75的時(shí)候,不應(yīng)該就簡(jiǎn)單的取為1,既然是0.75,比1要小0.25 ,比0要大0.75 ,那么目標(biāo)象素值其實(shí)應(yīng)該根據(jù)這個(gè)源圖中虛擬的點(diǎn)四周的四個(gè)真實(shí)的點(diǎn)來(lái)按照一定的規(guī)律計(jì)算出來(lái)的,這樣才能達(dá)到更好的縮放效果。
2 雙線性插值
雙線型內(nèi)插值算法就是一種比較好的圖像縮放算法,它充分的利用了源圖中虛擬點(diǎn)四周的四個(gè)真實(shí)存在的像素值來(lái)共同決定目標(biāo)圖中的一個(gè)像素值,因此縮放效果比簡(jiǎn)單的最鄰近插值要好很多。在雙線性插值方法中源圖片與目標(biāo)圖片的坐標(biāo)轉(zhuǎn)換關(guān)系和最近鄰一樣
?
雙線性內(nèi)插值算法描述如下:
對(duì)于一個(gè)目的像素,設(shè)置坐標(biāo)通過(guò)反向變換得到的浮點(diǎn)坐標(biāo)為(i+u,j+v) (其中i、j均為浮點(diǎn)坐標(biāo)的整數(shù)部分,u、v為浮點(diǎn)坐標(biāo)的小數(shù)部分,是取值[0,1)區(qū)間的浮點(diǎn)數(shù)),則這個(gè)像素得值 f(i+u,j+v) 可由原圖像中坐標(biāo)為 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所對(duì)應(yīng)的周圍四個(gè)像素的值決定,即:
?
f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)????????????????????????
?
其中f(i,j)表示源圖像(i,j)處的的像素值,以此類推。
?
比如,象剛才的例子,現(xiàn)在假如目標(biāo)圖的象素坐標(biāo)為(1,1),那么反推得到的對(duì)應(yīng)于源圖的坐標(biāo)是(0.75 , 0.75), 這其實(shí)只是一個(gè)概念上的虛擬象素,實(shí)際在源圖中并不存在這樣一個(gè)象素,那么目標(biāo)圖的象素(1,1)的取值不能夠由這個(gè)虛擬象素來(lái)決定,而只能由源圖的這四個(gè)象素共同決定:(0,0)(0,1)(1,0)(1,1),而由于(0.75,0.75)離(1,1)要更近一些,那么(1,1)所起的決定作用更大一些,這從公式1中的系數(shù)uv=0.75×0.75就可以體現(xiàn)出來(lái),而(0.75,0.75)離(0,0)最遠(yuǎn),所以(0,0)所起的決定作用就要小一些,公式中系數(shù)為(1-u)(1-v)=0.25×0.25也體現(xiàn)出了這一特點(diǎn)。
?
?
雙三次插值?用4*4個(gè)點(diǎn)賦予權(quán)重來(lái)構(gòu)造 (未完待續(xù)。。。)
繼續(xù)寫?
?
雙三次插值(也稱協(xié)調(diào)板元),二元雙三次插值公式共有(3+1)2=16個(gè)系數(shù),其一般形式可寫成[9]:
?
?a00?+?a10x?+?a01y?+?a20x2?+?a11xy?+?a02y2?+?a21x2y?+?a12xy2?+?a22x2y2?+?a30x3?+?a03y3+?a31x3y?+?a13xy3?+?a32x3y2?+?a23x2y3?+?a33x3y3???????????????????????????
或者更簡(jiǎn)單的形式?
雙三次插值方法能夠克服雙線性插值和最鄰近插值算法的缺點(diǎn)。計(jì)算精度比較高,插值效果較最近鄰插值法和雙線性插值法好,但是計(jì)算量大。在圖像領(lǐng)域中,該方法考慮一個(gè)浮點(diǎn)坐標(biāo)(i+u,j+v)周圍的16個(gè)鄰點(diǎn),目標(biāo)像素值f(i+u,j+v)可由如下插值公式得到:
????f(i+u,j+v)=[A]×[B]×[C]
????[A]=[S(u+1)??S(u+0)??S(u-1) ?S(u-2)]
?
轉(zhuǎn)載于:https://www.cnblogs.com/jackchen-Net/p/7953928.html
總結(jié)
以上是生活随笔為你收集整理的注意1:图像插值理论的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 多对多的关系
- 下一篇: bzoj 1997: [Hnoi2010