A New Image Contrast Enhancement Algorithm using Exposure Fusion Framework(使用曝光融合框架的新图像对比度增强算法)程序记录

A New Image Contrast Enhancement Algorithm using Exposure Fusion Framework(使用曝光融合框架的新图像对比度增强算法)程序记录

原文内容

论文链接:https://baidut.github.io/OpenCE/caip2017.html
代码链接:https://github.com/AndyHuang1995/Image-Contrast-Enhancement

直方图均衡化增强图像

代码

源程序略做了一些改动,并且还加了注释。

import numpy as np
import matplotlib.pyplot as plt
from skimage import exposure as ex
import imageio
import sys

'''直方图均衡化增强图像'''
def he(img):
    print(img.shape)
    if(len(img.shape)==2):      #gray灰度图
        outImg = ex.equalize_hist(img[:,:])*255 
    elif(len(img.shape)==3):    #RGB彩色图像,
        #img.shape[2]:图像的通道数
        outImg = np.zeros((img.shape[0],img.shape[1],3))#返回来一个给定形状和类型的用0填充的数组;
        # img.shape[0]为创建这么多个数组,img.shape[1]为每个二维数组的行,3为每个二维数组的列
        for channel in range(3):
            outImg[:, :, channel] = ex.equalize_hist(img[:, :, channel])*255#skimage用于图像的直方图均衡化的函数,返回直方图均衡化之后的图像

    outImg[outImg>255] = 255
    outImg[outImg<0] = 0
    return outImg.astype(np.uint8)#uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0255

def main():
    img_name = "dark_house.jpg" #sys.argv[1]
    img = imageio.imread(img_name)
    result = he(img)
    plt.imshow(result)
    plt.show()

if __name__ == '__main__':
    main()

其中遇到的问题

1.outImg = np.zeros((img.shape[0],img.shape【1】,3))
在第三个位置作者直接填写的3,可以理解为想要一个三列的数组。
for channel in range((img.shape【2】):
outImg[:, :, channel] = ex.equalize_hist(img[:, :, channel])*255
但在下一行的循环里为img.shape【2】,此时如果图像是三个通道的则没有问题,如果图像为四个通道的就会出现如下问题:
在这里插入图片描述目前想到的解决办法就是要不就是改range()函数里面的,要不就是改np.zeros( , , img,shape(2))。两个方法都试过之后发现,采用第一种处理图片结果要相对好一些。

2.img_name = “dark_house.jpg” #sys.argv(1)
原文作者采用的是sys.argv(1)函数,但是我在pycharm用命令运行的时候并未用我提前选择好的python3.6运行,而是采用的3.7。索性我直接将文件名写死在了程序里。后续这个问题还要进行解决。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值