首页
📁归档
⏳时光机
🚩友链
📫留言
📧订阅本站
推荐
📕考研课程
🏜️ 免费壁纸
❤ 捐助本站
💰资助名单
🎵音乐实验
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
20,059 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
10,635 阅读
3
【高数】形心计算公式讲解大全
9,043 阅读
4
Vivado-FPGA Verilog烧写固化教程
7,899 阅读
5
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
7,808 阅读
🪶微语&随笔
励志美文
我的随笔
写作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
/
注册
21(共153篇)
找到
153
篇与
21
相关的结果
- 第 9 页
嵌入式与应用知识点学习&复习提纲
自己整理的复习提纲 目录 部分程序讲解 培养目标1提示联网和UI必须答,不答0分,少答扣分 培养目标2 培养目标3 培养目标4 培养目标5 培养目标6 培养目标7 LED会有变动,后面有时间出教程,希望能先理解下面程序这个是什么意思 培养目标8 部分程序讲解 培养目标1 1.嵌入式系统分三层:应用、内核、硬件层。ARM为硬件层、驱动内核层。 2.嵌入式系统与PC的区别 讲解:嵌入式系统一般指非 pc 系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于 pc 中 bios 的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 答案:下面3点缺一不可 隐藏内容,请前往内页查看详情 3.嵌入式系统的特点 1)联网:嵌入式设备支持网络连接,可实现物联。 2)UI:嵌入式设备更多的采用是自定义的简单UI。 提示联网和UI必须答,不答0分,少答扣分 3)包含专用调试电路 4)具有完整的系统测试和可靠性评估体系 培养目标2 4.gcc编译hello.c为hello 答: gcc hello.c -o hello或 gcc -o hello hello.c 5.Linux 删除文件夹命令和CD命令含义 rmdir 目录 或者“rm -rf /目录” cd命令:切换当前目录至其它目录。 知识点补充: 隐藏内容,请前往内页查看详情 6.【判断题】Vi有三种基本工作模式:写程序在文本输入模式。 (对) 知识点补充: 隐藏内容,请前往内页查看详情 培养目标3 7.int p[n]:数组;int *p[n]指针; 必考补充:数组指针和指针数组区分: 隐藏内容,请前往内页查看详情 培养目标4 8.文件IO中write返回正确值为:向内核文件fd中写的字节数 参考P84 培养目标5 9.程序分析题 (1)运行时间小于20秒有几个进程? (2)什么是僵尸进程?什么孤儿进程,20秒后会产生什么? #include "stdio.h" #include "stdlib.h" int main() { int i; int pid; pid = fork(); if(pid > 0) { while(1); } if(pid == 0) { for(i=0;i<20;i++) { printf("我爱刘航宇%d次了\n",i); sleep(1); } } return 0; }答: 隐藏内容,请前往内页查看详情 培养目标6 10.创建有名管道文件函数是: mkfifo pEQzCid.png图片 11.有名管道,管道文件名chat.txt,编写A.c与B.c单向聊天 (1)B发A收 (2)程序具备退出功能 答:本题不要求实现过程可以不写,只写程序,至于过程学习参考本站其它文章 管道程序: #include "stdio.h" int main() { int ret; ret = mkfifo("./chat.txt",0777); if(ret == -1) { printf("mkfifo error\n"); return -1; } return 0; }A端程序:(收方!!!) #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int fd; int i; char buf[32] = {0}; fd = open("./chat.txt",O_RDONLY,0777); if(fd == -1) { printf("open error\n"); return -1; } //start read while(1) { read(fd,buf,32); if(buf[0] == 'q') { break; } printf("buf = %s\n",buf); for(i = 0 ;i < 32; i++ ) { buf[i] = 0; } } close(fd); return 0; }B端程序(发方): 隐藏内容,请前往内页查看详情 培养目标7 12 socket函数,UDP通信,参数: int type赋值为 SOCK_DGRAM 13 SOC全称是 System on Chip称为芯片级系统或片上系统 14 判断:AHB总线下挂接都是高速模块,如LCD控制器、中断控制器等 (×) 15 判断ARM 公司不生产芯片 (√) 16 简答:CPU、SOC和嵌入式产品关系: 三个要点:1 CPU是一台计算机的运算核心和控制核心。(第一句必答,后面可以简写)CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。主要功能是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。2.SOC单片系统或片上系统是一个将电脑或其他电子系统集成到单一芯片的集成电路。(第一句必答,后面可以简写)单片系统可以处理数字信号、模拟信号、混合信号甚至更高频率的信号。单片系统常常应用在嵌入式系统中。单片系统的集成规模很大,一般达到几百万门到几千万门。SoC 可以基于 MCU 或 MPU,并将提供执行某些类型的应用程序所需的一切。隐藏内容,请前往内页查看详情 17.综合题:LED问题(本文推荐用电脑或平板观看,手机可能看不清) 预测题目:点亮GPF4的LED灯,实现其亮灭,将下面程序3个空区域补充完整。 (去年题目是点亮GPF4、5、6。看明白下面程序后可以同学自行尝试做一下,不过据说今年考点亮一个) 平台原理图: pEQzPJA.png图片 例图: 图片 控制与数据端口 pEQzFzt.png图片 程序:(可能与部分同学拍的略微不同,但是程序是一个意思,变量我图快方便写换了一部分,不影响,while循环改成for也是一个道理,这个东西很灵活 ::(勉强) ) //#include "global.h" #define GPFCON 0x56000050 #define GPFDAT 0x56000054 #define MPLLCON 0x4C000004 #define CLKDIVN 0x4C000014 void init_system_clock() { int *p; p = (int *)CLKDIVN; *p = 0x03; // FCLK:HCLK:PCLK=4:2:1, HDIVN=1,PDIVN=1 __asm__ { mrc p15, 0, r1, c1, c0, 0 orr r1, r1, #0xc0000000 mcr p15, 0, r1, c1, c0, 0 } p = (int *)MPLLCON; *p = (0x5c<<12)|(0x01<<4)|(0x02); } void mymain() { int *p; int i; init_system_clock(); //FCLK:HCLK:PCLK=200:100:50MHZ (1)------------ while(1) { (2)------------ for(i = 0 ;i < 10000; i ++); (3)------------ for(i = 0 ;i < 10000; i ++); } return ; }解答: 隐藏内容,请前往内页查看详情 培养目标8 18.rmmod功能:将驱动程序从liunx内核卸载;lsmod:查看内核中存在哪些模块 19.判断:驱动程序设备号分主设备号和次设备号 (√) 20.判断:驱动程序和应用程序一样有main函数 (×) 觉得本文对你有帮助,请点赞哦
嵌入式&系统
刘航宇
5年前
263
6,447
75
2021-06-06
【美句】" 请你摘星"
图片 " 决定人生的那一刻,绝不能欺骗自己。" " 每一个闪闪发光的人都在背后熬过了一个又一个不为人知的黑夜。" " 当你的才华还撑不起你的野心时,那你就应该静下心来学习。" " 糟糕的日子熬过去了,剩下的就是好运气。" " 我不想平庸一生,不想成为那种大街上一抓一大把的人。" " 心怀浪漫宇宙,也珍惜人间日常。" " 有时,正确的道路往往不是轻松好走的。" " 我走的很慢,但我从不后退。" " 即使徒劳,也要让这徒劳发生。" 图片 " 隐藏野心,悄悄发光。" " 偷偷厉害,万事尽可期待。"
励志美文
刘航宇
5年前
2
345
4
2021-06-02
matlab实现(7,3)线性分组码编码和BPSK调制
图片 1编写基于(7, 3)线性分组码编码和BPSK调制,信息字长L = 学号后5位数字,信噪比SNR = [0 0.学号后3位数字],在AWGN信道实现发、收仿真通信的Matlab代码; 2 绘制误比特率随信噪比变化的关系曲线(半对数)。 线性分组码和BPSK 程序完美版: 程序中的L与SNR需要修改为你的学号即可,不用建立脚本,直接复制命令窗口跑一下即可 提示:我们就是统计错误和误码率,不用管这个: . Single-error patterns loaded in decoding table. 8 rows remaining. 2-error patterns loaded. 1 rows remaining. 3-error patterns loaded. 0 rows remaining. clear all; close all; % specify parameters L = 64238;%学号,64238需要修改成你的后5位 SNR=[0:0.01:0.238]; %学号需要修改238为你学号后3位 G = [1 0 0 1 1 1 0;0 1 0 0 1 1 1;0 0 1 1 1 0 1];% code generator ebn0 = SNR; % db ebn0_1 = 10.^(ebn0*3.36); % linear scale fprintf('\n'); disp('-------- hamming code -------- ') fprintf('please wait '); for i = 1:length(ebn0_1) if mod(i,4) ~= 0 & i ~= length(ebn0_1) fprintf('. '); elseif mod(i,4) == 0 | i == length(ebn0_1) fprintf('. \n'); end % generate message sequence m = randsrc(L,3); % produce L message words of 3 bits long m = 0.5*(m+1); % convert to binary seq. % encoding c = encode(m,7,3,'linear/mft',G); % channel c1 = 1-2*c; % modulation, BPSK 1 -> -1, 0 -> 1 ebn0_2 = ebn0_1(i)*3/7; % es/n0 = eb/n0*coding rate ebn0_2 = 1.33*ebn0_2; %1.33可以改动,可微调 n0 = 1/ebn0_2; sigma = sqrt(n0/2); % variance n = sigma*randn(size(c1)); r = c1 + n; r = sign(r); % hard-decision r = 0.5*(-r + 1); % demodulation, BPSK to binary, 1 -> 0, -1 -> 1 % decoding m1 = decode(r,7,3,'linear',G); % calculate error rate err = find(m1 ~= m); p(i) = length(err)/(L*3); % error rate = number of errors/number of message bits end disp('-------------- simulation complete--------------') % specify parameters fprintf('\n'); disp('------------ bpsk simulation starts--------------') fprintf('please wait...'); for i = 1:length(ebn0_1) % transmit m = randsrc(L,1); % generate message sequence. note: it is already bpsk modulated % channel esn0 = ebn0_1(i); % es/n0 = eb/n0 because 1 bit/symbol es = 1; n0 = es/esn0; sigma = sqrt(n0/2); % var. n = sigma*randn(L,1); % generate awgn r = m + n; % signal comming out of channel % receive m1 = sign(r); % hard-decision % calculate error rate err = find(m1 ~= m); z(i) = length(err)/L; % error rate = number of errors / number of message bits if mod(i,3) == 0 & mod(i,15) ~= 0 & i ~= length(ebn0_1) fprintf(' ...'); elseif mod(i,15) == 0 | i == length(ebn0_1) fprintf(' ...\n'); end end disp('-------------- simulation complete--------------') p3 = 0.5*erfc(sqrt(ebn0_1)); semilogy(SNR,p,'+-',SNR,z,'--',SNR,p3,'k-'); %绘图 xlabel('信噪比(SNR)');ylabel('误码率BER');title('信噪比与误码率关系'); legend('Hamming BPSK Sim','BPSK Sim','BPSK Theory');实验现象: 图片 大作业与翻译word模板 不限速,高速下载: TIIE云盘-翻译word 下载地址:http://d0.ananas.chaoxing.com/download/61b4ebf1b6ae222d97832f7e13139fd9?at_=1622879357418&ak_=9bb313ad9b7bcbebdb76fbd797bdf4fd&ad_=fe8d1591b1f6bb18796226f291f0dd11&fn=%E4%BF%A1%E6%81%AF%E8%AE%BA%E7%BF%BB%E8%AF%91 提取码: TIIE云盘-大作业模板 下载地址:http://d0.ananas.chaoxing.com/download/e8c0456bc55692f108ac59c929ba7390?at_=1622879413856&ak_=366889da84ed6942814e677b2e374009&ad_=5c10e972165385fe02f71578d9fdc14b&fn=%E4%BF%A1%E6%81%AF%E8%AE%BA%E7%BB%BC%E5%90%88%E6%80%A7%E5%A4%A7%E4%BD%9C%E4%B8%9A 提取码:
通信&信息处理
刘航宇
5年前
8
1,413
7
2021-05-30
51单片机-汇编系列讲解-最强攻略
视频讲解 或者哔哩哔哩观看 https://www.bilibili.com/video/BV1fv411G7VU/ 例1 已知程序执行前有A=01H,SP=42H,(41H)=FFH,(42H)=FFH。下列程序执行后: POP DPH POP DPL MOV DPTR,#3000H RL A MOV B,A MOVC A,@A+DPTR PUSH ACC MOV A,B INC A MOVC A,@A+DPTR PUSH ACC RET ORG 3000H DB 10H,80H,30H,50H,30H,50H解答: POP DPH ; (42H)赋值给DPH,这个关系一直存在,知道程序结束。 SP= 41 H, POP DPL ;(41H)赋值给DPL,SP=40H MOV DPTR,#3000H ;DPTR=#3000H RL A ;A=02H ;16进制左移一位,先化为二进制过程更明显。 MOV B,A ;B=02H MOVC A,@A+DPTR ;查表得A=30H , 是从00H开始 查表的。 PUSH ACC ;将A 中的值赋值给,上一个空出位41H,(41H)=DPL 。 因为SP指针指向的栈 ,是有值的, 只有比他高的地址是空的。如指向(01H),那么(01H)中有值,(02H),(03H)….. 中没值。SP=41H,(41H)=#30H=DHL MOV A,B ;A=02H INC A ;A=03H MOVC A,@A+DPTR ;查表A=50H PUSH ACC ;将A 的值赋给再上一个空位,(42H)=50H=DPH 。 RET ;子程序结束!RET指令弹出断点位置即SP最近两字节数据SP=SP-2=40H,PC=5030(大端对齐) ORG 3000H DB 10H,80H,30H,50H,30H,50H例2 P1.7=ACC.0×(B.0+P2.1)+(P3.2)非 MOV C, B.0 ORL C, P2.1 ANL C, ACC.0 ORL C, /P3.2 MOV P1.7, C END例3 一台主机与三台从机通信 隐藏内容,请前往内页查看详情 例4 将片外数据存储器4004H、5005H、6006H单元的内容交换(16位交换) POP DPH POP DPL mov dptr,#4004h clr a movx a,@dptr push acc mov dptr,#5005h clr a movx a,@dptr mov b,a pop acc movx @dptr,a mov dptr,#4004h mov a,b movx @dptr,a mov dptr,#5005h clr a movx a,@dptr push acc mov dptr,#6006h clr a movx a,@dptr mov b,a pop acc movx @dptr,a mov dptr,#5005h mov a,b movx @dptr,a例5 51单片机DAC0832各种波形程序 程序: 隐藏内容,请前往内页查看详情 请勿标注电阻大小 图片 例6 如果考12MHZ单片机机器周期,切记不是1/12M,而是要先12分频,这个51单片机特点,频率是12M/12=1M,周期1/1M=1us
嵌入式&系统
刘航宇
5年前
47
3,782
14
2021-05-29
级数中含积分狄利克雷判别法
狄利克雷判别法(Dirichlet test / Dirichlet discriminance)是微积分中一条十分重要的判定法则,与阿贝尔判别法(Abel test)合称为A-D判别法。主要用于判定数项级数的收敛、函数项级数的一致收敛、反常积分的收敛以及反常含参积分的一致收敛等。 图片 图片 图片
我的随笔
刘航宇
5年前
0
2,172
1
2021-05-27
通信原理—第六章数字基带通信系统解答
通信原理—第六章数字基带通信系统解答 图片 图片 图片 图片 图片 图片 图片 图片 图片 图片 图片 提示:解答中纵坐标为H(w) 图片 图片 图片 图片 图片 图片 图片 1已知信息序列为1010000011000011,试确定相应的传号差分码、AMI码以及HDB3码。 提示可以不画波形,只要传号差分码、AMI码以及HDB3码,下图不用全画 图片 图片 图片 图片
通信&信息处理
刘航宇
5年前
1
650
9
2021-05-27
通信原理—樊昌信第七版思维导图
通信原理思维导图 本导图仅仅是最简提纲,请自行结合课本扩展知识点 请勿截图电子版,请务必认真手写! 思维导图图片 思维导图高清PDF下载 TIIE云盘—通信原理思维导图 下载地址:http://d0.ananas.chaoxing.com/download/d410f1b0c2967f6712f1fecc14ebb87d?at_=1622097687188&ak_=f1f6a18cdf3f13f1af57dd57fd6035c4&ad_=c62f9762eb479cb7ba2c9f707c66c854&fn=%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE 提取码:
通信&信息处理
刘航宇
5年前
0
4,085
5
2021-05-26
图像处理—矩阵卷积运算的具体过程
假设有一个卷积核h,就一般为3*3的矩阵: 图片 图片 图片
通信&信息处理
我的随笔
刘航宇
5年前
1
616
3
数字图像处理学习笔记
1.简述SUSAN角点检测算法的原理。对于如下图所示的大的尖角,设计一种估测其角度的方法 原理: SUSAN算法是一种直接利用灰度值进行角点检测的算法,它基于一个圆形模板,统计以每个像素为中心的模板邻域的灰度值与中心点灰度值相近点的个数。 估测办法: 1)先选取半径为R1圆形模板如下图1所示,将选取模板进行在图像的每个像素点上移动; 2)当模板核子位于图像中亮度一致的区域内时,SUSAN面积最大,其值为圆形模板的面积,随着模板核子离图像边缘越来越近,其面积越来越小。 3) 当模板中心靠近角点时,其面积值进一步减少,当模板中心落在角点上时,其面积达到局部最小值。 4) 根据C(r0,r)以及面积占比关系得出角度α1,然后分别选取R2、R3、R4模板重复以上过程,记录角度α2,α3,α4,α等于4个取平均 图片 2.简述利用一阶差分算子、二阶差分算子对图像边缘进行检测的依据;边缘检测中,为了减少噪声对边缘检测产生的影响,可采取那些措施? 检测依据: 边缘是图像上灰度变化最明显的地方,边缘检测利用此特点,对图像各像素点进行求微分或二阶微分来定位边缘像素点。由灰度变化特点,可将边缘类型分为阶梯状、脉冲状和屋顶状三种。对于阶梯状,图像边缘点对应一阶微分图像的峰值和二阶微分图像的零交叉处;对于脉冲状和屋顶状边缘,边缘点对应一阶导数的零交叉和二阶导数的峰值。如图2所示。其中边缘检测算子是利用图像边缘的突变性质来检测边缘的。主要分为两种类型,1)一阶导数为基础的边缘检测算子,通过计算图像的梯度值来检测图像边缘,如:差分边缘检测、Roberts 算子、Sobel 算子、Prewitt 算子;2)二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘, 如:Laplacian 算子、LOG 算子、Canny 算子。 图片 使用该权值矩阵(高斯核)对图像做“卷积”(协相关,对应位置相乘最后求和得到一点的像素值),得到新的图像矩阵。 3.在采用直方图匹配的方法进行图像匹配时,出现如下图所示的结果(原图为彩色)。试分析: 图中哪些匹配结果是正确的,哪些是错误的? 试设计出避免错误匹配的改进方法。 图片 4.图像的数据量与哪些因素有关?试阐述采样与量化所遵循的一般原则 答: (1)图像分辨率;采样率;采样值。 (2)采样原则:采样是把空域上或时域上连续的图像(模拟图像)转换成离散采样点(像素)集合(数字图像)的操作,这些值可以是均匀间隔也可以是。采样越细,像素越小,越能精细地表现图像。 量化原则: 量化是把像素的灰度(浓淡)变换成离散的整数值的操作。量化越细致,灰度级数(浓淡层次)表现越丰富。 5.设计一组3×3模板,使其可以用于检测二值图像中的各种角点。 图片 6.在图像比例缩放变换中, 如果放大倍数太大, 按照最近邻域法处理会出现马赛克效应。 该问题有无办法解决或改善?如果有,请给出方案。 答: 有,方案:比例缩放所产生的图像中的像素可能在原图像中找不到相应的像素点,需要进行插值处理。 (1)最邻近法,以最邻近像素插入缺口即可 (2)双线性插值法更好,求出周围4个像素点距离比,根据该比率,由4个领域的像素灰度值进行双线性插值。 7.试阐述图像处理学三个层次的基本内容及相互关系。 图片 8.试讨论用于图像平滑处理的滤波器与用于图像锐化处理的滤波器之间的区别与联系。 答:1.相同点:都能减弱或消除傅里叶空间的某些分量,而不影响或较少影响其他分量,从而达到增强某些频率分量的效果。 2.不同点:频率滤波器减弱或消除了傅里叶空间的高频分量,所以达到了增强某些低频分量、平滑图像中细节的效果。锐化滤波器减弱或消除傅里叶空间的低频分量,所以达到了增强了高频分量、锐化图像中细节效果。 3.联系:两者效果相反,互为补充,从原始图像中减去平滑滤波器的结果得到锐化滤波器的效果,而从原始图像中减去锐化滤波器的结果则可以得到平滑滤波器的效果。 9.根据下列要求作图: (1) 画出用1个半径为2的圆形结构元素膨胀1个8×8的正方形的示意图; (2) 画出用1个半径为2的圆形结构元素腐蚀1个8×8的正方形的示意图。 结构元素的参考点为圆形结构的中心点。 图片 10 对于下图所示的边界,计算其8方向链码及差分链码。 图片 有任何问题或者批评建议可以评论留言或者QQ与我交流
通信&信息处理
刘航宇
5年前
8
1,308
14
2021-05-22
边界链码、归一化链码与一阶差分链码
链码(又称为freeman码)是用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,将图像中像素的绝对位置转换成了相对位置,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。 常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。借用百度百科的一幅图: 图片 链码:11076765543322 归一化链码:把原链码看作由各方向数构成的自然数,将该码按一个方向循环,使其构成的自然数最小,此时形成归一化链码,也称规格化链码。归一化码=07676554332211 一阶差分链码:通过计算相邻两个元素方向变化(逆时针方向)的数字得到。就是前一个数字变化到后一个数字需要经过的步数,注意是逆时针方向,比如1->1经过0步,1->0经过7步,对照8链码图仔细琢磨一下就知道了。一阶差分链码=0777177077070 归一化的一阶差分链码:就是对一阶差分链码作归一化处理,即把差分链码链码看作由各方向数构成的自然数,将该码按一个方向循环,使其构成的自然数最小。归一化的一阶差分链码=0700777177077
通信&信息处理
刘航宇
5年前
1
1,524
3
2021-05-12
嵌入式第二次测试解答
具体操作流程参考上篇文章: 嵌入式实战—应用open调用内核open,应用close调用内核close通信程序 hello.c需要修改为: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/cdev.h> #include <linux/kdev_t.h> #include <linux/fs.h> //file_operations MODULE_LICENSE ("GPL"); int i = 10; struct file_operations ops; struct cdev mycdev; int major = 254; int minor = 5; dev_t dev; int j= 0; int k= 0; int open(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int close(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void myuart_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,5,"myuart"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,5,1,"myuart"); //automatic allocation dev if(ret==0) { printk(KERN_INFO "alloc : major= %d\n",MAJOR(dev)); } else { printk(KERN_INFO "alloc error\n"); return ; } } else { printk(KERN_INFO "dev can use\n"); } ops.owner=THIS_MODULE; ops.open=open; ops.release=close; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,5); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; myuart_init(); //init printk (KERN_INFO "driver init,i = %d\n",i); return 0; } static void __exit hello_exit (void) { i ++; printk (KERN_INFO "driver exit,i = %d\n",i); unregister_chrdev_region(dev,5); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit);app.c需要修改为 #include "stdio.h" #include "fcntl.h" #include "unistd.h" #include "stdlib.h" int main() { int fd; int q = 0; while(1) { fd = open("./myuart",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (3); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (3); } return 0; }直接在此输入下面这个命令,才能./app mknod ./myuart c 254 5
嵌入式&系统
# 嵌入式
刘航宇
5年前
3
421
5
2021-05-11
matlab实现灰度图像边缘提取
灰度图像边缘提取 实验一:编程实现灰度图像空间域边缘提取,至少包括: 梯度算子、Roberts算子、Sobel算子、拉普拉斯算子及LOG算子,并比较不同算法提取边缘的效果及影响因素 代码: f=rgb2gray(imread('D:\图片\image\liuhangyu.jpg')); %更换你的图片地址 T=20;%阈值 [m,n]=size(f); %------梯度法------- f_g=zeros(m,n); for i=2:m-1 for j=2:n-1 f_g(i,j)=abs(f(i+1,j)-f(i,j))+abs(f(i,j+1)-f(i,j)); if f_g(i,j)<T f_g(i,j)=0; else f_g(i,j)=255; end end end figure(1); subplot(2,4,1);imshow(uint8(f_g));title('梯度法'); %------roberts算子------- f_r=zeros(m,n); for i=2:m-1 for j=2:n-1 f_r(i,j)=abs(f(i+1,j+1)-f(i,j))+abs(f(i,j+1)-f(i+1,j)); if f_r(i,j)<T f_r(i,j)=0; else f_r(i,j)=255; end end end %f_r=imbinarize(imfilter(f,r),T); subplot(2,4,2);imshow(uint8(f_r));title('Roberts算子'); %------prewitt算子------- f_p=zeros(m,n); for i=2:m-1 for j=2:n-1 f_p(i,j)=abs(f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-f(i-1,j)-f(i-1,j+1)); if f_p(i,j)<15 f_p(i,j)=0; else f_p(i,j)=255; end end end subplot(2,4,3);imshow(uint8(f_p));title('Prewitt算子'); %------sobel算子------- f_s=zeros(m,n); for i=2:m-1 for j=2:n-1 f_s(i,j)=abs(f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+2*f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)); if f_s(i,j)<T f_s(i,j)=0; else f_s(i,j)=255; end end end subplot(2,4,4);imshow(uint8(f_s));title('Sobel算子'); %------krisch算子------- k(:,:,1)=[-3,-3,-3; -3,0,5; -3,5,5]; k(:,:,2)=[-3,-3,5; -3,0,5; -3,-3,5]; k(:,:,3)=[-3,5,5; -3,0,5; -3,-3,-3]; k(:,:,4)=[-3,-3,-3; -3,0,-3; 5,5,5]; k(:,:,5)=[5,5,5; -3,0,-3; -3,-3,-3]; k(:,:,6)=[-3,-3,-3; 5,0,-3; 5,5,-3]; k(:,:,7)=[5,-3,-3; 5,0,-3; 5,-3,-3]; k(:,:,8)=[5,5,-3; 5,0,-3; -3,-3,-3]; kk=zeros(size(f)); I=double(f); for i=1:8 f_k(:,:,i)=conv2(I,k(:,:,i),'same'); kk=max(kk,f_k(:,:,i)); end f_kk=imbinarize(kk,600); subplot(2,4,5);imshow(f_kk);title('Krisch算子'); %------LoG算子------- log1=[0 0 -1 0 0; 0 -1 -2 -1 0; -1 -2 16 -2 -1; 0 -1 -2 -1 0; 0 0 -1 0 0]; f_l=conv2(f,log1,'same'); f_ll=imbinarize(abs(f_l),300); subplot(2,4,6);imshow(f_ll);title('LoG算子'); %------拉普拉斯算子------- I=f; I=im2double(I); [M,N]=size(I); B=zeros(size(I)); for x=2:M-1 for y=2:N-1 B(x,y)=I(x+1,y+1)+I(x-1,y-1)+I(x-1,y+1)+I(x+1,y-1)+I(x+1,y)+I(x-1,y)+I(x,y+1)+I(x,y-1)-8*I(x,y); end end I=im2uint8(I); B=im2uint8(B); subplot(2,4,7);imshow(I);title('原图'); subplot(2,4,8);imshow(B);title('拉普拉斯算子后的图'); 现象: 图片 分析: 通过比较提取边缘效果,可以发现Roberts算子的边缘定位较准确,但是抗噪声能力较弱。Sobel算子有平滑差分作用,它利用像素临近区域的梯度值来计算一个像素的梯度,然后进行取舍。拉普拉斯高斯算子通过对图像进行微分操作实现边缘检测,所以对离散点和噪声较敏感,可以强化突变,并且保留部分物体内部。 实验二:编程实现灰度图像阈值分割,至少包括: 固定阈值分割、最大类间方差(Otsu)方法、最佳熵自动门限方法,并比较不同算法分割的效果及影响因素。 代码 由于算法复杂,此程序需要执行很长时间如果遇到没反应请等待一会即可 tip:担心报错请用下面图片处理 TIIE-待处理图片 下载地址:http://d0.ananas.chaoxing.com/download/0b171605f8eeb3d6d0d027bdaa1e3876?at_=1622619001225&ak_=fd76d39a9ef7c3e45e71e4d2dc839206&ad_=e4deb3a7b827763c7e0dbb9126820cef&fn=2 提取码: I=imread('D:\图片\image\liuhangyu.jpg'); imshow(I); %输出直方图 figure;imhist(I); %人工选定阈值进行分割,选择阈值为120 [width,height]=size(I); T1=120; for i=1:width for j=1:height if(I(i,j)<T1) BW1(i,j)=0; else BW1(i,j)=1; end end end figure;imshow(BW1),title('人工阈值进行分割'); %自动选择阈值 T2=graythresh(I); BW2=im2bw(I,T2);%Otus阈值进行分割 figure;imshow(BW2),title('Otus阈值进行分割'); count = imhist(I); %图像的直方图 [m,n] = size(I); N = m*n; L = 256; count = count/N; %每一个像素的分布概率 for i = 1:L if count(i) ~= 0 st = i-1; break; end end for i = L:-1:1 if count(i) ~= 0 nd = i-1; break; end end f = count(st+1:nd+1); %f是每个灰度出现的概率 size(f); E=[]; for Th = st:nd+1 Hbt = 0; Hwt = 0; Pth = sum(count(1:Th+1)); for i = 0:Th %计算图像背景的熵 Hbt = Hbt-count(i+1)/Pth*log(count(i+1)/Pth+0.01); end for i = Th+1:L-1; %计算图像目标的熵 Hwt = Hwt-count(i+1)/(1-Pth)*log(count(i+1)/(1-Pth)+0.01); end E(Th-st+1) = Hbt+Hwt; end position = find(E==(max(E))); Ht = st+position-100; for i = 1:m for j = 1:n if a(i,j)>Ht a(i,j) = 0; %对图像分割 else a(i,j) = 255; end end end figure,imshow(I),title('最佳熵自动门限方法'); 报错,换上面提示的图片处理 实验现象应有5张图,不要出现数组超出
通信&信息处理
刘航宇
5年前
3
835
3
上一页
1
...
8
9
10
...
13
下一页