Advertisement

数字图像处理实验图像增强

阅读量:

实验3 图像增强:实现局部增强,同态滤波,USM虚光蒙版滤镜

**一.**实验要求

图像增强:实现局部增强,同态滤波,USM虚光蒙版滤镜

二.实验设备及材料

1.PC机一台;

2. pycharm

**三.**设计思路

这个程序实现了图像的局部增强和USM虚光蒙版滤镜功能。程序使用Python语言和OpenCV、NumPy等库实现图像增强和滤镜功能可以提高图像的对比度和亮度,使得图像更加清晰和鲜明。

程序的逻辑思路是先定义两个函数分别实现局部增强和USM虚光蒙版滤镜。在局部增强函数中,程序先定义一个窗口大小w,然后对于每个像素点,计算以该像素点为中心的大小为w的邻域均值和标准差,然后根据全局对比度和局部区域标准差计算局部增强系数a,最后对该像素点进行局部增强。在USM虚光蒙版滤镜函数中,程序先使用高斯滤器对图像进行模糊处理,然后计算原图像和模糊图像之间的差值,得到一个蒙版图像,最后蒙版图像与原图像进行加权合成,得到USM虚光蒙版滤镜效果。

程序的实现效果是可以对图像进行局部增强和US虚光蒙版滤镜操作,提高图像的对比度和亮度,使得图像更加清晰和鲜明。程序使用了OpenCV、NumPy等库,这些库提供了丰富的图像处理和数学计算功能,使得程序的实现更加单和高效。通过这个程序,用户可以学习到如何使用Python实现图像增强和滤镜功能,同时也可以了解到局增强和USM虚光蒙版滤镜的原理和应用。

四、程序****代码

复制代码
 import cv2

    
  
    
 import numpy as np
    
  
    
  
    
  
    
  
    
  
    
 def zh_cn(string):
    
  
    
     return string.encode('gb2312').decode(errors='ignore')
    
  
    
  
    
  
    
  
    
  
    
 # 局部图像增强
    
  
    
 def LocalEnhance(img, w):
    
  
    
     h = (w-1) // 2
    
  
    
     row, col, channel = img.shape
    
  
    
     Img = np.zeros((row, col, channel), dtype=np.uint8)
    
  
    
     imgd = img.astype(np.float64)
    
  
    
     for k in range(channel):
    
  
    
         gvar = np.std(imgd[:, :, k])  # 计算全局标准差,作为图像全局对比度参考
    
  
    
         for i in range(row):
    
  
    
             i0 = max(0, i-h)
    
  
    
             i1 = min(row, i+h+1)
    
  
    
             for j in range(col):
    
  
    
                 j0 = max(0, j-h)
    
  
    
                 j1 = min(col, j+h+1)
    
  
    
                 len = (i1-i0) * (j1-j0)
    
  
    
                 m = np.sum(imgd[i0:i1, j0:j1, k]) / len  # 邻域均值
    
  
    
                 lvar = np.sqrt(np.sum((imgd[i0:i1, j0:j1, k]-m)**2) / (len-1))
    
  
    
                 a = min(4, gvar / lvar)  
    
  
    
                 Img[i, j, k] = np.clip(np.round(a*(imgd[i, j, k]-m) + m), 0, 255)
    
  
    
     return Img
    
  
    
  
    
  
    
  
    
  
    
 # USM虚光蒙版滤镜
    
  
    
 def USM(img):
    
  
    
     imgd = img.astype(np.float64)
    
  
    
     sigma = 50
    
  
    
     gausFilter = cv2.getGaussianKernel(30, sigma)
    
  
    
     blur = cv2.filter2D(imgd, -1, gausFilter*gausFilter.T, borderType=cv2.BORDER_REPLICATE)
    
  
    
     cv2.imshow('Gaussian Blur', blur.astype(np.uint8))
    
  
    
     mask = imgd - blur
    
  
    
     cv2.imshow('Mask', mask.astype(np.uint8))
    
  
    
     Img = imgd + mask * 0.7
    
  
    
     Img = (Img / np.max(Img) * 255).astype(np.uint8)
    
  
    
     cv2.imshow('USM', Img)
    
  
    
     return Img
    
  
    
  
    
  
    
  
    
  
    
 # 读取图像
    
  
    
 img1 = cv2.imread('img1.png')
    
  
    
 img2 = cv2.imread('x.png')
    
  
    
  
    
  
    
 # 局部增强
    
  
    
 Img1 = LocalEnhance(img1, 15)
    
  
    
  
    
  
    
 # 显示结果
    
  
    
 cv2.imshow(zh_cn("原图"), img1)
    
  
    
 cv2.imshow(zh_cn("局部增强"), Img1)
    
  
    
 cv2.imshow(zh_cn("原图2"), img2)
    
  
    
 Img2 = USM(img2)
    
  
    
 cv2.waitKey(0)
    
  
    
 cv2.destroyAllWindows()
    
    
    
    

**、实验结果**

1、下图为原图像和实现局部对比度增强的图像的结果:

  1. 下图为实现USM增强的图像(下图依次为原图、蒙版、高斯和USM)


    图象编辑过程中,可用的锐化工具很多,可以为图象增加对比度、使用边缘锐化滤镜或噪音滤镜等,而虚光蒙版(USM)则是最成熟的锐化技术。虚光蒙版通过一个象素与一个象素相比较,对原图建立一个虚化版本,它增强了边缘的清晰度,却不会产生不自然的迹象,也不会消除低对比度区域的层次。

全部评论 (0)

还没有任何评论哟~