matlab 取图像一部分 微分算子,Matlab实现:图像边缘提取

1、 边缘提取算法 方法一:一阶微分算子 Sobel算子 Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素。 Roberts算子 Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。 Prewitt算子 Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好。但边缘较宽,而且间断点多。 Canny算子 Canny算子是目前边缘检测最常用的算法,效果也是最理想的。 Canny边缘检测算法不是简单的模板卷积而已,通过梯度方向和双阈值法来检测边缘点,具体算法可以参考:http://www.cnblogs.com/AndyJee/p/3734805.html; Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。 方法二:二阶微分算子 Laplacian算子 Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。 2、 实验结果分析 一、边缘提取: Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素; Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确; Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好。但边缘较宽,而且间断点多; Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区; Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。 二、边缘复合增强 Sobel、Robert、Prewitt算子的增强效果并不是很明显,尤其是Robert算子,因为它提取的边缘点过于稀疏和离散; Laplacian算子和canny算子的增强效果都比较理想, 将边缘叠加上去后,整个手的轮廓和边缘都很清晰,直观上看,canny算子实现的效果比Laplacian算子好,最明显的地方就是手指尖的边缘。 3、程序实现 下面的程序就实现上面效果的完整Matlab代码: clear;clc; I=imread(‘x1.tif‘); % I=rgb2gray(I); % gray transform J=imadjust(I,[0.1 0.9],[0 1],1); % Edge detection % Sobel BW1=edge(I,‘sobel‘); sobelBW1=im2uint8(BW1)+J; figure; %imshow(BW1); subplot(1,2,1); imshow(J); title(‘original image‘); subplot(1,2,2); imshow(sobelBW1); title(‘Sobel augmented image‘); % Roberts BW2=edge(I,‘roberts‘); robertBW2=im2uint8(BW2)+J; figure; %imshow(BW2); subplot(1,2,1); imshow(J); title(‘original image‘); subplot(1,2,2);

小程序根据经纬度计算两点之间的距离km

1、设置初始化值 data: { // 两地的距离 distance: 0, //当前定位位置 latitude: null, longitude: null, // 目的地坐标 latitude2: 22.54311, longitude2: 114.057884, }, 2、获取两地的距离值 onLoad: function (options) { //获取当前位置 wx.getLocation({ type: 'gcj02', success: (res) => { const distance_new = this.getDistance(res.latitude, res.longitude, this.data.latitude2, this.data.longitude2); this.setData({ distance: distance_new }) } }) }, // 计算距离函数 Rad(d) { //根据经纬度判断距离 return d * Math.PI / 180.0; }, getDistance(lat1, lng1, lat2, lng2) { // lat1用户的纬度 // lng1用户的经度 // lat2商家的纬度 // lng2商家的经度 var radLat1 = this.

全排列算法

输入字符,对字符进行全排列。这里用了两种方法,递归调用(一些书上写的是DFS)和c++系统自带的方式。 #include <iostream> #include<string> #include<algorithm> using namespace std; char output[10]; bool s[10]; void permutation(string str, int index) { if (index == str.size()) { for (int i = 0; i < str.size(); i++) { cout << output[i]; } cout << endl; return; } for (int i = 0; i < str.size(); i++) //每个位置有3个选择 { if (s[i] ) { continue; }//这个位置不能选这个字母,直接跳过 output[index] = str[i]; s[i] = true; permutation(str, index+1); s[i] = false; //回溯,重要一步 } } int main() { string s; cin >> s; //自定义全排列 permutation(s, 0); //系统的全排列行数,没有下一个时返回false while (next_permutation(s.

java调用远程接口并传JSON数据

public static JSONObject httpInterfaceForJson(String requestUrl, String requestMethod, JSONObject fullJson) { String res = ""; StringBuffer buffer = new StringBuffer(); HttpURLConnection httpUrlConn = null; try { URL url = new URL(requestUrl); httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // httpUrlConn.setRequestProperty("Accept", "text/plain"); httpUrlConn.setRequestProperty("Content-Type", "application/json"); httpUrlConn.setRequestMethod(requestMethod); httpUrlConn.getOutputStream().write(fullJson.toString().getBytes("UTF-8")); InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while((str = bufferedReader.readLine()) != null) { buffer.

lexical or preprocessor issue

原生工程集成了flutter工程,突然不知道动了那里就报 fatal error: 'Flutter\Flutter.h' file not found #import <Flutter\Flutter.h> 这样的错误 解决办法: 打开flutter工程,删除.ios文件夹,运行pub get 会重新自动生成.ios文件夹。

IEEE会议大全及排名

IEEE会议大全及排名 原文:https://www.cnblogs.com/yymn/p/4638182.html Rank 1: SIGCOMM: ACM Conf on Comm Architectures, Protocols & Apps INFOCOM: Annual Joint Conf IEEE Comp & Comm Soc SPAA: Symp on Parallel Algms and Architecture PODC: ACM Symp on Principles of Distributed Computing PPoPP: Principles and Practice of Parallel Programming RTSS: Real Time Systems Symp SOSP: ACM SIGOPS Symp on OS Principles SOSDI: Usenix Symp on OS Design and Implementation CCS: ACM Conf on Comp and Communications Security IEEE Symposium on Security and Privacy MOBICOM: ACM Intl Conf on Mobile Computing and Networking USENIX Conf on Internet Tech and Sys ICNP: Intl Conf on Network Protocols PACT: Intl Conf on Parallel Arch and Compil Tech RTAS: IEEE Real-Time and Embedded Technology and Applications Symposium ICDCS: IEEE Intl Conf on Distributed Comp Systems

windows内存偏高,关闭应用后也降不下来的解决办法

描述:最近使用笔记本发现很多应用都关闭了,只剩下了QQ和微信,但16G的内存显示占用还是高达70%,从网上搜了一堆方法,目前确定产生这种现象的主要原因是系统在固态硬盘中,固态硬盘会使用内存当磁盘进行存储,这就导致开机时内存占用少,等应用开多了内存上升之后,关闭应用内存也被占用。 解决方案:进入“设备管理器”,点开“磁盘驱动器”,找到系统安装的固态硬盘,右键“属性”,点开“策略”,将“启用设备上的写入缓存”去掉勾选,点击“确定”,重启电脑后电脑内存变回正常 2021年4月22日更新: 经过本人的测试,发现上述方案并没有解决内存泄漏的问题,由此考虑是系统出了问题,毕竟是自己网上找的系统做的重装,为此解决方案只有2条:要么重装正常系统,要么更新系统。 我选择了第2条。 进入这个网站,https://www.microsoft.com/zh-cn/software-download/windows10,点击 立即更新,可通过更新的方式来将现有有问题的系统更新到正常系统,由此可快速有效地解决问题。 2021年9月24日更新: 最近开机内存又开始飙到50%了,但是系统是最新的,用上述方法不行,网上搜了一圈,可以在计算机的服用中把SysMain关闭,再重启电脑内存就正常了 。

Shell入门-Shell数组

Shell数组 通常在开发Shell脚本时,定义变量采用的形式为“a=1; b=2; c=3”,可如果有多个变量呢?这时再逐个地定义就会很费劲,并且要是有多个不确定的变量内容,也会难以进行变量定义,此外,快速读取不同变量的值也是一件很痛苦的事情,于是数组就诞生了,它就是为了解决上述问题而出现的 Shell数组的定义 方法一:用小括号将变量值括起来赋值给数组变量,每个变量值之间要用空格进行分隔 语法: array=(arg1 arg2 arg3) 实践: [root@localhost shell]# array=(1 2 3) [root@localhost shell]# echo ${array[*]} 1 2 3 方法二:用小括号将变量值括起来,同时采用键值对的形式赋值 语法: array=([1]=one [2]=two [3]=three) 实践: [root@localhost shell]# array=([1]=one [2]=two [3]=three) [root@localhost shell]# echo ${array[*]} one two three [root@localhost shell]# 方法三:通过分别定义数组变量的方法来定义 语法: array[0]=a;array[1]=b;array[2]=c 实践: [root@localhost shell]# array[0]=a;array[1]=b;array[2]=c [root@localhost shell]# echo ${array[*]} a b c three [root@localhost shell]# 方法四:动态定义数组变量,使用命令的输出内容作为数组内容 语法: array=($(命令)) 或 array=(`命令`) 实践: [root@localhost shell]# ls stu* stu_102999_1.

matlab函数xlsread函数,matlab中xlsread函数

5.num = xlsread(filename, sheet, range) 同时指定工作表和工作表区域。 【例 7.2-2】调用 xlsread 函数读取文件 examp71_1.xls 第 1 个工作表中区域 ...... Excel 日期格式在 matlab 中的转换 Excel 支持的日期格式如下:2011*8*12,*可以为“年”“/”“—”等形式,然而使用 、、 xlsread 函数后肯定会转为字符串...... [x,textdata]=xlsread(‘A.xls’);%从 excel 中读取数据 Xz=zscore(x) % 数据标准化 [PC,SCORE,latent,tsquare]=princomp(Xz) %利用 princomp 函数根据...... ? >>D = xlsread('Btest.xls', 1, 'B2:F5001'); ? >> xlswrite('book4.xls',D) 三、 将txt文件数据导入 matlab ? test1.txt 的文件内容如下 ?... MATLAB 中文件输入及输出指令一、基本文件输入输出 File import/export functions. dlmread dlmwrite importdata daqread matfinfo xlsread xlswrite xlsfinfo - Read ...... 使用格式控制读取字符串 特殊函数 csvread :读取逗号分隔格式的数据文件到.

tree 命令使用

在项目路径下tree 中文树tree -N 过滤某个文件夹(windows下貌似不行,会显示‘参数太多’)tree -I "node_modules"

z3学习笔记(有空继续整理)

一、基本语法 Declare-const: 声明给定类型(type/ sort)的常量 declare-fun:声明一个函数 (declare-fun f (Int Bool) Int):声明一个接收整型和布尔型两个参数的函数,返回int (define-fun a () Int [val]):是解释。此处表明a的值是val (define-fun conjecture () Bool (=> (and (=> p q) (=> q r)) (=> p r))) (assert (not conjecture)) 此处的define-fun是起到把后面bool表达式定义一个别名的作用 Reset:重置清空所有声明和断言 Simplify:简化表达式 Define-sort:给sort类型的表达式定义一个别名 Declare-sort:声明一种未解释的类型A (declare-sort A) (declare-const x A) 声明A类型的常量x SMT公式的基本构建块我就是常量和函数,而常量实际就是没有参数的函数,所以其所有东西都可以看成一个函数。 (Declare-fun a () int) 等价于 (declare-const b int)<后者是前者的语法糖> 典型的一阶逻辑中,函数都没有副作用,都是定义在输入值上的,所以没有参数的函数实际就是常量 纯一阶逻辑中的函数和常量符号是未解释的或者说自由的,即没有先验解释附加之上。所以+号不一定代表加法,任何和其兼容的都可以 ; defining my own division operator where x/0.0 == 0.0 for every x. (define-fun mydiv ((x Real) (y Real)) Real

matlab 零均值白噪声,matlab产生白噪声,怎么产生均值为0,方差为1的白噪声

这样: randn函数 e69da5e6ba90e799bee5baa6e997aee7ad9431333431373838 产生高斯分布序列,例如: y=randn(1,2500); y=y/std(y); y=y-mean(y); a=0.0128; b=sqrt(0.9596); y=a+b*y; y=rand(1,100);均与分布 R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。 RAYLCDF Rayleigh cumulative distribution function. 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。 y = wgn(m,n,p,imp,state) 重置RANDN的状态。 在数值变量后还可附加一些标志性参数: y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。 y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。 2. AWGN:在某一信号中加入高斯白噪声 y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。 y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强 MATLAB中产生高斯 白噪声的两个函数 MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。 y = wgn(m,n,p,imp,state) 重置RANDN的状态。 在数值变量后还可附加一些标志性参数: y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是dBW, dBm或linear。线性强度(linear power)以瓦特(Watt)为单位。 y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是real或complex。 2.

latex 引用公式

latex 运用引用功能,给公式添加标签 \label,不用自己手动更改数字的。 1. 一般情况下,可以用 \ref 命令 \ begin{equation} I_{t}=I_{0}+\sum_{i=1}^{t}(Q_{i}-d_{i})\label{con:inventoryflow} \ end{equation} Equation \ ref{con:inventoryflow} is the inventory flow formula. 2. 若要在引用的编号两边显示括号或中括号,则可以用 (\ref) 或 [\ref] 命令: \ begin{equation} I_{t}=I_{0}+\sum_{i=1}^{t}(Q_{i}-d_{i})\label{con:inventoryflow} \ end{equation} Equation (\ ref{con:inventoryflow}) is the inventory flow formula. 3. 或加载 amsmath 工具包,使用 \eqref 命令: \ begin{equation} I_{t}=I_{0}+\sum_{i=1}^{t}(Q_{i}-d_{i})\label{con:inventoryflow} \ end{equation} Constraint \ eqref{con:inventoryflow} is the inventory flow formula. 4. 自定义引用样式,可以用 newcommand 自定义一个引用样式。 newcommand 函数的格式为:\newcommand{新命令}[参数数量][默认值]{定义内容}。默认值一般可以省略,只给出参数数量。#1表示参数内容。 \newcommand{\myref}[1]{Eq.\ ref{#1}} \ myref{con:inventoryflow} is the inventory flow formula.

appium测试遇到的问题总结

1、Could not sign with default certificate. Original error: Could not sign with default certificate. Original error Command ''E:\Program Files (x86)\Java\jdk1.8.0_45\bin\java.exe' -jar ' C:\Program Files (x86)\Appium\resources\app\node_modules\appium-adb\jars\sign.jar' ' C:\Program Files (x86)\Appium\resources\app\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk ' --override' exited with code 1 解决办法 通过日志,查到apk的文件路径中存在该apk,通过升级appium_desktop (cmd命令:npm update -g appium ),后重新运行,依旧会出现这个提示 以管理员身份运行该软件后解决该问题:右键appium图标,以管理员运行,然后就解决了 2、adb检测不到设备 解决: 1.检查手机驱动是否安装(win10系统不需要),去官网下载手机驱动或者电脑下载手机助手来辅助安装手机驱动,安装完成后卸载手机助手(防止接入手机时抢adb端口造成干扰) 2.打开手机设置,进入开发者选项,打开USB调试功能 3.重新插拔手机USB,选择接受调试,接受验证指纹 3、adb安装应用提示权限不够 解决:部分安卓手机开发者选项需要修改USB调试 把红色画圈的设置都打开 蓝色花圈的设置关闭 4、代码报错:找不到连接的安卓设备 解决:检查代码中平台版本号是否填写正确 5、出现class not found这种java堆栈错误的现象 SWT folder '..\lib\location of your Java installation.' does not exist. Please set ANDROID_SWT to point to the folder containing swt.

我的面试总结

这里写目录标题 一、技术面试1.1阿里巴巴1.2腾讯 二、项目2.1阿里巴巴2.2中汽数据自动驾驶 三、总结 一、技术面试 1.1阿里巴巴 1、面向过程和面向对象的区别? 2、什么是内存越界和内存泄漏 3、molloc和new的区别 4、对多态和继承有没有了解,说一下 5、什么是多线程,了解过多线程通信吗 6、指针和引用的区别 7、学过数据结构吗,说一下都知道什么排序,既然你说出了这个排序,讲一讲他是怎么实现的 1.2腾讯 1、extern "C"的作用 2、虚函数,及其原理 3、#ifndef的作用 4、网络和多线程 5、三次握手 6、反转链表编程题 7、TCP和UDP的区别 8、open和fopen的区别 9、智能指针shared_ptr和unique_ptr的区别 二、项目 2.1阿里巴巴 1、在这个项目中做了什么 2、用了什么技术,有没有用到并发 3、有没有遇到过难题,如何解决的 4、既然你的程序现在适用于此机型,如果再增加一个机型,打算怎么做 5、问课题,怎么实现轨迹规划的,既然叶片有规则,还轨迹规划干啥 6、机械臂上有什么传感器实现避障 7、以前做过什么引以为傲的事 8、平时怎么学习的,安排课程与课外学习时间 2.2中汽数据自动驾驶 1、介绍一下这个项目 2、是自动的路径规划还是遥控 3、路径规划用到的传感器 4、既然路径规划,说明你的环境SLAM已经做好了对吧,得有一个输入。 三、总结 1、别老自己主动否定自己,该装就要装;不卑不亢,但要客气。 2、去B站看面试实际的视频分享,或者去看一些面试经验分享,怎么说话,该注意什么,这非常重要!

离散数学-<集合论与图论>思维导图

<集合论与图论> 文章目录 <集合论与图论>前言一、集合基本概念与运算二、映射(函数)三、关系四、无穷及基数 前言 思维导图由哈工大《集合论与图论》(姜守旭)慕课以及《离散数学》第3版(清华大学出版社屈婉玲编著版本)内容整理。 慕课链接:https://www.icourse163.org/course/HIT-1003779006 一、集合基本概念与运算 二、映射(函数) 三、关系 四、无穷及基数

复杂网络中根据网络的边信息得到网络的邻接矩阵Matlab实现

%% 载入数据 % 数据类型:edge[source,target](所有节点的id已被处理为1~n) edges=xlsread('edges.csv');%载入邻接表数据--有向边 %% 邻接表转邻接矩阵 M=length(edges); % 边数 N=n % n为你网络的节点数 adjMatrix=zeros(N) % 使用0初始化邻接矩阵n×n for i=1:M % 循环M条边 adjMatrix(edges(i,1),edges(i,2))=1; % 将存在的边置为1 end

c++随机数

rand()函数 rand()函数随机生成[0,RAND_MAX)范围内的整数,RAND_MAX至少为32767((2e+15)-1),不同的机器RAND_MAX不同。 用法:int rand() 头文件:#include<cstdlib> 要点:rand()产生的其实是伪随机数,它是由数学公式计算出来的,每次执行随机数都一样,要想不同,就用srand()函数设置一个随机数种子。srand()函数未定义时,默认为srand(1). srand()函数 srand函数为rand()函数设置一个随机数种子,srand函数里参数相同随机种子也相同,不同的参数可以使每次执行rand()函数得到不一样的随机数。 用法:void srand(unsigned int seed) 参数也可使用time(NULL)使随机种子随时间变化,但是要用到头文件#include<ctime> 以下程序每次运行得到不同的随机数: #include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand((unsigned int)time(NULL)); for(int i=0;i<10;i++) { cout<<rand()<<endl; } return 0; } 产生指定范围的随机数 通用公式:a+rand()%n,其中a为起始整数,n为范围大小。 例如:[a,b]:a+rand()%(b-a+1); [a,b):a+rand()%(b-a); (a,b]:a+1+rand()%(b-a); 要取得0~1之间的浮点数:rand()/(double)RAND_MAX;

蔡徐坤一条微博转发过亿 幕后推手被判刑五年

明星人物关注度高,发条微博几十上百万的转发评论也经常见,但是2018年,流量明星蔡徐坤的一条微博,居然有超过1亿的转发量。 按照当年的微博注册用户量,这意味着每三个用户就有一个转发了那条微博,显然荒谬至极。对此,《人民日报》官微也怒斥:“一亿转发量,你们也真敢刷!” 2019年6月,操纵刷量的幕后推手“星援”APP被查。近日,中国裁判文书网公布了对星援APP开发者蔡坤苗的判决书,其因犯提供侵入计算机信息系统程序罪,判处有期徒刑5年。 经查,被告人蔡坤苗,男,1995年5月30日出生于福建省泉州市,汉族,大学肄业,泉州市星援网络科技有限公司法定代表人,户籍地福建省泉州台商投资区,因涉嫌犯破坏计算机信息系统罪,于2019年3月8日被抓获羁押,同年4月11日被逮捕,现羁押于北京市丰台区看守所。 2018年1月至2019年3月间,蔡坤苗在未获得新浪微博授权的前提下,自行开发星援APP,有偿为他人提供不需要登录微博客户端即可转发微博、自动批量转发微博的功能,之后大量用户充值使用,并侵入微博服务器。 经鉴定,星援APP通过截取微博服务器中对应账号的相关数据,使用相同的网络数据格式向服务器提交数据,完成交互,从而在不登录微博客户端的情况下,可自动批量转发微博。 经统计,至案发时,星援APP已经使用19万多个控制端微博账号登录,绑定微博账号×××多万个,蔡坤苗获取充值额人民币6253752.86元。 法院最终判决,被告人蔡坤苗犯提供侵入计算机信息系统程序罪,判处有期徒刑5年,处罚金人民币10万元,继续追缴违法所得人民币6253752.86元予以没收,在案冻结的银行账户内资金人民币423559.98元及其产生的孳息并入违法所得执行。 本文来自百度, 若有侵权, 请联系删除 原文地址:https://baijiahao.baidu.com/s?id=1693839985890008597&wfr=spider&for=pc