1、運動模糊產生原因:
生成卷積核和錨點
defgenaratepsf(length,angle):
eps=np.finfo(float).eps
alpha = (angle-math.floor(angle/ 180) *180) /180*math.pi
cosalpha =math.cos(alpha)
sinalpha =math.sin(alpha)
if cosalpha <0:
xsign = -1
elif angle == 90:
xsign =0
else
: xsign = 1psfwdt = 1;
#模糊核大小
sx = int(math.fabs(length*cosalpha + psfwdt*xsign - length*eps))
sy = int(math.fabs(length*sinalpha + psfwdt - length*eps))
psf1=np.zeros((sy,sx))
#psf1是左上角的權值較大,越往右下角權值越小的核。
#這時運動像是從右下角到左上角移動
for i in
range(0,sy):
for j in
range(0,sx):
psf1[i][j] = i*math.fabs(cosalpha) - j*sinalpha
rad = math.sqrt(i*i + j*j)
if rad >= half and math.fabs(psf1[i][j]) <=psfwdt:
temp = half - math.fabs((j + psf1[i][j] * sinalpha) /cosalpha)
psf1[i][j] = math.sqrt(psf1[i][j] * psf1[i][j] + temp*temp)
psf1[i][j] = psfwdt + eps -math.fabs(psf1[i][j]);
if psf1[i][j] <0:
psf1[i][j] =0
#運動方向是往左上運動,錨點在(0,0)
anchor=(0,0)
#運動方向是往右上角移動,錨點乙個在右上角 #同時,左右翻轉核函式,使得越靠近錨點,權值越大
if angle<90 and angle>0:
psf1=np.fliplr(psf1)
anchor=(psf1.shape[1]-1,0)
elif angle>-90 and angle<0:#
同理:往右下角移動
psf1=np.flipud(psf1)
psf1=np.fliplr(psf1)
anchor=(psf1.shape[1]-1,psf1.shape[0]-1)
elif anchor
同理:往左下角移動
psf1=np.flipud(psf1)
anchor=(0,psf1.shape[0]-1)
psf1=psf1/psf1.sum()
return psf1,anchor
2、
importnumpy as np
def motion_blur(image, degree=10, angle=20):
image =np.array(image)
#這裡生成任意角度的運動模糊kernel的矩陣, degree越大,模糊程度越高
m = cv2.getrotationmatrix2d((degree/2, degree/2), angle, 1)
motion_blur_kernel =np.diag(np.ones(degree))
motion_blur_kernel =cv2.warpaffine(motion_blur_kernel, m, (degree, degree))
motion_blur_kernel = motion_blur_kernel /degree
blurred = cv2.filter2d(image, -1, motion_blur_kernel)
#convert to uint8
cv2.normalize(blurred, blurred, 0, 255, cv2.norm_minmax)
blurred = np.array(blurred, dtype=np.uint8)
return blurred
css高斯模糊 運動模糊濾鏡
運動模糊是指快速運動的物體造成明顯的模糊拖動痕跡 以簡單的直線運動為例,運動模糊應該具有兩個引數,分別是半徑長度和角度 比如在sketch中如下 但是 css canvas svg 的濾鏡均不支援運動模糊。那是不是意味著如果設計師只是對乙個很簡單的圖形使用了sketch中的運動模糊濾鏡,我們在重構時...
運動模糊的實現
運動模糊常用於烘托遊戲氣氛 製作場景動畫,以及遊戲的畫面特效中,賽車類遊戲很常見此類特效,還有一些忍者遊戲中的忍者快速移動後的拖尾效果也是如此原理。運動模糊效果圖 運動模糊的原理很簡單,即多遍繪製畫面。依次繪製第n和第n 1 n 2 幀畫面,而且每次繪製將透明度降低形成消逝的感覺。具體需要模糊多少幀...
OGL(教程41) 物體運動模糊
背景知識 執行模糊是高速3d遊戲中常用的技術,它的目的是在運動的物體上加入模糊效果。這個增加了玩家的真實體驗感。運動模糊可以使用多種方式實現。基於模糊的攝像機,它的焦點在移動的攝像機,還有一種方式是基於模糊的物體。本節我們使用一種技術來實現後者。運動模糊背後的原理是,我們可以計算乙個運動的向量,叫做...