数字图像处理-Matlab实验

实验一 图像增强

实验内容:

  1. 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。

  2. 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。


实验数据:

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三通道分别进行均衡化,再合成得到均衡化后的彩色图像如下,可见效果不如上图,证明了颜色空间转换对于彩色图像的直方图均衡化更有用。


实验二 图像去噪


实验内容:

  1. 对于给定的两幅噪声图像(test2_1.jpg, test2_2.jpg),设计或选择至少两种图像滤波算法对图像进行去噪。

  2. 利用给出的参考图像(test2_1_org.jpg, test2_2_org.jpg),结合图像质量评价算法,对不同算法进行性能分析比较。


实验数据:

Test2_1.jpg:高斯噪声

 

Test2_2.jpg:椒盐噪声

 


实验步骤:


                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/190185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PyQT5的图像分类网络训练平台

1.主界面 2.选择数据集路径 里面包含两个文件夹 train和val 3.选择类别标签 以txt为结尾 4.训练基本设置 包括输入图像大小、batch size、轮次、学习率等 5.训练高级设置 是否进行标签平滑、图像增强操作 6.选择训练日志输出地址 为一个文件夹 7.选择训练好的模…

2023.11.25 关于 MyBatis 的配置与使用

目录 引言 MyBatis 介绍 掌握两个点 在框架中的定位 创建数据库 配置 MyBatis 引入依赖 配置文件 创建实体类 构建 Mapper 层代码实现 添加 mapper 接口 添加 UserMapper.xml 实现 Service 层 实现 Controller 层 最终测验 阅读下面文章之前建议了解并创建…

新手如何对一个web网页进行一次渗透测试

新手如何对一个web网页进行一次渗透测试 文章目录 新手如何对一个web网页进行一次渗透测试什么是渗透测试?渗透测试和红蓝对抗的区别那么拿到一个网站后如何进行一次优雅的渗透测试呢 什么是渗透测试? 在获得web服务运营的公司书面授权的情况下,模拟攻击者的行为…

二进制编辑器hexedit的安装及使用

Hexedit 同时以 ASCII 和十六进制显示文件 安装 终端输入hexedit回车,如果没安装,会提示让输入 sudo apt-get install hexedit 照着输入命令,安装。安装完成后,cd到一个有二进制文件的目录下,输入hexedit命令回车 再…

Java核心知识点整理大全16-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

Typescript基础面试题 | 03.精选 ts 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

SpringCloud微服务网关Gateway:gateway基本实现、断言工厂、过滤器工厂、浏览器同源策略、跨域问题解决方案

Gateway网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0和Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API路由管理方式 为什么…

虚拟人物视频

背景 大家好,我是小欣,是这个博客的虚拟助手。在这里,我将为大家提供各种有趣、实用、甚至是意想不到的信息。作为一个年轻的语言模型,我的目标是为你们呈现出最有趣和有深度的内容。 我喜欢与大家分享知识、解答问题&#xff0…

视频格式转换:将MP4轻松转MKV格式,高效便捷

随着科技的发展,数字媒体已经深入到生活中,视频格式的转换也成为了许多人的日常要求。MP4和MKV是两种常见的视频格式,它们各有优点。MP4以其高效的压缩比和广泛的兼容性被广泛使用,而MKV则因其强大的封装能力和无损压缩而受到喜爱…

提升逼格,自己搭建博客网站不求人

背景 对于一个热爱分享知识和经验的大佬来说,搭建一个自己的个人博客是十分必要的。因为各个免费写博客平台都会有每天写博客限制,比如我现在这篇文章的限制,就是每天最多发表3篇,同时还给我的博客添加一大波广告,真是…

网络编程基本概念

网络编程基本概念 为什么需要网络编程? 用户在浏览器中,打开在线视频网站,如优酷看视频,实质是通过网络,获取到网络上的一个视频资源。 与本地打开视频文件类似,只是视频文件这个资源的来源是网络。 相…

人工智能_机器学习051_支持向量机SVM概念介绍_理解support vector machine---人工智能工作笔记0091

在出现深度学习,神经网络算法之前,支持向量机已经可以解决很多问题了,我们自然界中的问题,无非就是可以转换为回归问题和分类问题. 然后从现在开始我们来看支持向量机,首先看一下这几个字 support 是支持 vector是向量的意思,然后 machine指的是机器 那么我们之前用到的模型…

【Java】实现一个自己的定时器

上文讲了怎样使用Java自带的定时器【Java】定时器的简单应用 这篇博客就来讲如何来编写一个自己实现的定时器 1、代码框架 由定时器的使用方法得知,我们在使用定时器的时候会添加一个任务timerTask类,而timer类则是我们行使任务的类,因此可…

深入解析:如何开发抖音票务小程序

当下,开发抖音票务小程序成为了吸引年轻用户群体的一种创新方式。本文将深入解析如何开发抖音票务小程序,探讨关键步骤和技术要点。 1.确定需求和功能 考虑到抖音的用户特点,可以加入与短视频相关的票务功能,如在线购票、观影记录…

vim+xxd编辑十六进制的一个大坑:自动添加0x0a

问题描述 今天在做一个ctf题,它给了一个elf文件,我要做的事情是修复这个elf文件,最后执行它,这个可执行文件会计算它自身的md5作为这道题的flag。我把所有需要修复的地方都修复了,程序也能成功运行,但是fl…

百度 Comate 终于支持 IntelliJ IDEA 了

大家好,我是伍六七。 对于一直关注 AI 编程的阿七来说,编程助手绝对是必不可少的,除了 GitHub Copilot 之外,国内百度的 Comate 一直是我关注的重点。 但是之前,Comate 还支持 VS code,并不支持 IntelliJ…

Android 相机库CameraView源码解析 (二) : 拍照

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

哈希思想的应用

目录 1.位图 位图的实现 题目变形一 题目变形二 题目变形三 总结: 2.布隆过滤器 概念 布隆过滤器的实现 3.哈希切割的思想 1.位图 哈希表和位图是数据结构中常用的两种技术。哈希表是一种数据结构,通过哈希函数把数据和位置进行映射&#xff0c…

公司人事管理系统

1.问题描述 一个小公司包含四类人员:经理,技术人员,销售人员和销售经理,各类人员的工资计算方法如下:经理:固定月薪(8000);技术人员:月薪按技术等级&#xf…

【LeetCode】挑战100天 Day15(热题+面试经典150题)

【LeetCode】挑战100天 Day15(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-172.1 题目2.2 题解 三、面试经典 150 题-173.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…