運動模糊分析

2022-05-03 03:27:07 字數 2489 閱讀 5585

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、

import

numpy 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遊戲中常用的技術,它的目的是在運動的物體上加入模糊效果。這個增加了玩家的真實體驗感。運動模糊可以使用多種方式實現。基於模糊的攝像機,它的焦點在移動的攝像機,還有一種方式是基於模糊的物體。本節我們使用一種技術來實現後者。運動模糊背後的原理是,我們可以計算乙個運動的向量,叫做...