【图像亮度、对比度调整,直方图均衡化及图像平滑】

ops/2025/3/3 15:47:37/

图像增强与基本处理

目录

  • 图像增强与基本处理
    • 目标
    • 知识点
      • 1. 亮度调整
      • 2. 对比度调整
      • 3. 直方图均衡化
      • 4. 图像平滑(高斯滤波)
      • 5. 图像平滑(中值滤波)

目标

学习图像增强的基本方法,包括亮度调整、对比度调整、直方图均衡化、图像平滑(高斯滤波、中值滤波)等。

知识点

1. 亮度调整

• 定义 :调整图像的整体亮度,使图像更亮或更暗。
• 原理 :通过增加或减少每个像素的亮度值来实现。
• 特点 :
○ 简单直接,适用于全局亮度调整。
○ 可能会导致过曝或欠曝。
• 使用技巧 :
○ 亮度调整应根据图像的实际亮度情况适度调整。
○ 避免过度调整导致图像失真。

示例代码 :

% 读取图像
img = imread('E:\Work\TestPic\embeded.jpg');
% 调整亮度(增加50)
brightImg = imadd(img, 50);
% 调整亮度(减少50)
dimmedImg = imadd(img, -50);
% 显示结果
figure;
subplot(1, 3, 2);
imshow(img);
title('Original Image');  % 显示原图
subplot(1, 3, 3);
imshow(brightImg);
title('Brightened Image'); % 显示亮度增强图
subplot(1, 3, 1);
imshow(dimmedImg);
title('Dimmed Image'); % 显示亮度增强图

代码解释 :
• imadd 函数用于将每个像素值增加一个固定值(50),从而增加图像亮度。
• imshow 函数用于显示图像。

运行结果:
在这里插入图片描述

2. 对比度调整

• 定义 :调整图像的对比度,使图像更清晰或更模糊。
• 原理 :通过调整图像的动态范围来增强或减弱对比度。
• 特点 :
○ 增强对比度可以使图像更清晰。
○ 过度调整可能导致细节丢失。
• 使用技巧 :
○ 根据图像的动态范围调整对比度。
○ 使用 imadjust 函数灵活控制对比度。

示例代码 :

% 读取图像
img = imread('peppers.png');% 调整对比度
% [0.2, 0.8] 是输入范围,[0.3, 0.7] 是输出范围
contrastImg = imadjust(img, [0.2, 0.8], [0.3, 0.7]);% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(contrastImg);
title('Contrast Adjusted Image');

代码解释 :
• imadjust 函数通过调整输入范围 [0.2, 0.8] 和输出范围 [0.3, 0.7] 来增强对比度。
• 输入范围定义了原图像的最小和最大亮度值,输出范围定义了调整后的亮度范围。

运行结果:
在这里插入图片描述

3. 直方图均衡化

• 定义 :通过调整图像的直方图,使像素值均匀分布,增强图像对比度。
• 原理 :
○ 计算图像的直方图。
○ 计算累积分布函数(CDF)。
○ 使用 CDF 转换像素值,使直方图均匀化。
• 特点 :
○ 适用于全局对比度较低的图像。
○ 可能会增强噪声。
• 使用技巧 :
○ 对于对比度较低的图像效果明显。
○ 可与去噪操作结合使用。

示例代码 :

% 读取图像
img = imread('peppers.png');% 直方图均衡化
equalizedImg = histeq(img);% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(equalizedImg);
title('Equalized Image');% 显示直方图
figure;
subplot(1, 2, 1);
imhist(img);
title('Original Histogram');
subplot(1, 2, 2);
imhist(equalizedImg);
title('Equalized Histogram');

代码解释 :
• histeq 函数用于对图像进行直方图均衡化。
• imhist 函数用于显示图像的直方图,帮助用户直观理解均衡化的效果。

运行结果:
在这里插入图片描述

4. 图像平滑(高斯滤波)

• 定义 :使用高斯滤波器对图像进行平滑处理,去除噪声。
• 原理 :
○ 高斯滤波器是一种线性滤波器。
○ 通过卷积操作对图像进行平滑。
• 特点 :
○ 适用于去除高斯噪声。
○ 会导致图像模糊。
• 使用技巧 :
○ 根据噪声强度选择合适的滤波器尺寸和标准差。
○ 过度平滑会导致细节丢失。

示例代码 :

% 读取图像
img = imread('peppers.png');% 创建高斯滤波器
h = fspecial('gaussian', [5, 5], 2); % 5x5滤波器,标准差为2% 应用高斯滤波
blurredImg = imgaussfilt(img, 2); % 使用imgaussfilt函数,标准差为2% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(blurredImg);
title('Blurred Image');

代码解释 :
• fspecial(‘gaussian’, [5, 5], 2) 创建一个5x5的高斯滤波器,标准差为2。
• imgaussfilt 函数直接应用高斯滤波器,参数为标准差。

运行结果:
在这里插入图片描述

5. 图像平滑(中值滤波)

• 定义 :使用中值滤波器对图像进行平滑处理,去除椒盐噪声。
• 原理 :
○ 对每个像素及其邻域计算中值。
○ 用中值替换中心像素。
• 特点 :
○ 适用于去除椒盐噪声。
○ 保留图像边缘。
• 使用技巧 :
○ 根据噪声密度选择合适的滤波器尺寸。
○ 过大的滤波器尺寸会导致模糊。
示例代码 :

% 图像平滑(中值滤波)
% 读取图像
img = imread('E:\Work\TestPic\embeded.jpg');% 转换为灰度图像
img_gray = rgb2gray(img);% 添加椒盐噪声
noisyImg = imnoise(img_gray, 'salt & pepper', 0.02); % 2%的噪声密度% 中值滤波
filteredImg = medfilt2(noisyImg, [3, 3]); % 3x3滤波器% 显示结果
figure;
subplot(1, 3, 1);
imshow(img_gray);
title('Original Image');subplot(1, 3, 2);
imshow(noisyImg);
title('Noisy Image');subplot(1, 3, 3);
imshow(filteredImg);
title('Filtered Image');

代码解释 :
• imnoise 函数用于添加椒盐噪声,噪声密度为2%。
• medfilt2 函数用于进行中值滤波,滤波器尺寸为3x3。

运行结果:
在这里插入图片描述


http://www.ppmy.cn/ops/162806.html

相关文章

Java进阶——常用工具类

日常开发中,Arrays、Collections 和 Objects 是非常实用的工具类,提供了丰富的功能,从而可以更高效地处理数组、集合和对象。本文将详细介绍这三个工具类的重要知识细节。 本文目录 一、 Arrays数组转集合并行排序优化Stream 支持 二、 Colle…

DeepSeek 助力 Vue3 开发:打造丝滑的网格布局(Grid Layout)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

Qt中应用程序框架的体系说明 及应用程序类QApplication类深度解析与应用分析

作为Qt开发者,我们肯定经常见到过QApplication类,有时候可能你看到了都没注意,也没太关心这个类做什么用。那你只需随便建个窗体程序的工程,在自动生成的工程文件main.cpp中就能看到,像这样: #include &qu…

鸿蒙ArkTs开发,后台触发数据变化后更新页面 UI事件

文章目录 1、定义全局事件管理器2、触发事件3、页面监听事件 如果你的需求是后台触发状态变化后更新页面 UI,而不是通过页面跳转传递数据,可以通过以下方式实现: 通过自定义事件管理器,后台触发事件后通知页面更新 UI。 1、定义全…

【论文阅读笔记】SL-YOLO(2025/1/13) | 小目标检测 | HEPAN、C2fDCB轻量化模块

目录 摘要 1 引言 2 相关工作 3 方法 3.1 为小目标检测增加一个头 3.2 优化网络结构 3.3 改进轻量化模块 3.3.1 C2fDCB 3.3.2 SCDown 4 实验 4.1 数据集 4.2 实验环境 4.3 与其他模型的比较 4.4 消融研究 ▲不同网络结构的分析 ▲不同模块的分析 ▲不同降采样…

Conda 环境搭建实战:从基础到进阶

在当今复杂多变的软件开发与数据科学领域,拥有一个稳定、可复现且易于管理的开发环境是项目成功的基石。Conda 作为一款强大的跨平台环境管理与包管理工具,为开发者提供了便捷高效的环境搭建与依赖管理解决方案。本文将深入探讨 Conda 环境搭建的实战技巧…

基于Matlab的多目标粒子群优化

在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…

Android 布局系列(五):GridLayout 网格布局的使用

引言 在 Android 开发中,布局管理是 UI 设计中的重要环节。随着应用界面的复杂性增加,开发者需要掌握各种布局方式来应对不同的需求。除了常见的 LinearLayout、RelativeLayout和ConstraintLayout,Android还提供了一个非常使用的布局 -- Gri…