Opencv中對於圖像的放大與縮小主要有兩種類型,一種是圖像金字塔pyrUp和pyrDown函數,另外一種是更通用的resize函數允許你指定目標圖像的尺寸。
一:圖像金字塔
對於函數pyrDown和pyrUp在沒有指定縮放的大小時,默認大小爲源圖像的一半或2倍。
PyrDown的原理是先將圖像進行高斯平滑,然後去除偶數行。
PyrUp的原理是圖像新插入的偶數行全部爲0,然後進行高斯平滑。
二:resize插值
插值的方法目前有三種:最鄰近元法、雙線性內插法﹑三次內插法,我不想介紹,想了解的可以見這篇blog:http://blog.csdn.net/coy_wang/article/details/5027872.我主要想介紹插值的原理
例如:現在有副圖像,三行三列,想將其放大爲原來的4/3倍,即四行四列。
然後我們就是往這個空的矩陣中填值,要填的值從哪來的呢?是從源圖中來,好,先填寫目標圖像最左上角的像素,座標爲(0,0),那麼該座標對應源圖中的座標可以由如下公式得到:srcX =dstX*(srcWidth/dstWidth), srcY = dstY*(srcHeight/dstHeight),好了,套用公式(1*0.75, 0*0.75)=(0.75,0)
然後通過以上三種方法求得所對應點(0.75,0)處的像素值即可。
參考blog:
<1>http://www.360doc.com/content/10/0907/17/474846_51910436.shtml