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

devtools/2025/3/3 15:27:16/

图像增强与基本处理

目录

  • 图像增强与基本处理
    • 目标
    • 知识点
      • 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/devtools/164218.html

相关文章

SheetDataMerge合并工作表(excel)内多行同类数据的小工具。

SheetDataMerge SheetDataMerge是一款简单易用的工具,能够快速合并工作表中的多行同类数据。虽然Excel自带的数据透视表也能实现类似功能,但它属于进阶操作,需要一定的学习成本。 相比之下,SheetDataMerge的操作非常便捷&#xff…

hook和钩子函数

1.介绍 钩子函数(Hook Function) 本质上是一种回调callback机制,它允许程序在特定事件发生时执行用户自定义代码。一种实现方式。 ✔ Hook 是一种更广义的概念,指拦截或修改函数行为,而钩子函数是 Hook 的一种具体实…

【网络安全 | 漏洞挖掘】利用文件上传功能的 IDOR 和 XSS 劫持会话

未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 前言正文前言 想象这样一个场景:一个专门处理敏感文档的平台,如保险理赔或身份验证系统,却因一个设计疏漏而成为攻击者的“金矿”。在对某个保险门户的文件上传功能进行测试时,我意外发现了一个可导致大规模账户接管…

Elasticsearch简单学习

1、依赖的导入 <!--ES依赖--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>2、客户端链接 RestHighLevelClient client new RestHigh…

Android Activity启动流程详解

目录 Activity 启动流程详细解析 1. 应用层发起启动请求 1.1 调用 startActivity() 1.2 通过 Instrumentation 转发请求 2. 系统服务处理&#xff08;AMS 阶段&#xff09; 2.1 Binder IPC 通信 2.2 AMS 处理流程 2.3 跨进程回调 ApplicationThread 3. 目标进程初始化…

基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化

摘要 阿尔茨海默病是一种致残性神经退行性疾病&#xff0c;目前尚无有效的治疗方法。预测阿尔茨海默病的诊断对患者的预后至关重要&#xff0c;但目前的阿尔茨海默病生物标志物检测方法具有侵入性、耗时且昂贵。因此&#xff0c;开发基于MRI的计算方法用于阿尔茨海默病的早期诊…

RISC-V汇编学习(一)—— 基础认识

最近这三年的工作时间大部分的工作&#xff0c;都是基于riscv的cpu和接口ip开发适配驱动&#xff0c;时不时的就要debug测试代码&#xff0c;面对很多都是汇编&#xff0c;所以也是整理下积累的一点点笔记&#xff0c;系列博客将总结下riscv相关的内容&#xff0c;一是给有需要…

【Unity精品源码】Ultimate Character Controller:高级角色控制器完整解决方案

&#x1f4c2; Unity 开发资源汇总 | 插件 | 模型 | 源码 &#x1f493; 欢迎访问 Unity 打怪升级大本营 在Unity游戏开发的世界中&#xff0c;角色控制器是构建游戏互动性的核心组件之一。Ultimate Character Controller是一款专为Unity引擎设计的高级角色控制器&#xff0c;它…