视频处理图像运动矢量

原博文

(5条消息) 计算运动图像序列的运动矢量_Kevin_biubiubiu的博客-优快云博客_运动矢量

 

 

运动矢量是4维的

但是是matlab语言 由于别的工作将其转化为了python

pic1 = np.zeros((240,320))
pic2 = np.zeros((240,320))

pic1=i[:,:,0]
pic2=j[:,:,0]

# pic1_gray = double(rgb2gray(pic1))
# pic2_gray = double(rgb2gray(pic2))


my_size = 16

n=np.size(pic1,0)
m=np.size(pic1,1)
#[n,m] = size(pic1_gray);
new_n = fix(n/my_size)
new_m = fix(m/my_size)

#pic2_ex = [pic2_gray,pic2_gray[:,m];pic2_gray[n,:],0];  
#pic2_ex1=np.hstack(pic2_gray,pic2_gray[:,m])
# b=np.zeros(m)
# b=pic2_gray[:,m-1]
# for i in range(m):
#     b[i]=pic2_gray[i][m]
pic2_ex1 = np.column_stack((pic2,pic2[:,m-1]))

a=np.zeros(1)
# pic2_ex2=np.column_stack((pic2_gray[n-1,:],a)
pic2_ex2=np.hstack([pic2[n-1,:],a])
pic2_ex=np.vstack([pic2_ex1,pic2_ex2])
new_n=int(new_n)
new_m=int(new_m)
u = np.zeros((new_n,new_m))
v = np.zeros((new_n,new_m))

for fi in range(new_n):
    for fj in range(new_m):  
        i = 1 + my_size*(fi-1)
        j = 1 + my_size*(fj-1)
       
        
        A = np.zeros((2,2))
        b = np.zeros((2,1))
        
        for i_ in range(my_size):
            for j_ in range(my_size):
           
                fx = pic2_ex[(i+i_-1)+1][j+j_-1] - pic2_ex[i+i_-1][j+j_-1]
                fy = pic2_ex[i+i_-1][(j+j_-1)+1] - pic2_ex[i+i_-1][j+j_-1]
                ft = pic2_ex[i+i_-1][j+j_-1] - pic1[i+i_-1][j+j_-1]
                A[0][0] = A[0][0] + fx**2
                A[0][1] = A[0][1] + fx*fy
                A[1][0]= A[1][0]
                A[1][1] = A[1][1] + fy**2
                b[0][0] = b[0][0] - fx * ft
                b[1][0] = b[1][0] - fy * ft
        re = np.linalg.inv(A)*b
        u[fi][fj] = re[0][0]
        v[fi][fj] = re[1][0]
        

quiver(v,u)

 最后变为了2维运动矢量

不知道问题出在哪 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值