この方法はまた、独自の角度の書き換えを感じることができます



CVとしてインポートCV2
のNPとしてインポートnumpyの
PLTのインポートなどmatplotlib.pyplot
輸入数学

IMG = cv.imread(R'C:\ Users \ユーザー51102 \デスクトップ\伝統\ 1.JPG」、0)
IMG = cv.cvtColor(IMG、 cv.COLOR_BGR2RGB)
IMG = np.dot(IMG [...、:3]、[0.299、0.587、0.114])
plt.subplot(331)
plt.imshow(IMG、CMAP = 'グレー')
plt.title( 'original_img')
プリント( 'original.shape ='、img.shape)

构建梯度
gradient_x = np.array([ - 1,0,1]、[ - 2,0,2]、[ - 1,0 、1]])
gradient_y = np.array([ - 1、-2、-1]、[0,0,0]、[1,2,1]])

plt.subplot(332)

DX = CV。 filter2D(IMG、ddepth = -1、カーネル= gradient_x)
プリント( 'dx.shape ='、dx.shape)
plt.imshow(DX、CMAP = 'グレー')
plt.title( 'DX')
PLT。サブプロット(333)
cv.filter2D =のDy(IMG、-1、gradient_x)
印刷( 'dy.shape ='、dy.shape)
plt.imshow(Dyを、CMapの= 'グレー')
plt.title( 'のDy')




ディレク


PLT .subplot(334)
大きさ=(np.multiply(のDy、Dyを)+ np.multiply(DX、DX))
plt.imshow(大きさ、CMapの= 'グレー')
plt.title( 'マグニチュード')



CITA = CV。相(DY、DX、angleInDegrees = TRUE)# 角度見つける


#生成ガウシアンフィルタ
"" "
(2K + 1)×(2K生成するガウスフィルタを + 1)を次のように、フィルタの個々の要素が計算される:
H [I、J] =(1 /(2 * PI *シグマ** 2))** 2((IK-1)** 2 +(JK-1)* EXP(-1 / 2 *シグマ** 2 ))
"" "
シグマ1 = Sigma2 = 0.6
gau_sum = 0
ガウスnp.zeros =([5 ,. 5])
の範囲でI(5):
範囲でJ(5):
ガウス[I、J] = Math.expの (( - 1 /(2 * sigma1 * sigma2))*(np.square(I-2-1)+ np.square(J-2-1)))/( Math.PIシグマ1 * * * 2 Sigma2)
gau_sum = gau_sumガウス+ [I、J]
ガウシアン=ガウス/ gau_sum#正規

印刷( '= GUSS'、gaussian.shape)

Wであり、H =オリジナルimg.shape位グレースケール画像のサイズ
_、G = gaussian.shape
new_gray np.zeros =(W IS-5 ,. 5-H])
new_magnitude np.zeros =(W IS-5 ,. 5-H])

Iための範囲(Wれます-5)
範囲内のJ(5-H)のために:
「」 '
の重みは、自分の試行方法をフィルタリング再構成する角度に応じて
Iは勾配方向の大きな勾配の振幅を小さく抑えることができ、他の方向強化
'' '
GUSS =ガウス
G_ = INT((1-G)/ 2)

0 <CITA [I、J] <90または180 [<CITA [I、J] <270又は-180 <CITA [I IF 、J] < - 90又は-360 <CITA [I、J] < - 270:
:範囲(G_)におけるkの
KKのための範囲内(G_):
GUSS [G_ + 1 + K、G_ + 1 + KK] =ガウス[G_ + 1つの+ K、G_ + 1 + KK] / 4
GUSS [G_ -1 - K、G_ - 1 - KK] =ガウス[G_ - 1 - K、G_ - 1 - KK] / 4
であれば90 <CITA [I、J] <180又は270 <CITA [I、J] <360または-90 <CITA [I、J] <0または-180 <CITA [I、J] <-270:
(G_)の範囲内のkに関する:
範囲内KK(G_)用:
GUSS [G_ + 1 + K、 G_ - 1 - KK] =ガウス[G_ + 1 + kの、G_ - 1 - KK] / 4
GUSS [G_ - 1 - K、G_ + 1 + KK] =ガウス[G_ - 1 - K、G_ + 1 + KK] / 4
new_gray [I、J] = np.sum(IMG [I:I + 5、J:J + 5] * GUSS)
new_magnitude [I、J] = np.sum(大き[I:I + 5、J:J + 5] * GUSS)








plt.subplot(335)
plt.imshow(new_gray、CMAP = 'グレー')
plt.title( ')new_gray'

plt.subplot(336)
plt.imshow(new_magnitude、CMAP = 'グレー')
plt.title( 'new_magnitude')




plt.show()




 

 








おすすめ

転載: www.cnblogs.com/tangjunjun/p/12514660.html