数字图像处理复习纲要
第一章
1.数字图像的概念:
数字图像:数字图像是对连续图像数字化或离 散化的结果,也称离散图像
2.广义的图像处理(图像工程)包含的三个层次
3.像素的概念
一幅图像可分解为许多个单元。每个基本单元叫做图像元素,简称像素
4.灰度图像存储容量的计算
空间分辨率:图像的尺寸(M∗NM*NM∗N),在成像时采了MN个样,图像包含了MN个像素。
幅度分辨率:在成像时量化成了G(G=2kG = 2^kG=2k)个灰度级,存储一幅图像所需的位数b(b=M∗N∗kb = M * N * kb=M∗N∗k)(单位是bit)
第二章
1.像素的邻域
2.像素间距离,三种距离公式
像素间距离 :
欧氏距离(也是范数为2的距离):DE(p,q) = [(x − s)2 + (y − t)2]12D_E(p,q)\;=\;\lbrack{(x\;-\;s)}^2\;+\;{(y\;-\;t)}^2\rbrack^{\frac12}DE(p,q)=[(x−s)2+(y−t)2]21
城区距离(也是范数为1的距离): D4(p,q) = ∣x − s∣ + ∣ ...
数据结构篇:邻接表
每一个顶点后面就是一条链表,每个顶点都存在数组里。 以这张图为例 结构如下 运行截图 结构体定义
12345678910111213141516171819202122 //边表结点typedef struct EdgeNode { //顶点对应的下标 int adjvex; //指向下一个邻接点 struct EdgeNode *next;} edgeNode;//顶点表结点typedef struct VertexNode { //顶点数据 char data; //边表头指针 edgeNode *firstedge;} VertexNode, AdjList[100];//集合typedef struct { AdjList adjList; //顶点数和边数 int numVertexes, num ...
DFS和BFS
深度优先遍历 (DFS)
深度优先遍历,也称作深度优先搜索,缩写为DFS
深度优先遍历从某个顶点出发,访问此顶点,然后从v的未被访问的邻接点触发深度优先便利图,直至所有和v有路径想通的顶点都被访问到。
这样我们一定就访问到所有结点了吗,没有,可能还有的分支我们没有访问到,所以需要回溯(一般情况下都设置一个数组,来记录顶点是否访问到,如果访问到就不执行DFS算法,如果未被访问过就执行DFS算法)
以这张图为例
我们约定,在没有碰到重复顶点的情况下,优先选择右手边
那么按深度优先遍历就是:A B C D E F G H(此时这条线路已经走到尽头,可是还有一个I顶点没有遍历,所以回到G,发现G的邻接点都遍历过了,再回到F,发现F的邻接点也都遍历过了。。。直到D顶点,发现I这个顶点没有遍历,所以把I再遍历,继续回溯,最终回到起点A) I
落实到代码就是
123 //访问标志的数组,为1表示访问过,为0表示未被访问int visted[100];
1234567891011121314151617 //邻接表的深度优先遍历算法void AdjacencyList::DFS(GraphAdj ...
数据结构篇:单链表
本程序以类似应用程序的对话框形式进行单链表的操作。希望对大家的学习有所帮助。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818 ...
ET篇:个人笔记汇总
ET系列教程视频
B站视频教程
ETBook学习笔记
ETBook笔记汇总
FairyGUI学习笔记
ET使用FairyGUI开发的完整工作流
基于FGUI的小地图制作
ET 5.0学习笔记
运行master
master项目结构梳理
master客户端初始化流程
master服务端初始化流程
master消息机制
ET 6.0学习笔记
ET 6.0学习笔记
ET6.0接入ILRuntime
ET 7.0学习笔记
ET7+FariyGUI+huatuo+luban+yooasset接入教程
ET 斗地主学习笔记
运行斗地主
斗地主的资源工作流
ET 其他笔记
ETTask和ETVoid相关知识
ET中那些千万不能踩的坑
ET&&FGUI接入xasset流程
ET篇:斗地主的资源工作流
有了master的学习经验,斗地主的学习将不会太多精细化,更多细节大家可以自行查看,本系列文章旨在帮助大家理解整个开发流程
资源划分策略
先来到Asset下的Bundles文件夹,这里是游戏内用到的所有的资源,都被打成ab包,正式发布时将会删除,从资源服务器下载文件
Independent
Code 包含热更新模块的dll文件
Config 包含客户端的配置文件(连接配置,所用到的玩家,敌人等数据结构) UI
Landlords/Altas 包含游戏内用到的所有图集
Landlords/Content 玩家正式开局游戏内的个人信息
Landlords/HandCard 玩家手牌UI
Landlords/LandlordsEnd 游戏结束界面
Landlords/Interaction 玩家的正式游戏内操作界面(出牌,不要,抢地主,不抢等)
Landlords/LandlordsLobby 游戏大厅
Landlords/LandlordsLogin 登录界面
Landlords/LandlordsRoom 正式游戏界面UI
Landlord ...
ET篇:运行斗地主Demo
环境准备:
下载斗地主Demo
https://github.com/Viagi/LandlordsCore.git
准备2017.4.0版本的Unity
https://unity3d.com/cn/get-unity/download/archive
下载并配置MongoDB以及Studio 3T
MongoDB地址:****https://www.mongodb.com/download-center/community
选择Custom
我是在D盘新建了MongoDB文件夹来作为安装目录
这个可视化工具看个人喜好,我这里没有安装
找到电脑上的cmd.exe
复制一份到MongoDB安装目录的bin文件夹下面
打开刚刚复制的cmd.exe
执行以下命令(_dbpath后面的路径为你的MongoDB安装路径下的的data文件夹路径)
1mongod -dbpath D:\MongoDB\data
然后他可能会这样
打开浏览器,输入** http://localhost:27017/如果显示如下信息,表示连接成功**
Studio 3T的下载
https:// ...
ET篇:ETVoid和void,ETTask和Task的区别与使用时机
在学习ET的过程中,我们经常看到ETVoid和ETTask的身影
比如
1234567891011121314151617181920/// <summary>/// 异步加载assetbundle/// </summary>/// <param name="assetBundleName"></param>/// <returns></returns>public async ETTask LoadBundleAsync(string assetBundleName){ assetBundleName = assetBundleName.ToLower(); string[] dependencies = AssetBundleHelper.GetSortedDependencies(assetBundleName); // Log.Debug($"-----------dep load {assetBundleName} dep: ...
ET篇:基于FGUI的小地图制作
前言
小地图开发对于我们来说是再常见不过的需求了,单用Unity中的UGUI来说倒也方便,但是用FGUI又如何呢?
正式开始
FGUI资源的搭建
注意小地图图片要用装载器来包装,不然他将会是不可触摸的,小地图宽高我们设置为200,大地图我们设置大小为100
然后导出到Unity
FGUI坐标系统
http://www.fairygui.com/guide/unity/transform.html
小地图到大地图的坐标映射
落实到代码就是
12345678910111213141516 public override void Start(FUI5V5Map self) {//为小地图图片添加点击事件 self.SmallMapSprite.onRightClick.Add(this.AnyEventHandler); } void AnyEventHandler(EventContext context) { //Log.Info("点击了小地图") ...
ET篇:master客户端初始化流程的介绍
要学习一个Demo,不能漫无目的的乱看,看到哪是哪,要有条理,我习惯于从程序入口开始
进入Init场景
发现貌似只有一个Init脚本发挥着作用
那我们就进入Init脚本
这个便是入口了,他调用了StartAsync()函数,至于为什么后面加上Coroutine()(Coroutine是个空函数,并没有什么具体的作用)
熊猫大大说是为了防止这种情况(好吧。。。)
** 接下来我一步一步的解读Init函数里面的语句**
12 //把所有的异步回调都放到主线程执行SynchronizationContext.SetSynchronizationContext(OneThreadSynchronizationContext.Instance);
这个如果不理解的,应该去看看我前面的ETBook笔记
1234 //使当前游戏物体不会被销毁DontDestroyOnLoad(gameObject);//添加ETModel.dll,并解析维护当中的特性Game.EventSystem.Add(DLLType.Model, typeof(Init).Assembly);
第一句没什么好说的
我 ...