计算机视觉-图像处理基础

  • Post author:
  • Post category:其他



目录


一.灰度图


二.直方图


1.原理


2.实现


三.高斯滤波


1.原理


2.实现


四.直方图均衡化


1.原理


2.实现


一.灰度图

把白色和黑色之间按照对数关系分为若干个等级,称为灰度。灰度一共分为256阶。用灰度表示的图像称为灰度图像。任何颜色都有红、绿、蓝三原色(RGB)组成,而灰度图像只有一个通道,有256个灰度等级,255表示最白,0表示最黑

在实验中,我使用了convert()实现由彩色图像向灰度图像的转换

PIL中convert()的原理:


1.img = img.convert()


PIL有九种不同的模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。


2.img.convert(‘1’)


为二值图像,非黑即白。每个像素用8个bit表示,0表示黑,255表示白。


3.img.convert(‘L’)


为灰度图像,每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。

转换公式:L = R * 299/1000 + G * 587/1000+ B * 114/1000。

二.直方图

1.原理

图像的直方图是用来表征图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。

2.实现

三.高斯滤波

1.原理

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。

通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

2.实现

四.直方图均衡化

1.原理

直方图均衡化(Histogram Equalization) 又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。

2.实现

def Histeq(img,nbr_bins=256):
    #计算图像的直方图
    imhist,bins=histogram(img.flatten(),nbr_bins)
    #累计分布函数
    cdf = imhist.cumsum()
    #归一化
    cdf = 255*cdf/cdf[-1]
    #使用累积分布函数的线性插值,计算新的像素值
    img2 = interp(img.flatten(),bins[:-1],cdf)

    return img2.reshape(img.shape),cdf

if __name__ == '__main__':
    #直方图均衡化
    #解决title是方框的问题
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    img = array(Image.open('1.jpg').convert('L'))
    img2,cdf = Histeq(img)

    figure()
    subplot(2, 2, 1)
    #关闭所有坐标轴线、刻度标记和标签
    axis('off')
    gray()
    title('原始图像')
    imshow(img)

    subplot(2, 2, 2)
    axis('off')
    title('直方图均衡化后的图像')
    imshow(img2)

    subplot(2, 2, 3)
    axis('off')
    title('原始直方图')
    # hist(im.flatten(), 128, cumulative=True, normed=True)
    hist(img.flatten(), 128)

    subplot(2, 2, 4)
    axis('off')
    title('均衡化后的直方图')
    # hist(im2.flatten(), 128, cumulative=True, normed=True)
    hist(img2.flatten(), 128)

    show()



版权声明:本文为weixin_46120403原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。