Ostu方法又名最大类间差方法,通过统计整个图像的直方图特性来实现全局阈值T的自动选取,其算法步骤为:1)先计算图像的直方图,即将图像所有的像素点按照0~255共256个bin,统计落在每个bin的像素点数量2)归一化直方图,也即将每个bin中像素点数量除以总的像素点3)i表示分类的阈值,也即一个灰度级,从0开始迭代4)通过归一化的直方图,统计0~i灰度级的像素(假设像素值在此范围的像素叫做前景像素)所占整幅图像的比例w0,并统计前景像素的平均灰度u0;
统计i~255灰度级的像素(假设像素值在此范围的像素叫做背景像素)所占整幅图像的比例w1,并统计背景像素的平均灰度u1;
5)计算前景像素和背景像素的方差g=w0*w1*(u0-u1)(u0-u1)6)i++;
转到4),直到i为256时结束迭代7)将最大g相应的i值作为图像的全局阈值
2025/4/13 20:54:49 3KB OSTU 多阈值分割 MATLAB
1
作业1:(一)信号(1)用计算机产生两个白噪声信号u1(t)和u2(t),u1(t)服从均匀分布,u2(t)服从高斯分布。
(2)用计算机产生一个随机信号x(t)=a(t)+u(t),其中a(t)为确定性的正弦信号,u(t)为高斯分布的白噪声,u(t)的幅度大于a(t)(二)要求1. 分别计算并画出波形和自相关函数2. 对信号的自相关函数进行讨论与分析3. 用MATLAB工具
2025/2/28 17:45:40 403KB 自相关运算
1
1.把SEGGER_RTT.cSEGGER_RTT.hSEGGER_RTT_Conf.hSEGGER_RTT_printf.c4个文件,导入到keil项目中,记得工程中添加include引用路径.2.include"SEGGER_RTT.h"使用 SEGGER_RTT_printf(0,"SEGGERRTT%d%d%d\r\n",u,u1,key);函数输出字符到默认终端.使用SEGGER_RTT_TerminalOut(1,RTT_CTRL_TEXT_BRIGHT_RED"Counteroverflow!");指定终端输出3.显示用JLinkRTTViewer.exe或JLinkRTTClient.都是jlink自带的,如果没有说明jlink版本太低了.安装一下http://download.csdn.net/download/baidu_33184823/9310037
2024/12/5 6:41:24 17KB Jlink debug RTT 调试
1
STM32CUBE双串口空闲中断+DMA透传代码,拿到下载直接能用,U1:PA9PA10,U2:PA2PA3
2024/9/12 3:50:25 3.6MB STM32CUBE
1
使用MATLAB对一幅图像添加椒盐噪声或者高斯噪声。
不调用现成函数,只用到rand产生随机数。
代码非常精简,使用方便,适合新手参考。
核心代码如下:%***添加椒盐噪声***K1=0.2;%多少被污染K2=0.5;%胡椒噪声比例I1=rand(m,n)<K1;I2=rand(m,n)<K2;Image(I1&I2)=0;Image(I1&~I2)=255;%***添加高斯噪声:Box-Muller方法***AVG=0;%平均值STD=0.05;%标准差U1=rand(m,n);U2=rand(m,n);X=STD*sqrt(-2*log(U1)).*cos(2*pi*U2)+AVG;Image=double(Image)/255+X;Image=uint8(255*Image);
2024/7/28 22:18:07 1KB 椒盐噪声 高斯噪声 MATLAB 图像处理
1
以往的文件或书信可以通过亲笔签名来证明其真实性,而通过计算机网络传输的信息则可以通过数字签名技术来实现其真实性的验证。
下面就以DSA算法为例,介绍数字签名算法。
DSA算法在1991年被美国国家标准与技术局(NIST)采纳为联邦数字签名标准,NIST称之为数字签名标准(DSS)。
(1)DSA中的参数:全局公钥(p,q,g):p为512~1024bit的大素数,q是(p-1)的素因子,为160比特的素数,g=h(p-1)/qmodp,且1<h1用户私钥x:x为0<x<q内的随机数用户公钥y:y=gxmodp用户为待签消息选取的秘密数k,k是满足0<k<q的随机数或伪随机数。
(2)签名过程用户对消息M的签名为(r,s),其中r≡(gkmodp)modq,s≡[k-1(H(M)+xr)]modq,H(M)是由MD4、MD5或SHA求出的杂凑值。
(3)验证过程设接收方收到的消息为M,签名为(r,s)。
计算:w≡(s)-1modq,u1≡[H(M)w]modqu2≡rwmodq,v≡[(gu1yu2)modp]modq检查v=r′是否成立,若成立,则认为签名有效。
这是因为若(M′,r′,s′)=(M,r,s),则:
2024/1/31 14:58:34 3.62MB C++ DSA
1
openonload-201811-u1.tgz
2023/8/27 2:16:20 4.75MB openonload-2018
1
单片机数模转换程序将da#include//52系列单片机头文件#include#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^6;//申明U1锁存器的锁存端sbitwela=P2^7;//申明U2锁存器的锁存端sbitadwr=P3^6;//定义AD的WR端口sbitadrd=P3^7;//定义AD的RD端口sbitled=P2^5;sbitDAC0832_CS=P3^2;sbitDAC0832_WR=P3^6;sbitAD_CS=P0^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharweima[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}voiddisplay(ucharbai,ucharshi,ucharge)//显示子函数{dula=1;P0=table[bai]|0x80;//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x7e;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0x7d;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0x7b;wela=0;delayms(1);}/*voiddisplays(uchara,ucharb,ucharc)//显示子函数{dula=1;P0=table[a];//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x77;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[b];dula=0;P0=0xff;wela=1;P0=0x6f;wela=0;delayms(1);dula=1;P0=table[c];dula=0;P0=0xff;wela=1;P0=0x5f;wela=0;delayms(1);}*/voiddisplays(ucharshuzi,ucharweizhi,bitdp){dula=1;if(dp)P0=table[shuzi]|0x80;elseP0=table[shuzi];dula=0;wela=1;P0=weima[weizhi];wela=0;}voidmain()//主程序{uintad;ucharA1,A2,A3,adval;AD_CS=1;//置CSAD为0,选通ADCS以后不必再管ADCSDAC0832_CS=0;DAC0832_WR=0;while(1){wela=1;P0=0x7f;wela=0;adwr=1;_nop_();adwr=0;//启动AD转换_nop_();adwr=1;P1=0xff;//读取P1口之前先给其写全1adrd=1;//选通ADCS_nop_();adrd=0;//AD读使能_nop_();
2018/2/21 19:13:45 3KB 51数模转换
1
单片机数模转换程序将da#include//52系列单片机头文件#include#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^6;//申明U1锁存器的锁存端sbitwela=P2^7;//申明U2锁存器的锁存端sbitadwr=P3^6;//定义AD的WR端口sbitadrd=P3^7;//定义AD的RD端口sbitled=P2^5;sbitDAC0832_CS=P3^2;sbitDAC0832_WR=P3^6;sbitAD_CS=P0^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharweima[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒for(j=110;j>0;j--);}voiddisplay(ucharbai,ucharshi,ucharge)//显示子函数{dula=1;P0=table[bai]|0x80;//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x7e;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0x7d;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0x7b;wela=0;delayms(1);}/*voiddisplays(uchara,ucharb,ucharc)//显示子函数{dula=1;P0=table[a];//送段选数据dula=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器形成混乱P0=0x77;//送位选数据wela=0;delayms(1);//延时dula=1;P0=table[b];dula=0;P0=0xff;wela=1;P0=0x6f;wela=0;delayms(1);dula=1;P0=table[c];dula=0;P0=0xff;wela=1;P0=0x5f;wela=0;delayms(1);}*/voiddisplays(ucharshuzi,ucharweizhi,bitdp){dula=1;if(dp)P0=table[shuzi]|0x80;elseP0=table[shuzi];dula=0;wela=1;P0=weima[weizhi];wela=0;}voidmain()//主程序{uintad;ucharA1,A2,A3,adval;AD_CS=1;//置CSAD为0,选通ADCS以后不必再管ADCSDAC0832_CS=0;DAC0832_WR=0;while(1){wela=1;P0=0x7f;wela=0;adwr=1;_nop_();adwr=0;//启动AD转换_nop_();adwr=1;P1=0xff;//读取P1口之前先给其写全1adrd=1;//选通ADCS_nop_();adrd=0;//AD读使能_nop_();
2019/5/4 18:48:13 3KB 51数模转换
1
内含小牛U1整车线路原理,接线图,有颜色标注,可A4打印运用。
2019/11/19 18:15:45 404KB 小牛电动车 U1 线路 原理
1
共 12 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡