首页
📁归档
⏳时光机
🚩友链
📫留言
📧订阅本站
推荐
📕考研课程
🏜️ 免费壁纸
❤ 捐助本站
💰资助名单
🎵音乐实验
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
20,043 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
10,606 阅读
3
【高数】形心计算公式讲解大全
9,037 阅读
4
Vivado-FPGA Verilog烧写固化教程
7,869 阅读
5
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
7,805 阅读
🪶微语&随笔
励志美文
我的随笔
写作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
/
注册
📡电子&通信(共117篇)
找到
117
篇与
📡电子&通信
相关的结果
- 第 8 页
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
615
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,303
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,522
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
420
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
832
3
2021-05-09
嵌入式实战—应用open调用内核open,应用close调用内核close通信程序
应用open调用内核open,应用close调用内核close通信程序 1.在TM命令窗口中,不要进入sudo -s,先创建一个普通目录 mkdir liu 2.下载已经配置好的Makefile文件(在虚拟机liunx系统浏览器输入tiie.cn网址,找到本文,下载Makefile文件),将这个文件移动到创建的liu文件夹内,如果下载后名称不是Makefile,重命名下载的文件为Makefile SICARM云盘-Makefile文件 下载地址:http://pan-yz.chaoxing.com/download/downloadfile?fleid=609396534180687872&puid=84519098 提取码: ::(你懂的) ::(你懂的) 不是我吹,我的云盘下载速度吊打某度云,免费不限速 3.进入root模式 ,创建驱动程序: hello.c程序, vim hello.c 注意不要改名字,否则可能会报错,这个makefile配置的是hello.c不能改名字的!!!非高手怕报错,将下面所有东西,全部放在liu文件夹内 提示:下面程序直接在liunx浏览器里面复制即可,不用敲,很多同学容易敲错,报错找不到问题所在。 程序中liuhangyu可改成你的名字 #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 = 100; int minor = 1; dev_t dev; int j= 0; int k= 0; int myopen(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int myclose(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void liuhangyu_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,1,"liuhangyu"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,1,1,"liuhangyu"); //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=myopen; ops.release=myclose; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,1); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; liuhangyu_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,1); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit); 4.保存下一步分别输入 make 回车 insmod hello.ko回车 5.完成后打开第二TM窗口,在同目录下,创建同理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("./liuhangyu",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (8); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (8); } return 0; }6.输入 mknod ./liuhangyu c 100 1 7.输入 gcc -o app app.c 8.输入./app观察2个窗口现象,每隔几秒给第一个窗口输入dmesg可以看到通信是成功的 图片 图片 以上则完成全部测试,下面讲解退出 9.输入键盘敲Ctrl+C强制退出app程序 10 分别输入rmmod hello.ko回车,make clean回车 好下课!
嵌入式&系统
刘航宇
5年前
10
847
11
2021-05-01
matlab实现灰度图像空间域滤波
实验目的:掌握采用图像灰度图像空间域平滑、去噪的一般方法方法,并编程实现。 实验内容:编程实现灰度图像空间域滤波:至少包括 3×3、5×5窗口的均值滤波与中值滤波,并比较不同方案增强后的效果及影响因素。 实验平台:Matlab 实验代码: %matlab实现灰度图像空间域滤波,自定义窗口的均值、中值、高斯滤波,189064238刘航宇 try %步骤一:彩色、灰度变换 h=imread('D:\图片\image\liu.jpg'); %读入彩色图片 subplot(2,2,1),imshow(h);title('原图'); %显示原图像 c=rgb2gray(h); %把彩色图片转化成灰度图片,256级 subplot(2,2,2),imshow(c),title('原始灰度图象'); %显示原始图象 g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声 subplot(2,2,3),imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象 %步骤二:用系统预定义滤波器进行均值滤波 n=input('请输入均值滤波器模板大小\n'); A=fspecial('average',n); %生成系统预定义的3X3滤波器 Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化 figure,imshow(Y),title('用系统函数进行均值滤波后的结果'); %显示滤波后的图象 %步骤三:用Matlab系统函数进行中值滤波 n2=input('请输入中值滤波的模板的大小\n'); Y1=medfilt2(g,[n2 n2]); %调用系统函数进行中值滤波,n2为模板大小 figure,imshow(Y1),title('用Matlab系统函数进行中值滤波之后的结果'); %显示滤波后的图象 %步骤四:用matlab系统函数进行高斯滤波 n3=input('请输入高斯滤波器的均值\n'); k=input('请输入高斯滤波器的方差\n'); A2=fspecial('gaussian',k,n3); %生成高斯序列 Y2=filter2(A2,g)/255; %用生成的高斯序列进行滤波 figure,imshow(Y2),title('用Matlab函数进行高斯滤波之后的结果'); %显示滤波后的图象 catch %捕获异常 disp(lasterr); %如果程序有异常,输出 endps:方差填1,2,3,4任意一个即可 步骤及其实验现象: 图片 然后输入模板大小 图片 然后产生三个图窗 图片 图片 图片 然后输入 clc;clear 重新输入本代码,完成5*5模板,在此不再赘述。 结果分析: 请自行上网查询均值、中值、高斯滤波区别、学习。
通信&信息处理
刘航宇
5年前
0
591
5
2021-04-24
基于DSP实现FIR滤波器实验解答
主频80MHZ,晶振20MHZ,定时125us,4阶滤波器,0.1,0.2,-0.1,-0.2,端口4进8出实现: asm程序 .title "FIR.asm" .mmregs .def _c_int00 STACK .usect "stk",10H .sect "vectors" x .usect "x",4 h .usect "h",4 .bss y,1 PA4 .set 4 PA8 .set 8 .data table .word 1*32768/10 .word 2*32768/10 .word -1*32768/10 .word -2*32768/10 .text _c_int00: LD #0006h,DP STM #STACK+10H,SP SSBX INTM RSBX SXM STM #0825H,PMST STM #0669H,TCR STM #3007H,CLKMD STM #999,PRD STM #008H,IMR STM #0FFFH,IFR SSBX FRCT STM #h,AR2 RPT #3 MVPD table,*AR2+ STM #y,AR5 STM #x+3,AR1 STM #h+3,AR2 STM #3,AR0 STM #x,AR4 FIR: PORTR PA4,*AR3 LD *AR1-,T MPY *AR2-,A ;4 LTD *AR1- MAC *AR2-,A ;3 LTD *AR1- MAC *AR2-,A ;2 LTD *AR1+0 MAC *AR2+0,A ;1 STH A,*AR5 PORTW *AR5,PA8 RETE loop: B loop B _c_int00 nop nop NMT rete nop nop nop SINT17 .space 4*14*16 TIN0: rsbx intm rete NOP NOP .space 4*18*16 TINT: B FIR nop nop .endcmd文件 MEMORY {PAGE 0: VECS: origin=0800H,length=0500H PROG: origin=1600H,length=0500H DATA: origin=2400H,length=0500H PAGE 1: BSS: origin=0300H,length=0200H XSPACE: origin=0500H,length=0010H HSPACE: origin=0510H,length=0010H STACK: origin=0600H,length=0500H } SECTIONS { .data :>DATA PAGE 0 .text :>PROG PAGE 0 vector :>VECS PAGE 0 .bss :>BSS PAGE 1 x :>XSPACE PAGE 1 h :>HSPACE PAGE 1 .stk :>STACK PAGE 1 }实验现象: 图片 波形: 图片
通信&信息处理
刘航宇
5年前
1
701
2
2021-04-10
进程间有名管道通信,并可靠退出
使用管道通信实现两个进程的单机双向通信,并保证可靠退出。免get函数,利用kill结束所有进程办法,小刘原创: 管道程序: 1.随意命名比如 vim g.c复制下面程序,在Linux系统浏览器可以输入本站网址sciarm.com,可以直接复制,不用敲代码。 2.然后 gcc g.c 3../a.out #include "stdio.h" int main() { int ret; ret = mkfifo("./first",0777); if(ret == -1) { printf("create first error\n"); return -1; } ret = mkfifo("./second",0777); if(ret == -1) { printf("create second error\n"); return -2; } return 0; }A端程序 1.同理创建 vim A.c 复制下面程序 2.gcc A.c -o A 3.然后 ./A #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_WRONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_RDONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { read(fd,buf,32) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from B %s\n",buf); for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }B端程序 打开另一个TM命令窗口,也要root模式下 1.同理创建 vim B.c 复制下面程序 2.gcc B.c -o B 3.然后 ./B #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_RDONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { read(fd,buf,32); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from A %s\n",buf); for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_WRONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }打开第三个窗口进入超管模式输入: ps -axj 可以看到4个进程 图片 A端:随便输入一些字符,B就能接收到,输入q,两者4个进程可以全面杀掉 图片 B端: 图片 再次输入: ps -axj 全部杀掉进程图: 图片
嵌入式&系统
# 嵌入式
刘航宇
5年前
3
677
12
2021-04-01
基于点处理的图像增强matlb实现线性变换和直方图均衡
引言 图像增强是图像处理中的基本内容之一,在图像处理中占有非常重要的地位。图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。 增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法主要分为两类: 空间域增强法和频域增强法。“空间域”一词是指图像平面本身,这类方法是以对图像像素直接处理为基础的;“频率域”处理技术是以修改图像的傅氏变换为基础的。 增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。 基于点处理的图像增强方法有:灰度线性变换、灰度非线性变换、灰度分段线性变换和直方图均衡化,本文主要讨论灰度分段线性变换和直方图均衡化对图像的增强,并用MATLAB进行实验验证。 图像增强的研究意义 图像增强是数字图像处理的最基本的方法之一,它是为了改善视觉效果或便于人或机器对图像的分析理解,根据图像的特点或存在的问题,以及应用目的所采取的改善图像质量的方法或加强图像的某些特征的措施。图像在成像、采集、运输、复制等过程中不可避免地会造成某些降质。如在成像过程中由于光学系统会导致图像失真,不同的光照条件会使图像的曝光度差异很大,运动状态下成像会使图像模糊;而在传输过程中,各种噪声和干扰将污染图像。因此,通常需要对降质的图像进行预处理,以满足后期处理及分析的需要。图像复原是改善图像的一类方法,这类方法会尽可能还原图像的本来面目,追求提高图像的保真度。而图像增强则是一类追求图像可懂度的方法,通过处理有选择地突出某些感兴趣的信息,便于人或机器分析这些信息,抑制一些无用的信息,以提高图像的使用价值。 图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。 图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。 实验目的 1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2、掌握灰度分段线性变换的图像增强方法。 3、学会用直方图均衡化对图像进行增强。 实验内容 一、灰度分段线性变换 1、理论基础: 在某些情况下,为了将图像灰度级整个范围(AB) 或其中某一段扩展或压缩到另一灰度范围(z1,zk) 质内,称灰度的线性变换。 图片 图片 分段线性变换和灰度的线性变换有点类似,都用到了灰度的线性变换。但不同之处在于分段线性变换不是完全的线性变换,而是分段进行线性变换。将图像灰度区间分成两段乃至多段,分别作线性变换称之为分段线性变换,如图,分段线性变换的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。图中的(0,a),(a,b),(b,255)等变换区间边界能通过键盘随时做交换式输入,因此,分段线性变换是非常灵活的。它的灰度变换函数如图所示,函数表达式如下: 图片 式中,(a,c)和(b,d)是图中两个转折点坐标。 该变换函数的运算结果是将原图在a和b之间的灰度拉伸到c和d之间。通过选择的拉伸某段灰度区间,能够更加灵活地控制图像灰度直方图的分布,以改善输出图像量。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像质量;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。 2、程序设计: clc; clear all; %刘航宇 X1=imread('图片路径'); subplot(2,2,1),imshow(X1);title('原图'); f0=0;g0=0;%折线点赋值 f1=20;g1=10; %参数自己改动,不要完全复制我的 f2=130;g2=180; f3=255;g3=255; subplot(2,2,2),plot([f0 f1 f2 f3],[g0 g1 g2 g3]); axis tight,xlabel('f'),ylabel('g'),title('灰度变换曲线'); r1=(g1-g0)/(f1-f0);%第一段折线的斜率 b1=g0-r1*f0;%计算截距1 r2=(g2-g1)/(f2-f1); b2=g1-r2*f1; r3=(g3-g2)/(f3-f2); b3=g2-r3*f2; [m,n]=size(X1); for i=1:m for j=1:n f=X1(i,j); if(f<f1) g(i,j)=r1*f+b1; elseif(f>=f1)&(f<=f2) g(i,j)=r1*f+b1; else(f>=f2)&(f<=f3) g(i,j)=r3*f+b3; end end end subplot(2,2,3),imshow(g);title('灰度变换后');3、运行结果: 图片 二、直方图均衡化 1、理论基础: (1)直方图的定义 在图像处理中提到的直方图是指灰度直方图。它定义为统计图像中具有某种灰度的像素数目(或频率=像素数目/图像总的像素个数)的函数。灰度直方图概括了图像中各灰度级的含量,提供了原图的灰度值分布情况[12],也可以说给出了1幅图所有灰度值的整体描述。 什么是灰度直方图呢?灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率[8]。 设变量r代表图像中像素灰度级。在图像中,像素的灰度级可作归一化处理,这样,r的值将限定在下述范围之内: 0 ≤ r ≤ 1 在灰度级中,r=0代表黑,r=1代表白。对于一幅给定的图像来说,每一个像素取得[0,1]区间内的灰度级是随即的,也就是说r是一个随即变量。假定对每一瞬间它们是连续的随即变量,那么,就可以用概率密度函数pr(r)来表示原始图像的灰度分布。如果用直角坐标系的横轴代表灰度级r,用纵轴代表灰度级的概率密度函数pr(r),这样就可以针对一幅图像在这个坐标系中作一条曲线来。这条曲线在概率论中就是分布密度曲线(见图2.1) 图片 从图像灰度级的分布可以看出一幅图像的灰度分布特性。例如上图中的两个灰度密度分布函数中可以看出: (a)的大多数像素灰度值取在较暗的区域,所以这幅图像较暗,一般在摄影过程中暴光过强就会造成这种后果;而(b)图像的像素灰度值集中在亮区,因此,图像(b)的特性将偏亮,一般在摄影中暴光太脆弱将导致这种结果。当然,从两幅图像的分布来看图像的质量均不理想。 为了有利于数字图像处理,必须引入离散形式。在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立: 图片 (2)灰度直方图 面积为A的连续图像f(x,y)经数字化后,成为M行N列的数字图象f(m,n)。一般而言,在数字图像f(m,n)中取不同灰度值的像素的数目是不同的。直方图是用于表达图像灰度分布情况的统计图表[4]。其横坐标是灰度值r,纵坐标是出现这个灰度值的概率密度p(r)(对连续图像f(x,y)而言),或者是出现这个灰度值的概率值p(ri)(对数字图像f(m,n)而言),参见图2.3。 图片 图片 (3)直方图均衡化 直方图均衡化是图象增强中点运算的一种最常用的直方图修正法[10]。其实质是减少图像的灰度等级以换取对比度的扩大。它把给定图像的直方图分布改造成均匀直方图分布,其本质是扩大了量化间隔,减少量化级别。因此,会出现这样的效果,原来灰度不同的象素经处理后可能变为相同,形成了一片相同灰度的区域;各区域之间有明显的边界,出现伪轮廓,图像的对比度增加。但是由于在均衡化过程中,原直方图上频数较少的灰度级被并入少数几个或一个灰度级,对应的图像部分将得不到增强。直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布[5]。 对于图像的灰度变换,我们这里介绍一种稍微复杂一点的方法,既直方图均衡化。直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。若像素点的原灰度为R,变换后的灰度为S,需要注意的是R、S是归一化后的灰度值,其灰度变换函数T()为: 图片 2.统计原始图像各灰度级的像素数目nk 3.计算原始图像直方图各灰度级的频率数 4.计算原始图像的累计直方图 5.取整计算:Sk=int[(N-1)tk+k/N] 6.确定映像关系:Sk-->tk 7统计新直方图各个灰度级的像素Nk 8.计算新的直方图:pt(tk)=nk/N 2、程序设计: clear all %预处理,彩图灰度化 PS=imread('图片位置');%读入彩色图像文件 imshow(PS) %显示出来 title('输入的彩色图像') %刘航宇 imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存 PS=rgb2gray(PS); %灰度化后的数据存入数组 %二、绘制直方图 [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255 GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置 end figure,bar(0:255,GP,'g') %绘制直方图 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三、直方图均衡化 S1=zeros(1,256); for i=1:256 for j=1:i S1(i)=GP(j)+S1(i); %算sk end end S2=round((S1*256)+0.5); %将Sk归到相近级的灰度 for i=1:256 GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率 end figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图 title('均衡化后的直方图') xlabel('灰度值') ylabel('出现概率') %四、图像均衡化 PA=PS; for i=0:255 PA(find(PS==i))=S2(i+1); %各个像素归一化赋给这个像素 end figure,imshow(PA) %显示均衡化后的图像 title('均衡化后图像') imwrite(PA,'PicEqual.bmp'); %图片格式自己改改,中文描述改改,不要光复制我的程序 3、运行结果: 原图: 图片 图片 图片 图片 4、结果分析: 直方图均衡化是图像增强技术的基本方法,本文分析了这种处理方法的基本理论,并用Matlab 进行实验,结果表明,直方图均衡化在一定程度上改善了图像的对比度差和灰度动态范围,增强了图像的可读性,提高了地物的可分性,有利于进行遥感图像的目视解译。 该算法简单,是一种行之有效的图像增强算法。
通信&信息处理
刘航宇
5年前
1
1,047
6
2021-03-25
图像增强级matlab实现中值滤波
1.何谓图像平滑?试述均值滤波的基本原理。 2.何谓中值滤波?有何特点? 答: 1.为抑制噪声、改善图像质量所进行的处理称为图像平滑或去噪。 均值滤波的基本原理:用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m∑f(x,y) m为该模板中包含当前像素在内的像素总个数。 2.中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心像素的灰度值的滤波方法,是一种非线性的平滑法。 特性: (1)对离散阶跃信号不产生影响,连续个数小于窗口长度一半的离散脉冲将被平滑,三角函数的顶部平坦化; (2)令C为常数,则: Med{CFjk}=CMed{Fjk} Med{C+Fjk}=C+Med{Fjk} Med{Fjk+fjk}≠Med{Fjk}+Med{fjk} (3)中值滤波后,信号频谱基本不变 图片 答:1.中值滤波是对一个滑动窗口的诸像素灰度值排序,用中间值代替窗口中心像素的原来灰度值,它是一种非线性的图像平滑法。中值滤波后的结果为(忽略边界): 图片 2.局部平滑法(邻域平均法 或 移动平均法)是用邻域各像素的灰度平均值代替该像素原来的灰度值,实现图像的平滑。 图片 比较:中值滤波法和邻域平均法均能有效削弱椒盐噪声,但中值滤波法比邻域平均法更有效,且滤波后图像中的轮廓比较清晰。 3.Laplace算子为何能增强图像边缘? 4.什么是 伪彩色增强?常用的伪彩色增强有哪些方法? 答: 3.(1)由于灰度均匀的区域或斜坡中间▽f(x,y)为0,Laplacian增强算子不起作用; (2)在斜坡底或低灰度侧形成“下冲”,而在斜坡顶或高灰度侧形成“上冲”。Laplacian 增强算子具有突出边缘的特点 4.伪彩色增强对不同灰度级赋予不同的颜色,从而将灰度图像变为彩色图像。 方法:灰度分层法、灰度变换法、频域滤波法 图像锐化处理有几种方法? 答:微分法、非锐化滤波、高频增强滤波 求图像梯度例题 设1 幅7×7大小的二值图像中心处有1 个值为0 的3×3大小的正方形区域,其余区域的值为1,如题下图所示。请使用Sobel 算子来计算这幅图的梯度,并画出梯度幅度图(需给出梯度幅度图中所有像素的值) 图片 图片 图片 图片 matlab中值滤波代码 I=[ 1 7 1 8 1 7 1 1 1 1 1 5 1 1 1 1 1 1 5 5 5 1 1 7 1 1 5 5 5 1 8 1 8 1 1 5 1 1 1 1 8 1 1 5 1 1 8 1 1 1 1 5 1 1 1 1 1 7 1 8 1 7 1 1 ]; [M N]=size(I); I1=zeros(M,N); for i=2:M-1 for j=2:N-1 temp=I(i-1:i+1,j-1:j+1); temp=sort(temp); temp=sort(temp'); I1(i,j)=temp(2,2); end end imshow(I,[]); figure,imshow(I1,[]);
通信&信息处理
刘航宇
5年前
0
608
2
上一页
1
...
7
8
9
10
下一页