1、图像规定化的思路
2、代码实现:
1、图像均衡化实现,注意点,这里返回的是映射表,例如[10,20],表示10映射到20;
def img_hon(img):
mHist1=[]
for i in range(256): #建立全零的256个列表,准备放值
mHist1.append(0)
row,col=img.shape
for i in range(row):
for j in range(col):
mHist1[img[i,j]]= mHist1[img[i,j]]+1 #把有值的位放进前面建好的那个列表
mHist1 = np.dot(mHist1,1/img_t.size)
#mHist1 = np.dot(mHist1,256) #均衡化
#print(mHist1)
#mHist1=np.array(mHist1,dtype='uint8') #类型转换,float转uint8
Hist_img_array = []
H = 0
for i in range(256):
if (mHist1[i] !=0):
H = H+mHist1[i]
Hist_img_array.append([i,int(round(H*256))])
return Hist_img_array
2、图像规定化实现,注意点,这里大体框架在这(即代码实现思路),但是逻辑不太对(映射规则);由于时间问题,没有正式改,仅供参考。img_org,img_tar为上一个函数的返回值
def img_gui(img_org,img_tar):
trans_ary = []
d_num = 0
last_index = 0
for [t_index,t_num] in img_tar:
for i,[o_index,o_num] in enumerate(img_org[last_index:]):
if(d_num == 0):
trans_ary.append([o_index,t_index])
d_num = int(t_num)-int(o_num)
#print(d_num,trans_ary)
if(d_num == 0):
last_index = last_index+i+1
break
elif(d_num >0):
trans_ary.append([o_index,t_index])
d_num = int(d_num)-int(o_num) #处理图像他会默认0~255,负数会循环,警告溢出,如1-255=254(因此类型转换)
#print(d_num,trans_ary)
if(d_num==0):
last_index = last_index+i+1
break
else:
#print(d_num,trans_ary)
last_index = last_index+i
d_num = 0
break
if(last_index!=len(img_org)):
for i,[o_index,o_num] in enumerate(img_org[last_index:]):
trans_ary.append([o_index,img_tar[-1][0]])
return trans_ary