DIP课程的一份作业,对图像的锐化处理的练习.
当中有许多细节的,以此记录一下
首先是计算边界上的处理:
1)原图像边界补0
2)原图像按照边缘像素补相邻像素的值
3)边缘像素不算,次边界算子算好后补齐
附上计算的代码:其中d是输入的矩阵 计算结果四舍五入到整数
import numpy as np
d=np.array([[1,2,7,9,4,3],[0,1,6,8,3,2],[7,6,15,18,9,8],[1,2,7,9,4,3],[1,2,7,9,4,3]])
def mySobel(myArray,x,y):
Dx = (myArray[x+1,y-1]-myArray[x-1,y-1])+2*(myArray[x+1,y]-myArray[x-1,y])+(myArray[x+1,y+1]-myArray[x-1,y+1])
Dy = (myArray[x-1,y+1]-myArray[x-1,y-1])+2*(myArray[x,y+1]-myArray[x,y-1])+(myArray[x+1,y+1]-myArray[x+1,y-1])
r = (Dx**2+Dy**2)**0.5
return r
for i in range(1,len(d)-1):
for j in range(1,len(d[0])-1):
print("({0},{1})→".format(i+1,j+1),int(mySobel(d,i,j)+0.5))
import numpy as np
d=np.array([[1,2,7,9,4,3],[0,1,6,8,3,2],[7,6,15,18,9,8],[1,2,7,9,4,3],[1,2,7,9,4,3]])
def myPrewitt(myArray,x,y):
Dx = (myArray[x+1,y-1]-myArray[x-1,y-1])+(myArray[x+1,y]-myArray[x-1,y])+(myArray[x+1,y+1]-myArray[x-1,y+1])
Dy = (myArray[x-1,y+1]-myArray[x-1,y-1])+(myArray[x,y+1]-myArray[x,y-1])+(myArray[x+1,y+1]-myArray[x+1,y-1])
r = (Dx**2+Dy**2)**0.5
return r
for i in range(1,len(d)-1):
for j in range(1,len(d[0])-1):
print("({0},{1})→".format(i+1,j+1),int(myPrewitt(d,i,j)+0.5))
import numpy as np
d=np.array([[1,2,7,9,4,3],[0,1,6,8,3,2],[7,6,15,18,9,8],[1,2,7,9,4,3],[1,2,7,9,4,3]])
def myRobert(myArray,x,y):
Dx = abs(myArray[x+1,y+1]-myArray[x,y])
Dy = abs(myArray[x+1,y]-myArray[x,y+1])
r = (Dx+Dy)
return r
for i in range(1,len(d)-1):
for j in range(1,len(d[0])-1):
print("({0},{1})→".format(i+1,j+1),int(myRobert(d,i,j)))