提高图像对比度

本文介绍了如何提高图像对比度,包括两种方法:遍历像素实现和使用API。通过对比处理前后的图像,展示了增强对比度后图像的特征更清晰。特别是利用拉普拉斯掩模进行处理,能够突出图像的边缘和细节,从而有效提升图像的对比度。
摘要由CSDN通过智能技术生成

提高图像对比度

程序实现的效果:
在这里插入图片描述
在这里插入图片描述
第一张为源图像,第二张是增强后的图像,增强后图像中房屋的特征更加清晰。

方法1.用遍历像素的方法实现

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
      //读取图像
	Mat src, dst;
	src = imread("F:/xxx/xxx.jpg");
	if (!src.data)
	{
              
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

//获取图像的高度和宽度
int cols = (src.cols - 1)*src.channels();
int offsetx = src.channels();
int rows = src.rows;           
dst = Mat::zeros(src.size(), src.type());
for (int row = 1; row < (rows - 1); row++)
{
   
	
OpenCV 提高图像对比度通常涉及使用其内置的图像处理函数和算法,这些技术能够增强图像的视觉清晰度,使得暗部细节更清晰可见而亮部不过曝。 ### 使用 OpenCV 提升图像对比度的基本步骤: #### 1. **直方图均衡化 (Histogram Equalization)** 这是最常用的对比度提升方法之一。它通过调整图像像素值分布,增加图像局部对比度。OpenCV 可以使用 `cv2.equalizeHist()` 函数完成这一操作。 ```python import cv2 import numpy as np # 加载图像 image = cv2.imread('input.jpg', 0) # 应用直方图均衡化 equ_image = cv2.equalizeHist(image) # 显示原始和均衡化的图像 cv2.imshow("Original Image", image) cv2.imshow("Equalized Image", equ_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 2. **自适应直方图均衡化 (Adaptive Histogram Equalization)** 对于光照条件变化较大的场景,直接应用直方图均衡化可能会导致边缘信息损失。此时,可以选择使用自适应直方图均衡化,如 CLAHE(Contrast Limited Adaptive Histogram Equalization)。这需要将图像分成小块,并对每个块进行均衡化处理。 ```python from skimage import exposure # 计算 CLAHE 的参数 clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) # 应用 CLAHE clipped_image = clahe.apply(image) # 显示结果 cv2.imshow("CLAHE Result", clipped_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 3. **手动调整亮度和对比度** 有时候,通过简单的线性变换也可以提升图像的整体对比度。这包括修改图像的亮度(增加或减少整体亮度)、对比度(拉伸图像动态范围)等。 ```python def adjust_brightness_contrast(img, brightness=None, contrast=None): if brightness is not None: img = cv2.convertScaleAbs(img, alpha=1, beta=brightness) if contrast is not None: rows, cols, chans = img.shape mean = int(np.mean(img)) img = cv2.addWeighted(img, contrast, np.zeros((rows,cols,chans), dtype=np.float32), 0, mean * (1 - contrast) + img.mean()) return img # 示例 adjusted_image = adjust_brightness_contrast(image, brightness=50, contrast=0.7) cv2.imshow("Adjusted Contrast", adjusted_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` ### 相关问题: 1. **如何评估图像对比度的提升效果?** 可以通过观察图像的视觉清晰度、细节是否更丰富以及噪声水平的变化来进行初步判断。同时,使用图像质量评价指标如 PSNR(峰值信噪比)或 SSIM(结构相似性指数)来进行量化分析也是一个好方法。 2. **OpenCV 对图像对比度提升的其他技巧有哪些?** OpenCV 还提供了一些高级功能,比如使用卷积核(如高斯核、均值滤波等)来进行平滑或锐化操作,以及利用各种滤波器(如双边滤波)来增强细节的同时减少噪声影响。 3. **在哪些应用场景下提高图像对比度最为关键?** 图像对比度的提升在医疗影像分析、监控视频处理、计算机视觉任务(如目标检测和识别)、艺术图像增强等领域都非常重要。特别是在低光环境下的成像、医学成像、自动驾驶系统识别道路标志或行人等情况尤为突出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值