图像处理与计算机视觉--第四章-图像滤波与增强-第二部分
目录
1.图像噪声化处理与卷积平滑
2.图像傅里叶快速变换处理
3.图像腐蚀和膨胀处理
4 图像灰度调整处理
5.图像抖动处理算法
学习计算机视觉方向的几条经验:
1.学习计算机视觉一定不能操之过急,不然往往事倍功半!
2.静下心来,理解每一个函数/算法的过程和精髓,这个知识才真正是你的!
3.计算机视觉的参数非常多,你必须理解透并且学会运用,不然你只能做个调参侠!
4.做一件事就必须要从中学到什么,否则就算是再大的荣誉只是混来的,不真正属于你!
以上经验总结来自Neu.Ise.JiaT.Prof,也是Neu做cv的数一数二的教授了,希望能够带着这些经验继续前进,在cv的学习中有所感悟和收获!
*******************************************************************************************
END IN 2023/09/27/01:40:又是一个小通宵,明天还有早八,真的要完全理解这些函数很难,每写一段都需要30分钟左右的
学习理解过程,以及我的matlab水平不如python那般熟练,有的地方绘图还需要不断的查找资料和
别人的博客,然后不断的去修改代码,matlab的绘图确实不熟练,我需要花费2-2.5个小时才能勉
强完成这样一篇总结。确实很累,但是如果感觉累的话是幸运的,因为说明你在进步,因为上坡的路都是困难的。
*******************************************************************************************
1.图像噪声化处理与卷积平滑
图像噪声化处理与卷积平滑:
图片首先经过imnoise()函数的处理,增加噪声参数,变得模糊混乱,然后我们在通过卷积的方式让图像
整体变得平滑并且消除模糊的程度。
噪声函数:imnoise(I,'gaussian',均值u,标准差)
卷积函数:conv2(I,h) %I表示图像 h表示卷积核
%%
%%image line filter
clear
I = imread('moon.tif')
subplot(131);
imshow(I)
%imnoise噪声使得图像变得更模糊嘈杂
I = imnoise(I,'gaussian',0,0.02);%添加均值为0,方差为0.02的噪声
subplot(132)
imshow(I)%绘制第二张子图
subplot(133)
h=[1 1 11 1 11 1 1];
h = h/9;
%conv2函数来对添加了噪声的图像 I 进行线性卷积操作,
%这个操作实际上是一个平滑滤波操作,它通过计算每个像素周围3x3邻域的加权平均值来减小图像中的高频噪声,
%从而使图像变得更加平滑。
J = conv2(I,h);
imshow(J,[])
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','image line filter','.png'])
2.图像傅里叶快速变换处理
图像傅里叶快速变换处理:
首先加载图像,对于图像有总体的理解.
其次对其执行FFT变换,fft2(I)函数将图像从时间域转向频域,并且画出可视化图片.
再研究FFT结果的移位版本fftshift(fft2(I)),分析傅里叶变换的特点.
最后给出频谱图像的对数幅度。这有助于分析图像中的频域信息,对于信息能够更好的理解.
%%
% fft2
clear
load imdemos saturn2subplot(221);
I = imread('moon.tif')
imshow(I)
title('Subplot 1:原图渲染')subplot(222);
b = fft2(I)%二维快速傅里叶变换
imshow(b)
title('Subplot 2:二维快速傅里叶变换')subplot(223);
b=fftshift(fft2(I));%这行代码首先对FFT结果进行了移位操作,将低频分量移到图像中心。然后,它再次计算FFT,得到移位后的频谱图像 b。
imshow(b)
title('Subplot 3:傅里叶变换移位')subplot(224);
imshow(log(abs(b)),[])
title('Subplot 4:频谱对数幅度图')
colormap(jet(64))
colorbar
saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','fft','.png'])
3.图像腐蚀和膨胀处理
图像的腐蚀和膨胀处理:
腐蚀和膨胀是针对白色部分(高亮部分)而言的。
膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;
腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。
膨胀用来处理缺陷问题;腐蚀用来处理毛刺问题。膨胀问题:就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。
腐蚀问题:腐蚀操作和膨胀操作相反,也就是将毛刺消除,腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值(偏黑)替换锚点重叠下图像的像素值。
%%
% dilate&erode
%图像腐蚀与膨胀
clear
close all
subplot(131);
I = imread('text.png')
imshow(I)SE = ones(6,2)
BW=imdilate(I,SE)
title('Subplot 1:原图')subplot(132);
imshow(BW)
title('Subplot 2:图像腐蚀处理')subplot(133);
BW2=imerode(I,SE)
imshow(BW2)
title('Subplot 3:图像膨胀处理')saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','dilate_erode','.png'])
4 图像灰度调整处理
图像灰度调整处理:
1.通过函数imadjust()进行图像灰度的调整.
2.其中会用到一个J=imadjust( I,[low_in;high_in],[low_out;high_out]) 就是调整之后的灰度图像.
3.imadjust([x1,x2])表示当值大于x2*255时,灰度设置为1,当值小于x1*255时,灰度为0.
%%
%enhancement imadjust
clear
I = imread('tire.tif')
J=imadjust(I,[0.3,0.7],[])%
subplot(2,2,1)
imshow(I)
title('Subplot 2:原图')subplot(2,2,2)
imshow(J)
title('Subplot 2:灰度调整后图')subplot(2,2,3)
imhist(I)
title('Subplot 3:原图灰度图')subplot(2,2,4)
imhist(J)
title('Subplot 4:调整后灰度图')saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','enhancement imadjust','.png'])
5.图像抖动处理算法
图像抖动处理算法:
1.对于可用颜色较少的系统,可以以牺牲分辨率为代价,通过颜色值的抖动来增加可用颜色数量。
2.没有使用抖动方法来进行颜色量化。这可能会导致颜色在索引图像中的分布更为均匀,但在某
些情况下可能会损失一些细节。
3.对比无抖动方法,抖动方法帮助尽量保留原始图像的颜色细节。
4.[X_no_dither,map]= rgb2ind(rgb,8,'nodither');//无抖动
5.[X_dither,map]=rgb2ind(rgb,8,'dither');//有抖动
%%
clearsubplot(131);
rgb=imread('onion.png');
imshow(rgb);
title('Subplot 1:原图')subplot(132);
[X_no_dither,map]= rgb2ind(rgb,8,'nodither');
imshow(X_no_dither,map);
title('Subplot 2:=无抖动效果图')subplot(133);
[X_dither,map]=rgb2ind(rgb,8,'dither');
imshow(X_dither,map);
title('Subplot 3:有抖动效果图')saveas(gcf,['C:\Users\Zeng Zhong Yan\Desktop\MATLAB\','imgae_dither','.png'])
相关文章:
图像处理与计算机视觉--第四章-图像滤波与增强-第二部分
目录 1.图像噪声化处理与卷积平滑 2.图像傅里叶快速变换处理 3.图像腐蚀和膨胀处理 4 图像灰度调整处理 5.图像抖动处理算法 学习计算机视觉方向的几条经验: 1.学习计算机视觉一定不能操之过急,不然往往事倍功半! 2.静下心来,理解每一个…...
[前端基础]typescript安装以及类型拓展
(0)写在前面: 作者之前都是在写js,所以这里介绍ts肯定是不能从头开始介绍了,主要在js的基础上介绍ts关于类型的几个特性,以及ts的安装还有配置问题 (1)ts和js是什么关系 通俗点来…...
网络参考资料汇总(1)
将这段时间参考的各路大佬的资料加以汇总分类: (1)FFmpeg: 基于FFmpeg进行rtsp推流及拉流(详细教程) Linux 编译安装 FFmpeg 步骤(带ffplay) Jetson 环境安装(三):jetson nano配置ffmpeg和ngin…...
Remove和RemoveLast用法
LeetCode 46 全排列 先贴代码 class Solution {List<List<Integer>> result new ArrayList<>();List<Integer> temp new ArrayList<>();public List<List<Integer>> permute(int[] nums) {dfs(nums, 0);return result;}public v…...
(一) 使用 Hugo 搭建个人博客保姆级教程(上篇)
手把手教你如何从0开始构建一个静态网站,这不需要有太多的编程和开发经验和时间投入,也基本不需要多少成本(除了个性化域名),使用GitHub和Hugo模板即可快速构建和上线一个网站。 目标读者 本文档适用于以下用户&…...
数据结构之栈
栈的模拟实现 1.栈的概念2.栈的方法3.栈的模拟实现(代码)3.1 接口My_Stack3.2 StackList3.3 异常类StackException3.4 测试类Test 1.栈的概念 2.栈的方法 3.栈的模拟实现(代码) 3.1 接口My_Stack 3.2 StackList 3.3 异常类StackException 3.4 测试类Test...
wireshark of tshark tools v3.4.0版本 支持json
tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…...
Python开源项目月排行 2023年9月
#2023年9月2023年9月9日1fishdraw这个项目是用来随机生成一条鱼的,这条鱼特别的稀奇古怪,这个项目不依赖任何库,支持 svg, json, csv 等格式。2vizro一个用于创建模块化数据可视化应用程序的工具包。在几分钟内快速自助组装定制仪表板 - 无需…...
uniapp项目实践总结(二十五)苹果 ios 平台 APP 打包教程
导语:当你的应用程序开发完成后,在上架 ios 应用商店之前,需要进行打包操作,下面就简单介绍一下打包方法。 目录 准备工作注册账号生成证书打包配置准备工作 在打包之前,请保证你的 uniapp 应用程序编译到 ios 模拟器或者是真机调试基座环境下是可以正常运行的,苹果打包…...
MySQL查询(基础到高级)
一、单表查询: 1.基本查询: 1.1 查询多个字段: 1.查询所有字段: select * from 表名;2.查询指定字段: select 字段1,字段2 from 表名; 1.2 去除重复记录 select distinct "字段" FROM "表名"; …...
电脑通过串口助手和51单片机串口通讯
今天有时间把电脑和51单片机之间的串口通讯搞定了,电脑发送的串口数据,单片机能够正常接收并显示到oled屏幕上,特此记录一下,防止后面自己忘记了怎么搞得了。 先来两个图片看看结果吧! 下面是串口3.c的文件全部内容&a…...
【Linux】线程详解完结篇——信号量 + 线程池 + 单例模式 + 读写锁
线程详解第四篇 前言正式开始信号量引例信号量的本质信号量相关的四个核心接口生产消费者模型用环形队列实现生产者消费者模型基于环形队列的生产消费模型的原理代码演示单生产者单消费者多生产者多消费者 计数器的意义 线程池基本概念代码 单例模式STL,智能指针和线程安全STL中…...
弧度、圆弧上的点、圆的半径(r)、弧长(s)之间的关系
要计算弧度和圆弧上的点,需要知道以下几个要素: 圆的半径(r):即圆的中心到圆周上任意一点的距离。 弧长(s):从圆周上的一个点到另一个点所经过的弧长。 弧度(θ&#x…...
[AOSP] [JNI] [Android] AOSP中使用JNI
一. 简要 🍎 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。J…...
GEE案例——如何使用长时序影像实现多波段图像加载(不同层土壤湿度)
简介: 在GEE中实现时序图像的加载主要的目的是查看影像波段或者指数的变化,这里我们使用的主要是加载常规的4个波段,然后添加一个复合波段,复合波段主要的是求4个波段的平均值,然后再次加入到原有的4个波段的时序图中。这里面主要的技术难点一个是图表的设定,另外一个就…...
Cloudflare进阶技巧:缓存利用最大化
1. 引言 cloudflare我想你应该知道是什么,一家真正意义上免费无限量的CDN,至今未曾有哥们喷它的。当然,在国内的速度确实比较一般,不过这也不能怪它。 CDN最大的特色,我想就是它的缓存功能,达到防攻击&am…...
想要精通算法和SQL的成长之路 - 二叉树的判断问题(子树判断 | 对称性 | 一致性判断)
想要精通算法和SQL的成长之路 - 二叉树的判断问题 前言一. 相同的树二. 对称二叉树三. 判断子树 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相同的树 原题链接 这题目典型的递归题: 如果两个节点都是null,我们返回true。如果两个节点一个nul…...
(零)如何做机器视觉项目
文章目录 1 项目的前期准备1.1 从5个方面初步分析客户需求1.2 方案评估与验证1.3 签订合同 2 项目规划2.1 定义客户端的详细需求2.2 制定项目管理计划2.3 方案评审 3 详细设计3.1 硬件设备的选择与环境搭建3.2 软件开发平台与开发工具的选择3.3 机器视觉系统的整体框架与开发流…...
【Leetcode】滑动窗口合集
这里写目录标题 209.长度最小的子数组题目思路代码 3. 无重复字符的最长子串(medium)题目思路 11. 最大连续 1 的个数 III题目思路 1658. 将 x 减到 0 的最⼩操作数题目思路代码 904. 水果成篮题目思路代码 438.找到字符串中所有字母的异位词题目思路代码…...
【C++】STL详解(九)—— set、map、multiset、multimap的介绍及使用
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】STL…...
计组—— I/O系统
📕:参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”? 编辑2.主机如何和I/O设备进行交互? 3.I/O控制方式 (1)程序查询方式 (2)程序中断方式 (3&#x…...
基于vc6+sdk51开发简易文字识别转语音的程序
系统:window7 软件:vc6.0 目的:简易文字转语音真人发声 利用2023国庆小长假,研究如何将文言转语音,之前在网上查询相关知识,大致了解微信语音转换,翻译官之类软件的原理,但要加入神…...
DevOps:自动化部署和持续集成/持续交付(CI/CD)
DevOps:自动化部署和持续集成/持续交付(CI/CD) 在现代软件开发领域,DevOps(Development和Operations的组合)已经成为一个不可或缺的概念。它代表了一种将软件开发和运维(Operations)…...
专业图标制作软件 Image2icon 最新中文 for mac
Image2Icon是一款用于Mac操作系统的图标转换工具。它允许用户将常见的图像文件(如PNG、JPEG、GIF等)转换为图标文件(.ico格式),以便在Mac上用作应用程序、文件夹或驱动器的自定义图标。 以下是Image2Icon的一些主要功…...
数据结构:顺序表
SeqList.h #pragma once #include<stdio.h> #include<assert.h> #include<stdlib.h>typedef int SLDataType; //#define NULL 0typedef struct SeqList {SLDataType* a;int size;//顺序表中存储的有效元素的个数int capacity;//空间的大小 }SL;void SLInit(…...
僵尸进程的产生与处理
僵尸进程(Zombie Process)是指在操作系统中已经完成了执行,但其父进程尚未调用wait()或waitpid()来获取其终止状态的子进程。当一个进程结束时,操作系统会保留该进程的一些基本信息,包括进程ID(PID…...
TouchEffects - Android View点击特效
官网 GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 项目简介 Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffect…...
从ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger代码看如何实现一个自定义的触发器
背景 当我们想要实现提前触发计算的触发器时,我们可以使用ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger作为触发器达到比如几分钟触发一次计算并发送计算结果的类,我们本文就从代码角度解析下实现自定义触发器的一些注意事项 Continuo…...
Linux 5种网络模型
[参考]:《黑马程序员Redis》https://www.bilibili.com/video/BV1cr4y1671t/?p166&share_sourcecopy_web&vd_source9e65300ccca322aeb367bb1eb677b0fc [参考]:《操作系统》 [参考]:《UNIX网络编程》 为了避免用户应用导致冲突甚至内…...
10.1 调试事件读取寄存器
当读者需要获取到特定进程内的寄存器信息时,则需要在上述代码中进行完善,首先需要编写CREATE_PROCESS_DEBUG_EVENT事件,程序被首次加载进入内存时会被触发此事件,在该事件内首先我们通过lpStartAddress属性获取到当前程序的入口地…...
怎么样让百度收录网站/互联网公司排名
题目大意 智能手机九点屏幕滑动解锁,如果给出某些连接线段,求出经过所有给出线段的合法的滑动解锁手势的总数。题目链接: 滑动解锁 题目分析 首先,尝试求解没有给定线段情况下,所有合法的路径的总数。可以使用dfs进行搜…...
常德哪里有做网站/网站优化怎么做
规范化齐次坐标的作用:可将图形变换表示为图形点集规范化次坐标矩阵与某一变换矩阵相乘的形式。 平移变换比例变换旋转变换 对称变换 错位变换相对任一参考点的二维几何变换 相对任意方向的二维几何变换...
宁波网站建设模板制作/北京百度网站排名优化
ScrollView是解决布局过长的情况下使用,一遍其下面会有个顶部布局,我项目里面是RelativeLayout,但是RelativeLayout无论设置 android:layout_height"wrap_content" 还是 android:layout_height"match_content" 都无法解决…...
海珠营销型网站建设/免费推广渠道有哪些
前两天刚刚装了一个MyEclipse,今天用了一下,却发现,每次想要在控制台上输出中文时,总是以乱码显示的。查了很多资料,对算是搞明白,怎么回事。首先,在这里先解释下,MyEclipse…...
网站建设全包公司推荐/seo是搜索引擎优化
重新安装了ubuntu12.04后,Ubuntu开机就出现:error:no such partitiongrub rescue >一般情况下,出现这类错误是引导文件出错或者系统找不到引导文件,而系统并没有坏,所以不用重新安装系统。需要进行如下的…...
佛山家具网站建设公司/看网站搜什么关键词
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 先上结论:保证算法结果的正确性,需要从「算法推导的正确性」、「算法效果的正…...