先填充在縮放和先縮放後填充的區別

2022-08-04 08:27:10 字數 1559 閱讀 2336

將同樣的一張圖(101*156),採用兩種不同的方式進行縮放填充,帶來的畫素差異:

1.先填充後縮放

2.先縮放後填充

opencv2預設採用的是inter_linear(雙線性插值法)

3.對比兩張的不同並且視覺化

結果將會顯示近一半的畫素值不同.

為什麼會產生這種原因呢?

主要是座標的位置發生了變化,因為我們採用的opencv預設的是雙線性插值:

srcx=(dstx+0.5)* (srcwidth/dstwidth) -0.5

srcy=(dsty+0.5) * (srcheight/dstheight)-0.5

則假設我們src影象為100*150,縮放到200*300,然後最終填充到300*300,

所以要找dst(0,30)對應的src座標,(四捨五入)

srcx = 0.5 * 0.5 - 0.5 = 0

srcy = 30.5*0.5 -0.5 = 15

但是第一種擴大的方式找到的(0,15)是基於前面帶有黑邊的座標,而第二種方式是沒有帶黑邊的座標,

由於座標的偏移,最終導致了縮放最後肉眼看著沒有什麼區別,但是對於影象的畫素來說已經有近一半的不同。

世界座標變換要先縮放 後旋轉 再平移的原因

乙個三維場景中的各個模型一般需要各自建模,再通過座標變換放到乙個統一的世界空間的指定位置上。這個過程在 3d 圖形學中稱作 世界變換 世界變換有三種,平移 旋轉和縮放 實際還有不常用的扭曲和映象,它們不是affine變換 這三種變換按各種順序執行,結果是不同的。可是實際的應用中一般按照 縮放 旋轉 ...

opengl 先旋轉後平移和先平移後旋轉解惑

我們知道,在opengl中,如果模型中點不在原點,先平移後旋轉會導致模型的位移發生變化。但在專案中遇到這麼乙個問題,如果不知道模型中點,或者知道模型中點一定不在原點,但我們也只需要模型方向,那麼我們直接將模型旋轉會得到我們想要的方向嗎?即如果先平移後旋轉能不能得到想要的方向?這個地方我疑惑了很久,因...

三重積分先二後一和先一后二的碎碎念

提到三重積分,伴隨著的常常是這兩種積分的策略。你看因為是三重,所以可以拆分成不均勻的兩部分,二重積分裡怎麼拆都是先一后一對吧 本篇文章的起因是我自以為這兩個概念分的蠻清晰了,但是今天卻把先一后二與截面法聯絡在一起了,嚇得我趕緊複習這部分的知識點,溫故知新。還想再從巨集觀的角度,總結一次積分到三重積分...