【圖像處理】時域最小二乘逆濾波

空間域上,可以和頻域一樣進行卷積逆濾波操作。其方法是展開圖像爲一列,構建卷積模板矩陣,這樣卷積操作就變成了矩陣乘法。我們可以用最小二乘法來,已知卷積圖像和卷積模板來求出原始圖像。空間域最小二乘逆濾波是病態問題,缺點是卷積矩陣非常稀疏和巨大,模非常小,一般需要進行約束。
我們現在有一個均值卷積模板blurKernel,對圖像X進行卷積,生成一個模糊圖像B,可以寫成blurKernelX+N=B ,其中*是卷積操作,N是加性噪聲。展開後我們得到卷積矩陣A,以及B圖像的展開Bravel ,那麼有

AXravel+Nravel=BravelXravel=(ATA+λI)1ATBravel

假設B是4x4矩陣,比如15913261014371115481216 展開後爲Bravel=[1,2,3,4,516]T ;假設A的卷積是3x3的均值模板,不考慮邊界,A是6x16矩陣,那麼A=1/9......1/91/901/91/91/901/91/91/90000
可以想象到,這些矩陣非常稀疏和巨大。我們可以用稀疏矩陣庫來進行計算,其中進行矩陣求逆是最爲耗時耗力的一步。
import numpy as np
import os, string
from matplotlib import pyplot as plt
import scipy as sp
import cv2
img = cv2.imread('camera.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)
print img.shape
from __future__ import division
blurKernel = np.ones((3,3))/9

from scipy import signal#warning
blurImg = signal.convolve2d(img, blurKernel, 'same','symm')

import itertools
from scipy.sparse import csc_matrix,lil_matrix
from scipy.sparse import linalg as sppl
import numpy.linalg
A=lil_matrix(((img.shape[0]-3)*(img.shape[1]-3),img.shape[0]*img.shape[1]))
print A.shape
ind = -1
for j in xrange(0,np.int32(img.shape[1])-3):
    for i in xrange(0,np.int32(img.shape[0])-3):
        ind +=1
        #index=[]
        ravel = []
        for e in itertools.product(range(j,j+3),range(i,i+3)):
            #index.append(e)
            ravel.append(e[1]+e[0]*img.shape[0])
        A[ind,[ravel]]=1./9.
 A=csc_matrix(A) 

from scipy import sparse
reg = 0.001
X = A.T.dot(A)
X=X+reg*sparse.eye(X.shape[0])
X=csc_matrix.dot(csc_matrix(Xinv), A.T)
padBlur = csc_matrix(blurImg[0:np.int32(img.shape[0])-3,0:np.int32(img.shape[1])-3].ravel()).T
print X.shape,padBlur.shape
X=csc_matrix.dot(X,padBlur)
res=X.todense()
res = res.reshape(blurImg.shape)
fig = plt.figure()
ax = fig.add_subplot(131)  
ax.imshow(img,cmap='gray')
ax = fig.add_subplot(132)  
ax.imshow(blurImg,cmap='gray')
ax = fig.add_subplot(133)  
ax.imshow(res,cmap='gray')
plt.show()

計算花費半個小時。相比頻域逆濾波,時間和存儲空間代價都很大,一般不推薦直接的空間域逆濾波。可以採用迭代優化的方法。
這裏寫圖片描述
Fig. (a)原圖 (b)均值濾波圖像 (c)逆濾波圖像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章