关于数字图像处理考试

我们学校这门科目是半学期就完结哦,同学们学习的时候要注意时间哦。
选择题不用管,到时候会有各种版本的复习资料的。
以下这些东西可能会是大题的重点:

我根据平时代码总结的,供参考

基本操作:

1.读图:imread(‘图片路径’)
2.显示图:imshow(图片)
3.开新窗口:figure()
4.rgb转灰度图:rgb2gray(图片)
5.灰度图合成彩色图:图片 = cat(3,灰度图1,灰度图2,灰度图3);

实验三(直方图与直方图均衡化):

1.获取灰度直方图:a_直方图 = imhist(图片)
2.对图像进行直方图均衡化:a_均衡化 = histeq(图片)
3.对图像进行指定直方图的规定化:a_规定化 = histeq(图片,规定的直方图)

实验四(最邻近插值和双线性插值):

1.matlab 自带的函数imresize(图片,放缩倍数或者缩放后的尺寸,插值方式)
2.imresize(图片,2,’nearest’) 这个是按最邻近插值方式,按2倍放大
3.Imresize(图片,2,’bilinear’) 这个是按双线性插值方式,按2倍放大
4.imresize(图片,[500,500],’nearest’) 这个是按最邻近插值方式,指定放大后尺寸为500x500
5.Imresize(图片,[500,500],’bilinear’) 这个是按双线性插值方式,指定放大后尺寸为500x500
6.双线性插值公式原理:
在这里插入图片描述

7.最邻近插值公式原理:求映射后的最邻近下标

实验五(平滑滤波器):

1.添加噪声:
j1 = imnoise(图片,‘salt’,0.02);%椒盐噪声
j2 = imnoise(图片,‘gaussian’,0,0.01); %高斯
j1 = imnoise(图片,‘poisson’); %泊松
j1 = imnoise(图片,‘speckle’,0.04); %乘法
2.使用均值滤波器 imfilter(图片,滤波核):
Moban = one(3,3)/9; //设置滤波核
均值滤波后图片 = imfilter(图片,Moban);

3.使用中值滤波器 medfilt2(图片,窗口大小):
中值滤波后图片 = medfilt2(图片,[3,3]); 这里[3,3]表示滤波器窗口大小为3x3
注意: medfilt2()函数只能用于处理灰度图即只有一个维度的图。

实验六(锐化):

可以使用imfilter()函数实现:
先设置算子:
A = [0,-1,0;
-1,4,-1;
0,-1,0];
边缘 = imfilter(原图,A);
锐化后图片 = 边缘+原图

实验七(傅里叶变换和频域处理):一般不考

实验八(彩色图像):

1.裁剪图像:imcrop(图片,区域);
如:
rect = [区域左上角横坐标,区域左上角纵坐标,区域右下角横坐标,区域右下角纵坐标]
imcrop(图片,rect);

2.按比例合成:
合成后图片 = 比例1x图片1+比例2x图片2

3.将图像从 RGB 颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及 matlab 自带的函数 rgb2gray:

啊这个函数怎么要自己实现啊,那就没有太大的必要来记,毕竟填空题因人而异,我这里用的是遍历,I是原图,S是处理后的图,没太大看的必要。
在这里插入图片描述

4.亮度增强:
CMYK亮度增强:增强后图 = 增强系数* imcomplement(原图)

实验九(图像压缩):要记住书上怎么编码的

1,求熵值/平均信息量:
核心思想就是求出每个灰度的概率,再通过公式累加计算:
熵 =
G=256; %图像的灰度级
[height,width] = size(I); %获取输入值的高和宽
[count,x] = imhist(I,G);
p = count; %原始灰度直方图
I_size = height*width;
H_x = 0;
for i=1:256 %循环
p(i) = count(i)/I_size;
if p(i)~=0; %如果像素点的概率不为零
H_x=-p(i)*log2(p(i))+H_x; %求熵值的公式
end
end
H_x就是平均信号量,即熵
2,哈夫曼编码:代码没太大看的必要

原理大家应该都懂,代码大伙们都是抄的这个吗?(ω )
[M,N] = size(I);%将图像转为二维矩阵
I1 = I( : );%转为一维向量
k = 0:255;
dict = huffmandict(k,p); %根据灰度级k和概率数组P生成Huffman字典
enco = huffmanenco(I1,dict);
deco = huffmandeco(enco,dict); %哈夫曼解码
Ide = col2im(deco,[M,N],[M,N],‘distinct’); %把向量重新转换成图像块;

3,压缩率:
B=length(enco);
sumcode=length(deco);%编码后比特长度
CR=sumcode/B;%计算压缩率
disp([‘原始图像 Bit: ‘,num2str(B),’ bit’]);
disp([‘压缩图像 Bit: ‘,num2str(sumcode),’ bit’]);
disp(['压缩率: ',num2str(CR)]);

这些就都考考选择题吧,或者填空题算算。

实验十(形态学):

1.生成结构:
% 生成方形,圆形,菱形结构:
rectangle = strel(‘rectangle’,[5 10]); % 生成5x10大小的矩形
circle = strel(‘disk’,5); % 生成半径为5的圆形
square = strel(‘square’,5); % 生成5x5大小的正方形(也就是菱形)

2,腐蚀:imerode(图片,结构);
3,膨胀:imdilate(图片,结构);
4,开运算:imopen(图片,结构);
5,闭运算:imclose(图片,结构);

实验十一(图像分割):不怎么考

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP和HTTPS区别!

http 是我们几乎天天都要打交道的东西,相关知识点有点多,所以也有不少面试必问的点,这里做了一些整理,帮且大家树立完整的 http 知识体系,对面试官说 so easy HTTP 的特点和缺点 特点:无连接、无状态、灵…

【Git版本控制 01】基本操作

目录 一、初始配置 二、添加文件 三、查看日志 四、修改文件 五、版本回退 六、撤销修改 七、删除文件 一、初始配置 Git版本控制器:记录每次的修改以及版本迭代的一个管理系统。 # 初始化本地仓库:git init(base) [rootlocalhost gitcode]# gi…

房屋租赁系统的Java实战开发之旅

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【C语言期末】商品管理系统

本文资源:https://download.csdn.net/download/weixin_47040861/88820155 1.题目要求 商品管理系统 商品信息包括:包括编号、类别、名称、价格、折扣比例、生产时间 、存货数量等要求:1、信息首先保存在文件中,然后打开文件进行…

用友U8 Cloud ReportDetailDataQuery SQL注入漏洞复现(QVD-2023-47860)

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 cloud ReportDetailDataQuery 接口处存在SQL注入漏洞,攻击者未经授权可以访…

C语言----内存函数

内存函数主要用于动态分配和管理内存,它直接从指针的方位上进行操作,可以实现字节单位的操作。 其包含的头文件都是:string.h memcpy copy block of memory的缩写----拷贝内存块 格式: void *memcpy(void *dest, const void …

解决MapboxGL的Popup不支持HTMLDiv元素的问题

解决MapboxGL的Popup不支持HTMLDiv元素的问题 官网给出的文档是不支持HTMLDivElement的,只支持HTML标签。 如果单纯的只显示字符串,那就没问题,如果想在Popup中使用更强大的功能,此时就不行了,下面是源码的一部分显示…

【npm】安装全局包,使用时提示:不是内部或外部命令,也不是可运行的程序或批处理文件

问题 如图,明明安装Vue是全局包,但是使用时却提示: 解决办法 使用以下命令任意一种命令查看全局包的配置路径 npm root -g 然后将此路径(不包括node_modules)添加到环境变量中去,这里注意,原…

大模型学习 一

https://www.bilibili.com/video/BV1Kz4y1x7AK/?spm_id_from333.337.search-card.all.click GPU 计算单元多 并行计算能力强 指数更重要 A100 80G V100 A100 海外 100元/时 单卡 多卡并行: 单机多卡 模型并行 有资源的浪费 反向传播 反向传播(B…

【机器学习笔记】决策树

决策树 文章目录 决策树1 决策树学习基础2 经典决策树算法3 过拟合问题 1 决策树学习基础 适用决策树学习的经典目标问题 带有非数值特征的分类问题离散特征没有相似度概念特征无序 例子: SkyTempHumidWindWaterForecastEnjoySunnyWarmNormalStrongWarmSameYesSunny…

深入探究 HTTP 简化:httplib 库介绍

✏️心若有所向往,何惧道阻且长 文章目录 简介特性主要类介绍httplib::Server类httplib::Client类httplib::Request类httplib::Response类 示例服务器客户端 总结 简介 在当今的软件开发中,与网络通信相关的任务变得日益普遍。HTTP(Hypertext…

Electron基本介绍

Electron基本介绍 Electron 官方网站:https://www.electronjs.org/zh/ Electron安装方法:npm install electron -g 全局安装 Electron简介:Electron提供了丰富的本地(操作系统)API,使你能够使用纯JavaScr…

【Iceberg学习四】Evolution和Maintenance在Iceberg的实现

Evolution Iceberg 支持就底表演化。您可以像 SQL 一样演化表结构——即使是嵌套结构——或者当数据量变化时改变分区布局。Iceberg 不需要像重写表数据或迁移到新表这样耗费资源的操作。 例如,Hive 表的分区布局无法更改,因此从每日分区布局变更到每小…

JVM 性能调优- 五种内存溢出(5)

在介绍之前先简单介绍下 直接内存(Direct Memory)和堆内存(Heap Memory): 关系: 直接内存并不是Java虚拟机的一部分,它是通过Java的NIO库中的ByteBuffer来分配和管理的。直接内存通常由操作系统的本地内存(Native Memory)提供支持。堆内存是Java虚拟机的一部分,用于存…

【VSTO开发-WPS】下调试

重点2步: 1、注册表添加 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\kingsoft\Office\WPP\AddinsWL] "项目名称"""2、visual studio 运行后,要选中附加到调试,并指定启动项目。 如PPT输入WPP搜…

【数据结构】二叉树的三种遍历(非递归讲解)

目录 1、前言 2、二叉树的非递归遍历 2.1、先序遍历 2.2、中序遍历 2.3、后序遍历 1、前言 学习二叉树的三种非递归遍历前,首先来了解一下递归序: 递归序就是按照先序遍历的顺序,遇到的所有结点按顺序排列,重复的结点也必须记…

【数据结构】链表OJ面试题5(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表,判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 NULLhttp://t.cs…

大厂的供应链域数据中台设计

关注我,紧跟本系列专栏文章,咱们下篇再续! 作者简介:魔都技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主,编程严选网创始人。具有丰富的引领团队经验,深厚业务架…

Linux 软件管理(YUM RPM)

1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…

算法学习——LeetCode力扣栈与队列篇1

算法学习——LeetCode力扣栈与队列篇1 232. 用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) 描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQu…