gravity

各种边缘检测算子

我的梦境 提交于 2020-04-09 14:21:38
转载: https://blog.csdn.net/tigerda/article/details/61192943 常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia 一阶微分算子:Roberts 、Sobel 、Prewitt Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。 Roberts算子是一种利用局部差分算子寻找边缘的算子,它采用对角线方向相邻两象素之差近似梯度幅值检测边缘。没有经过图像平滑处理的,因此图像噪声一般得不到很好的抑制。Roberts 算子对具有陡峭的低噪声图像的定位精度较高。 Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。 我们看这三种边缘检测算子模板及写成差分的形式 Roberts算子 Sobel算子 Prewitt算子 图 1 一阶微分算子 如何计算边缘幅值与方向?以Sobel算子为例。3*3 Sobel两个方向的算子在图像上滑动,模板与其覆盖的图像3

USB Type-C的基本原理

假装没事ソ 提交于 2020-04-09 11:03:55
1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C(简称USB-C)的基本特性: 1. 接口插座的尺寸与原来的Micro-USB规格一样小,约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反插”功能 4. 最大传输速度10Gb/s,即是USB 3.1 Gen2标准 5. 配备USB-C连接器的标准规格连接线可通过3A电流,同时还支持超出现有USB供电能力的USB Power Delivery,可以最大提供100W电力(20V/5A) 1.2 引脚定义 Figure 1-2 引脚定义 母口: 公头: Figure 1-3 引脚映射图 1.3 USB-C设备识别方法 Figure 1-4 USB-C设备识别方法 电阻和充电电流映射如Table 1-1所示。 Table 1-1 USB-C Rp和Rd具体值(以上拉电压5V为例) 1.4 正反可插原理 Figure 1-5 正反可插图示 1.5 DRP设备如何工作 Figure 1-6 DRP设备电路原理图 DRP状态机伪代码示例如下所示(该示例伪代码状态机来源于P124 Figure 4-15 of USB Type-C Specification Release 1.1),为便于理解下一章节讲述的USB PD

Android LinearLayout线性布局详解

旧街凉风 提交于 2020-04-09 01:00:36
  为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器。通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性。推荐使用布局管理器来管理组件的分布、大小,而不是直接设置组件的位置和大小。可以使用布局管理器嵌套布局管理器,即也可作为一个UI组件来使用。   LinearLayout可以控制组件横向排列或者纵向排列,内容不会换行,超出屏幕部分将不会显示出来。 学习图解 LinearLayout 常用XML属性及方法 【属性一】 orientation 设置子组件的排列方式(单选)   XML: android:orientation=" horizontal "         horizontal:横向排列      vertical:纵向排列   JAVA : linearLayout.setOrientation( LinearLayout . VERTICAL );      LinearLayout.HORIZONTAL 横向排列         LinearLayout.VERTICAL 纵向排列    【属性二】 gravity 设置子组件的对齐方式(多选 )    XML: android:gravity="center"       JAVA : linearLayout.setGravity( Gravity .

MacBook外置显卡eGPU折腾笔记

两盒软妹~` 提交于 2020-04-08 21:56:14
MacBook外置显卡eGPU折腾笔记 硬件选购 当今市场上个人电脑的独立显卡,基本上能选的只有NVIDIA和AMD了,如果你想买外置显卡来打游戏的话,NVIDIA和AMD的都可以,但如果是像我一样准备用来做深度学习加速的,那最好还是选择NVIDIA了。 另外,如果要用来做深度学习加速,一定要查看英伟达官方网站,必须是支持CUDA的显卡才行,因为现在大多数的深度学习框架,底层都是调用GPU的CUDA编程接口。 不过大家也不用担心需要多么昂贵的显卡,GeForce GTX 9XX,GeForce GTX 10XX的显卡基本上都是支持的,具体购买之前去官方网站再核实一下即可。 因为本文的经验来自于MacBook Pro,所以,以下着重介绍MacBook Pro安装、配置外置显卡的一些信息。Windows下依然也可以使用外置显卡的,而且性能损失更少。 电脑 对比较新的笔记本而言,要配置外置显卡,最佳的途径非Thunderbolt接口(也称雷电接口)莫属,这个接口一共分3代,从2016年以后的苹果笔记本电脑,包括MacBook Pro、MacBook上面配置的,都是第三代的雷电接口,这个接口速度极快,因此提供了扩展显卡的可能性,接口的形状与USB 3.1的形状一样,现在很多PC笔记本也配备了这个接口,但 一定要注意了,有些电脑上也有这个形状的接口,但并不是雷电3接口,而只是USB接口

C/C++ 第八周串和数组 (一)顺序串算法 项目2—(三)

非 Y 不嫁゛ 提交于 2020-04-06 19:21:50
/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqqueue.h sqqueue.cpp *作者:黄士胜 *完成日期:2017年11月1日 *版本号:v1.0 * *问题描述: 采用顺序存储的方式存储串,实现下列算法并测试。 *输入描述:无 *程序输出:见运行结果截图 */ (三) (3)从串s中删除其值等于c的所有字符。如从message中删除’e’,得到的是mssag: 主函数: #include <stdio.h> #include "../sqString.h" void DellChar(SqString &s, char c) { int k=0, i=0; //k记录值等于c的字符个数 while(i<s.length) { if(s.data[i]==c) k++; else s.data[i-k]=s.data[i]; i++; } s.length -= k; } int main() { SqString s; StrAssign(s, "message"); DellChar(s, 'e'); DispStr(s); return 0; } 运行结果: 学习心得: 了解了如何进行串的删除,强化我对串的了解。 点赞 收藏 分享 文章举报 不会游泳的咸鱼 发布了34 篇原创文章

第13周 【项目二】 验证分块查找算法

纵然是瞬间 提交于 2020-04-06 18:22:16
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年11月30日 *版本号:v1.0 *问题描述: 运行并本周视频中所讲过的算法,观察结果并领会算法。 2、认真阅读并验证分块查找算法。请用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56, 74,61,90,80,96,127,158,116,114,128,113,115,102,184,211,243,188,187,218,195,210,279,307,492,452,408,361,421,399,856,523,704,703,697,535,534,739(共n=56个数据,每块数据个数s=8)作为数据表,自行构造索引表,分别对查找61、739、200进行测试。 一、代码如下: #include <stdio.h> #define MAXL 100 //数据表的最大长度 #define MAXI 20 //索引表的最大长度 typedef int KeyType; typedef char InfoType[10]; typedef struct { KeyType key; //KeyType为关键字的数据类型 InfoType data; //其他数据

codeForces 448D.Multiplication Table (二分+数学)

雨燕双飞 提交于 2020-04-06 13:11:13
题意: 给你三个数字N,M,K,给你个N*M的矩阵,对于[i][j]位置的值为i*j,问第K小的数字为多少? 思路: 因为第K小得数字一定小于K,我们可以枚举答案这个数字ans从1-K,然后对于每一个ans算出来小于等于的ans数字有多少个(这里不必用N方的,因为每一行是倍增的,所以对于第i行,ans/i就等于这一行小于ans的个数,这个个数不能比这一行数字的总数还多,也就是列数M,这两个值取较小的就行了),如果N^2肯定超时,所以得要个 得算法。我们可以发现ans变大小于等于他的数字总数字就多,ans变小小于等于他的数字就少,符合二分的条件,所以我们用二分的方法去寻找ans就行了,这样复杂度正好为 。 注意: 如这组样例:2 28 49 你会发现42 43都是满足要求的,但是矩阵中没有43这个数字,所以42才是正确答案。我们只要找个下界就可以解决这个问题了。因为这种情况只可能是一个一个非素数,一个素数,且非素数<素数,而这个非素数一定存在在矩阵中。如果非素数>素数,那么小于等于这个非素数的数字个数一定大于小于等于这个素数的数字个数。所以我们求个下界就可以。 #include<bits/stdc++.h> using namespace std; const int MAXN = 5e3 + 5; long long N,M,K; long long check(long long

codeForces 165B.Burning Midnight Oil(二分)

て烟熏妆下的殇ゞ 提交于 2020-04-06 12:43:44
题意: 给你两个整数字N,K。N表示有个人要写N行东西,K是跟他的写东西效率有关的一个系数。这个人写东西写一会就累了就必须喝杯茶再写,他的效率会越来越低。需要求一个V值,V表示他依次能写 等等,当这个值为零时他就睡着了。问你V最小为多少时,他才能写完这N行东西? 思路: 二分一个V值,求出当前情况下可以写的行数sum如果小于N就继续二分大于V的部分,如果大于N就继续二分不大于V的部分,看V是否能够更小,如果等于V就跳出。 #include<bits/stdc++.h> using namespace std; int n,k; int check(int v) { long long t = k,sum = v; while(t <= n) { sum += v / t; t *= k; } return sum; } int main() { while(~scanf("%d%d",&n,&k)) { int l = 1,r = n,m = l + (r - l) / 2; while(l < r) { if(check(m) < n) l = m + 1; else r = m; m = l + (r - l) / 2; } printf("%d\n",m); } return 0; } 点赞 收藏 分享 文章举报 张松超 发布了646 篇原创文章 · 获赞 57 · 访问量

C/C++ 程序中的多文件组织

为君一笑 提交于 2020-04-06 10:54:09
*Copyright(c)2014,烟台大学计算机学院 *All right reserved. *文件名:main.cpp fun.cpp *作者:黄士胜 *完成日期:2017年9月13日 *版本号:v1.0 * *问题描述:程序的多文件组织 *输入描述:两个待相加的数 *程序输出:两个数的和 点赞 1 收藏 分享 文章举报 不会游泳的咸鱼 发布了34 篇原创文章 · 获赞 9 · 访问量 1万+ 私信 关注 来源: oschina 链接: https://my.oschina.net/u/4375980/blog/3216376