图像处理与计算机视觉--第四章-图像滤波与增强-第一部分

目录

1.灰度图亮度调整

2.图像模板匹配

3.图像裁剪处理

4.图像旋转处理

5.图像邻域与数据块处理


学习计算机视觉方向的几条经验:
1.学习计算机视觉一定不能操之过急,不然往往事倍功半!
2.静下心来,理解每一个函数/算法的过程和精髓,这个知识才真正是你的!
3.计算机视觉的参数非常多,你必须理解透并且学会运用,不然你只能做个调参侠!
4.做一件事就必须要从中学到什么,否则就算是再大的荣誉只是混来的,不真正属于你!
以上经验总结来自Neu.Ise.JiaT.Prof,也是Neu做cv的数一数二的教授了,希望能够带着这些经验继续前进,在cv的学习中有所感悟和收获!

1.灰度图亮度调整

灰度图介绍:
1.灰度图,又称灰阶图。把白色和黑色之间按照对数关系分为若干等级,称为灰度。
2.灰度一般是2的整数次幂并且每个像素采用8比特来表示,灰度可以被量化为256及。
3.改变像素的亮度值是增强图像的常用方法,采用某种函数变换进行增强即可,一般用的比较多的是指数函数。
4.以下我们将展示采用直方图进行增强的效果,对应的函数是histeq()函数。
histeq()函数:
J = histeq(I) 变换灰度图像 I,以使输出灰度图像J的直方图具有64个bin且大致平坦。
%%灰度图亮度调整
clear all
I = imread('tire.tif')
J = histeq(I)
figure
subplot(2,2,1)
imshow(I)
subplot(2,2,2)
imshow(J)
subplot(2,2,3)
imhist(I)
subplot(2,2,4)
imhist(J)
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','histeq','.png'])

2.图像模板匹配

图像模板匹配
1.模板匹配就是在一个图像中识别出与模板相似的区域
因此我们设定输入输出如下所示:
输入:一张原始图像和模板图像
输出:在原始图像中找到与模板图像相似的区域
2.算法的原理也很简单,就是我们拿着模板和一个给定的标准,寻找最贴近标准的图像即可。
对于计算机来说,逐次比对的过程可以是,设置一个与模板相同大小的window, 按照一定的步长,
步长可以自己设定,向左向右依次滑动,会得到不同的子区域,然后逐次比对模板和子区域,找出
最好最符合的就是最为相似的。
%%
%%template matching
%本题的标准就定在0.9
clear
a = imread('a.tif')
[ma na]=size(a)%获取大小
I = imread('text.png')
figure
imshow(I)
[mi,ni]=size(I)%获取大小
afft=fft2(a)%二维傅里叶变换
Ifft=fft2(I)%二维傅里叶变换%计算用于 FFT 的输出图像大小,这是两个图像大小之和减去1。
M = ma+mi-1
N = na+ni-1%拓展到相同的维度
afft(M,N)=0
Ifft(M,N)=0
filtered=ifft2(afft.*Ifft)%对扩展后的频域数据进行逆傅里叶变换
filtered=filtered(1:mi,1:ni)%提取相同的大小区域,方便后续匹配
filtered=filtered/max(max(filtered,[],1))%归一化操作
%将匹配结果中大于0.9的像素设置为1,小于等于0.9的像素设置为0。
result=filtered>0.9
%绘制可视化图
figure
subplot(2,2,1)%模板
imshow(a)
subplot(2,2,2)%匹配图
imshow(I)
subplot(2,2,3)
imshow(filtered)%归一化图全部是0-1
subplot(2,2,4)
imshow(result)%结果图
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','template_matching','.png'])

3.图像裁剪处理

图像的裁剪处理
1.图像的裁剪处理用到imresize()函数.
2.B = imresize(A,scale) 返回图像 B,它是将A的长宽大小缩放图像
scale倍之后的图像。输入图像 A 可以是灰度图像、RGB 图像、二值图像或分类图像。
%%
%图像裁剪
clear
figure
I = imread('ci.bmp')
J = imresize(I,0.5);%边缩小0.5倍
figure
imshow(I)
figure
imshow(J)

4.图像旋转处理


%%
和图像的裁剪差不多,我们也就不细讲了
%%
%图像旋转
clear
I = imread('ci.bmp')
I1 = imrotate(I,45);
% I1 = imresize(I,2,'nearest');
figure
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imshow(I1,[])
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','iamge_imrptate','.png'])

5.图像邻域与数据块处理

5.图像邻域与数据块处理:
1.某些图像处理运算需要分段处理图像,而不是一次处理整个图像。
2.滑动邻域运算通过对每个像素邻域应用算法,以一次一个像素的方式处理图像。
3.在另一种数据块处理中,图像被分成大小相等且不重叠的数据块,并对每个不同数据块应用算法。
然后,对邻域和数据块进行重组以形成输出图像。
%%
%5.图像邻域与数据块处理
clear
I = imread('tire.tif')
f= inline('uint8(round(std2(x)*ones(size(x))))')
I2 = blkproc(I,[8,8],f)%邻域处理
%绘图可视化
figure
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imshow(I2,[])
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','image block operation','.png'])

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中如何进行图表绘制

Vue中的图表绘制:数据可视化的艺术 数据可视化是现代Web应用程序的重要组成部分之一。Vue.js作为一种流行的JavaScript框架,提供了许多强大的工具和库,用于在前端应用程序中创建各种图表和数据可视化。本文将深入探讨在Vue中进行图表绘制的方…

怒刷LeetCode的第16天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:迭代 方法二:模拟 方法三:循环模拟 方法四:传递 第二题 题目来源 题目内容 解决方法 方法一:回溯 方法二:枚举优化 第三题 题目来源 题目…

差分放大器的精髓:放大差模信号 抑制共模信号

参考如图基本的差分放大电路,在R1R2 R3R4的条件下,其输出与输入的关系为 : 具体推导过程参考:差分运算放大器的放大倍数的计算及结论_正在黑化的KS的博客-CSDN博客 由这个式子我们可以发现,差分放大器放大的是同相端与…

stable diffusion和gpt4-free快速运行

这是一个快速搭建环境并运行的教程 stable diffusion快速运行gpt快速运行 包含已经搭建好的环境和指令,代码等运行所需。安装好系统必备anaconda、conda即可运行。 stable diffusion快速运行 github: AUTOMATIC1111/稳定扩散网络UI:稳定扩散网页用户界…

STL upper_bound和lower_bound函数

声明&#xff1a; 首先包含头文件#include<algorithm> 这里的两个函数所运用的对象必须是非递减的序列&#xff08;也就是数组&#xff0c;数组必须是非递减的&#xff09;&#xff0c;只有这样才可以使用upper_bound和lower_bound这两个函数。 还有一点&#xff0c;就…

(七)Flask之路由转换器

引子&#xff1a; from flask import Flaskapp Flask(__name__)# 通过使用<int>转换器&#xff0c;可以捕获URL中的整数值&#xff0c;并将其作为参数传递给视图函数。 app.route(/index/<int:nid>, methods[GET, POST]) def index(nid):print(nid)return Indexi…

软件测试之Python基础学习

目录 一、Python基础 Python简介、环境搭建及包管理 Python简介 环境搭建 包管理 Python基本语法 缩进(Python有非常严格的要求) 一行多条语句 断行 注释 变量 基本数据类型(6种) 1. 数字Number 2. 字符串String 3. 列表List 4. 元组Tuple 序列相关操作方法 …

黑豹程序员-架构师学习路线图-百科:Git/Gitee(版本控制)

文章目录 1、什么是版本控制2、特点3、发展历史4、SVN和Git比较5、Git6、GitHub7、Gitee&#xff08;国产&#xff09;8、Git的基础命令 1、什么是版本控制 版本控制系统&#xff08; Version Control &#xff09;版本控制是一种管理和跟踪软件开发过程中的代码变化的系统。它…

树莓派4B串口通信配置方式

目录 1树莓派4B的安装&#xff1a; 1.1安装Serial与使用 1.1.1安装serial 1.1.2打开串口 1.2设置硬件串口为GPIO串口&#xff08;修改串口映射关系&#xff09; 1.2.1修改配置文件 2.1minicom串口 2.1.1安装minicom 这篇博客源于&#xff1a;工创赛。需要让树莓派与STM…

JDK11优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析

一、前言 上一期讲了JDK10的一些新特性&#xff0c;需要回顾的朋友们可以去该专栏回顾一下 这一期讲一讲JDK11的一些新功能 二、新增特性 以下是JDK 11的一些新增或变化的特性&#xff1a; 1. 纯字符串类型的 HTTP 客户端: JDK 11 引入了一个新的 HTTP 协议的客户端 API&…

【Java】super 关键字用法

目录 this与super区别 1.访问成员变量-示例代码 继承中构造方法的访问特点 2.访问构造方法-示例代码&#xff1a; 继承中成员方法访问特点 3.访问成员方法-示例代码&#xff1a; super 关键字的用法和 this 关键字相似 this : 代表本类对象的引用super : 代表父类存储空间…

使用 Elastic 输入包自定义你的数据摄取

作者&#xff1a;Ishleen Kaur Elastic 通过集成&#xff08;integrations&#xff09;实现了外部数据源和 Elastic Observability Solution 之间数据流的收集、转换和分析。 集成包通过封装多个组件来实现这一点&#xff0c;包括代理配置 (agent configuration)、数据收集输入…

利用DMA的触发循环实现eTMR的PWM周期计数

利用DMA的触发循环实现对eTMR的PWM周期计数 文章目录 利用DMA的触发循环实现对eTMR的PWM周期计数引言分析问题eTMR的调试模式ModulizationFTM的多次重载事件终极大招-使用触发链 解决问题确认DMAMUX中的eTMR相关触发源eTMR产生触发信号 软件总结参考文献 引言 最近在同客户一起…

Docker学习_镜像和容器篇

简介 Docker是一种容器化的技术&#xff0c;可以实现在一台宿主机电脑上运行多个不同的容器&#xff0c;每个容器之间都相互独立&#xff0c;具有完整的一套文件&#xff0c;网络和端口。 可以将其理解为一种虚拟机技术&#xff0c;只不过和VMware等虚拟化技术不同&#xff0…

【工具】idea 设置自动渲染注释

前言 需求&#xff1a;自动渲染文档注释&#xff0c;看源码更加舒服。 已知 crtl alt Q 可以 设置 尝试搜索 render&#xff0c;发现有启用 “渲染文档注释” 的地方 坐标 &#xff1a; Settings -> Editor-> Appearance

链表经典面试题(五)

求链表的公共结点 1.题目2.详细的图示3.详细注释和代码实现 1.题目 2.详细的图示 3.详细注释和代码实现 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//定义两个表示长度的指针,让它们指向headA和headB//我们暂时无法知道哪…

14:00面试测试岗,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到9月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…

ElementUI之首页导航+左侧菜单

文章目录 一、Mock.js1.1.什么是Mock.js1.2.安装与配置1.3使用 二、登录注册跳转2.1.在views中添加Register.vue2.2.在Login.vue中的methods中添加gotoRegister方法2.3.在router/index.js中注册路由 三、组件通信&#xff08;总线&#xff09;3.1 在main.js中添加内容3.2.在com…

分布式搜索引擎es-3

文章目录 数据聚合聚合的种类RestAPI实现聚合 自动补全自定义拼音分词器自动补全查询案例&#xff1a;实现酒店搜索框自动补全自动补全的javaAPI实现搜索框自动补全 口述自动补全数据同步集群集群的分布式存储集群分布式查询集群故障转移 数据聚合 什么是聚合&#xff1f; 聚合…

chrome extensions mv3通过content scripts注入/获取原网站的window数据

开发插件的都知道插件的content scripts和top window只共享Dom不共享window和其他数据&#xff0c;如果想拿挂载在window的数据还有点难度&#xff0c;下面会通过事件的方式传递cs和top window之间的数据写一个例子 代码 manifest.json 这里只搞了2个js&#xff0c;content.…