OpenCV图像增强有哪些实用方法

发布时间:2025-02-18 21:05:13 作者:小樊
来源:亿速云 阅读:104

OpenCV提供了多种图像增强方法,以下是一些常用的实用方法:

  1. 调整对比度和亮度: 通过修改像素值来提升图像质量。

    import cv2
    import numpy as np
    
    def adjust_brightness_contrast(img, alpha=1.0, beta=0):
        adjusted = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
        return adjusted
    
    img = cv2.imread('path_to_your_image.jpg')
    cv2.imshow('Original Image', img)
    enhanced_img = adjust_brightness_contrast(img, alpha=1.5, beta=10)
    cv2.imshow('Enhanced Image', enhanced_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  2. 直方图均衡化: 自动调整图像对比度,尤其适用于灰度图像。

    def histogram_equalization(img):
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        eq = cv2.equalizeHist(gray)
        return eq
    
    eq_img = histogram_equalization(img)
    cv2.imshow('Equalized Image', eq_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  3. 自动白平衡: 校正图像中的色偏,使颜色看起来更加自然。

    def auto_white_balance(img):
        result = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
        avg_a = np.average(result[:, :, 1])
        avg_b = np.average(result[:, :, 2])
        result[:, :, 1] = result[:, :, 1] - ((avg_a - 128) * (result[:, :, 0] / 255.0) * 1.1)
        result[:, :, 2] = result[:, :, 2] - ((avg_b - 128) * (result[:, :, 0] / 255.0) * 1.1)
        result = cv2.cvtColor(result, cv2.COLOR_LAB2BGR)
        return result
    
    white_balanced_img = auto_white_balance(img)
    cv2.imshow('White Balanced Image', white_balanced_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  4. 高斯模糊去噪: 减少图像中的噪声,使其看起来更加平滑。

    def gaussian_blur(img):
        blurred = cv2.GaussianBlur(img, (5, 5), 0)
        return blurred
    
    blurred_img = gaussian_blur(img)
    cv2.imshow('Blurred Image', blurred_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  5. 自适应阈值: 根据图像的不同区域自动调整阈值,增强图像的细节。

    def adaptive_thresholding(img):
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
        return thresh
    
    thresh_img = adaptive_thresholding(img)
    cv2.imshow('Adaptive Threshold', thresh_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  6. 拉普拉斯锐化: 通过增强边缘达到锐化的效果。

    def laplacian_sharpen(img):
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        laplacian = cv2.Laplacian(gray, cv2.CV_64F)
        sharpened = cv2.convertScaleAbs(gray - laplacian, alpha=1.5, beta=0)
        return sharpened
    
    sharpened_img = laplacian_sharpen(img)
    cv2.imshow('Sharpened Image', sharpened_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  7. 对数变换: 扩展图像的低灰度值部分,显示出更多细节。

    def log_transform(img):
        src = img.astype(np.float32)
        log_img = np.log(1 + src)
        log_img = np.uint8(np.clip(log_img, 0, 255))
        return log_img
    
    log_img = log_transform(img)
    cv2.imshow('Log Transform', log_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  8. 伽马校正: 通过改变像素值与最终输出之间的非线性关系来调整图像的亮度和对比度。

    def gamma_correction(img, gamma=1.2):
        look_up_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
        gamma_corrected = cv2.LUT(img, look_up_table)
        return gamma_corrected
    
    gamma_corrected_img = gamma_correction(img, gamma=1.5)
    cv2.imshow('Gamma Corrected Image', gamma_corrected_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

这些方法可以单独使用,也可以根据需要组合使用,以达到特定的图像增强目的。

希望这些信息对你有所帮助!

推荐阅读:
  1. 怎么在VS中使用opencv实现鼠标移动图片
  2. 如何在Visual Studio 2015 中配置 Opencv3.2

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

opencv

上一篇:OpenCV中模板匹配的应用场景

下一篇:如何用OpenCV绘制几何图形

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》