图像处理_图像规定化

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值