数字图像处理-Matlab实验
实验一 图像增强
实验内容:
-
对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。
-
对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。
实验数据:
Test1_1.jpg:

Test1_2.jpg:

实验步骤:
%% test1-1
% 读入原始图像
clear
clc
close all
Img= imread('test1_1.jpg'); %绘制原始图像的直方图
[height,width]=size(Img);
[counts1, x] = imhist(Img,256);
counts2 = counts1/height/width;
figure,
subplot(2,2,1),
imshow(Img);title('原始图像');
subplot(2,2,2),
bar(x, counts2); title('原始图像直方图');%统计每个灰度的像素值累计数目
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height for j = 1: width %对应灰度值像素点数量+1 %NumPixel的下标是从1开始,而图像像素的取值范围是0~255,所以用NumPixel(Img(i,j) + 1) NumPixel(Img(i,j) + 1) = NumPixel(Img(i,j) + 1) + 1; end
end %将频数值算为频率
ProbPixel = zeros(1,256);
for i = 1:256 ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end %函数cumsum来计算cdf,并将频率(取值范围是0.0~1.0)映射到0~255的无符号整数
CumuPixel = cumsum(ProbPixel);
CumuPixel = uint8(255 .* CumuPixel + 0.5); %直方图均衡
for i = 1:height for j = 1: width Img(i,j) = CumuPixel(Img(i,j)+1); end
end %显示更新后的直方图
subplot(2,2,3),
imshow(Img); title('直方图均衡化图像');
[counts1, x] = imhist(Img,256);
counts2 = counts1/height/width;
subplot(2,2,4),
bar(x, counts2); title('直方图均衡化后图像的直方图');
%% test1-2
clear
clc
close all
Img= imread('test1_2.jpg');
hsvImg = rgb2hsv(Img);
V=hsvImg(:,:,3);
[height,width]=size(V); V = uint8(V*255);
NumPixel = zeros(1,256);
for i = 1:height for j = 1: width NumPixel(V(i,j) + 1) = NumPixel(V(i,j) + 1) + 1; end
end ProbPixel = zeros(1,256);
for i = 1:256 ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end CumuPixel = cumsum(ProbPixel);
CumuPixel = uint8(255 .* CumuPixel + 0.5); for i = 1:height for j = 1: width V(i,j) = CumuPixel(V(i,j)+1); end
end V = im2double(V);
hsvImg(:,:,3) = V;
outputImg = hsv2rgb(hsvImg);
figure,
subplot(1,2,1),
imshow(Img);title('原始图像');
subplot(1,2,2),
imshow(outputImg); title('在HSV空间均衡化后结果');
%% test1-2,对比方法,所以使用了有关库函数(imhist)
clear
clc
close all
% 读入低照度彩色测试图像
im = imread('test1_2.jpg');
eq_im = im;
R = im(:,:,1);
G = im(:,:,2);
B = im(:,:,3);
%分别对三通道的图片进行均衡化
R = HE(R);
G = HE(G);
B = HE(B); %最后合成为一张图片
eq_im(:,:,1) = R;
eq_im(:,:,2) = G;
eq_im(:,:,3) = B;
% 显示原始图像和增强后的图像
subplot(1, 2, 1);
imshow(im);
title('原始图像');
subplot(1, 2, 2);
imshow(eq_im);
title('三个通道分别均衡化增强后的图像');
其中,HE.m函数内容如下:
function eq_im = HE(gray_im) % 获取原始图像的直方图 histogram = imhist(gray_im); % 计算累积概率分布 cdf = cumsum(histogram) / numel(gray_im); % 将累积概率分布映射到新的灰度级别 new_levels = uint8(cdf * 255 + 0.5); % 对原始图像应用灰度级别映射 eq_im = new_levels(double(gray_im) + 1);
end
实验结果:
Test1_1实验结果如下:

通过原始图像和均衡化后的图像对比,原始图像直方图与均衡化后直方图对比,均衡化后的直方图灰度值更加平均,在整幅图像中不再集中。
通过灰度图像直方图均衡化算法,成功地对低对比度测试图像进行了图像视觉效果增强。该算法能够增加图像的整体对比度,使得图像更加清晰、明亮。
Test1_2实验结果如下:

通过结合颜色空间转换和灰度图像直方图均衡化算法,我们对低照度彩色测试图像进行了图像视觉效果增强。在将彩色图像转换成其他颜色空间后,对亮度分量/通道进行灰度图像直方图均衡化算法,然后将增强后的亮度分量/通道与饱和度分量/通道重新组合,得到了增强后的彩色图像。这样的处理能够提高图像的亮度和对比度,使图像更加清晰、细节更丰富。
此外,尝试了不改变颜色空间,对RGB三通道分别进行均衡化,再合成得到均衡化后的彩色图像如下,可见效果不如上图,证明了颜色空间转换对于彩色图像的直方图均衡化更有用。

实验二 图像去噪
实验内容:
-
对于给定的两幅噪声图像(test2_1.jpg, test2_2.jpg),设计或选择至少两种图像滤波算法对图像进行去噪。
-
利用给出的参考图像(test2_1_org.jpg, test2_2_org.jpg),结合图像质量评价算法,对不同算法进行性能分析比较。
实验数据:
Test2_1.jpg:高斯噪声

Test2_2.jpg:椒盐噪声

实验步骤:
相关文章:
数字图像处理-Matlab实验
实验一 图像增强 实验内容: 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。 实验数据: Test1_1.jpg: Test1_2.jpg: 实验步骤: %% …...
Nginx:配置文件详解
一、Nginx配置文件 main配置段:全局配置 events段:定义event工作模式 http {}:定义http协议配置 支持使用变量: 内置变量:模块会提供内建变脸定义 自定义变量:set var_name value 二、 主…...
卷积,是什么?
其实就是对事物的作用,或者说作用力,比如说,石板上没有字,我们刻上字,便于识别,从机器视觉角度来说,就是对图像的作用力,这种作用使得能看清想要的东西,感觉还是很主观&a…...
Javascript的闭包有哪些应用?
JavaScript 中的闭包是一种强大的特性,它可以用于多种应用。以下是一些闭包在 JavaScript 中的常见应用: 1、封装私有变量: 通过闭包,可以创建私有变量和方法。外部作用域无法直接访问闭包内的变量,从而实现了信息隐藏…...
LCM-LoRA模型推理简明教程
潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像,从而可以在几乎实时的设置中使用扩散模型。 来自官方网站: LCM 只需 4,000 个训练步骤(约 32 个 A100 GPU 小时)即可从任何预训练的稳定扩散 (SD) 中提取出来&#…...
设计模式-开篇
什么是设计模式 设计模式是一种被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。设计模式不是可直接转化为代码的完成解决方案,而是描述了如何解决一个问题的经过…...
HashMap的实现原;HashMap的工作原理;HashMap存储结构; HashMap 构造函数
文章目录 说一下HashMap的实现原理(非常重要)①HashMap的工作原理HashMap存储结构常用的变量HashMap 构造函数tableSizeFor() put()方法详解hash()计算原理resize() 扩容机制get()方法为什么HashMap链表会形成死循环 HashMap是我们在工作中使用到存储数据特别频繁的数据结构&am…...
JavaScript 原型,原型链的特点
JavaScript 的原型(Prototype)和原型链(Prototype chain)是 JavaScript 面向对象编程中的重要概念。 原型(Prototype) 在 JavaScript 中,每个对象都有一个原型对象,而这个原型对象…...
越南服务器租用:企业在越南办工厂的趋势与当地(ERP/OA等)系统部署的重要性
近年来,越南逐渐成为全球企业布局的热门目的地之一。许多企业纷纷选择在越南设立工厂,以利用其低廉的劳动力成本和优越的地理位置。随着企业在越南的扩张,对于当地部署ERP系统或OA系统等的需求也日益增长。在这种情况下,租用越南服…...
Qt QString与QChar总结
(一) QString 1 QString的简介 QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。 对于超过 6553…...
Leetcode算法系列| 1. 两数之和(四种解法)
目录 1.题目2.题解解法一:暴力枚举解法二:哈希表解法解法三:双指针(有序状态)解法四:二分查找(有序状态) 1.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数…...
汇编-pop出栈指令
32位汇编 执行动作分为两步: 第一步:读出数据 第二步:改变栈地址 如果操作数是16位, 则ESP加2; 如果操作数是32位, 则ESP加4 espesp2 或 espesp4 格式:...
【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码
程序名称:基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型 实现平台:matlab 代码简介:提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…...
【UnLua】在 Lua 中定义 UE 反射类型
【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型(开个临时的 Lua VM 即可)直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …...
react的开发中关于图片的知识
React是一个流行的JavaScript库,用于构建用户界面。在React开发中,图片是一个非常重要的元素,可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单,只需要使…...
AcWing 188:武士风度的牛 ← BFS
【题目来源】https://www.acwing.com/problem/content/190/ 【题目描述】 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法&…...
马养殖场建设VR模拟实训教学平台具有灵活性和复用性
为保障养殖场生物安全,避免疫病传播,学生出入养殖场受时间和地域的限制, 生产实习多以参观为主,通过畜牧企业技术人员的讲解,学生被动了解生产过程。为了解决畜牧养殖实训难的问题,借助VR技术开展畜牧养殖虚…...
云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)
云技术如何一步步演进的? 云原生解决了什么问题? 物理设备 电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。 这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机…...
基于OGG实现Oracle实时同步MySQL
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...
〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
