🌍首页
📁归档
⏳时光机
🚩友链
📫留言
📧订阅
🌟推荐
📕考研课程
🏜️ 免费壁纸
❤ 捐助本站
💰资助名单
🎵音乐实验
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
20,260 阅读
2
论文写作中如何把word/wps里面所有数字和字母替换为新罗马字体
10,787 阅读
3
【高数】形心计算公式讲解大全
9,134 阅读
4
Vivado-FPGA Verilog烧写固化教程
8,201 阅读
5
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
7,919 阅读
🪶微语&随笔
励志美文
我的随笔
工作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
/
注册
56(共77篇)
找到
77
篇与
56
相关的结果
- 第 7 页
2021-04-01
基于点处理的图像增强matlb实现线性变换和直方图均衡
摘要本文探讨了基于点处理的图像增强方法,包括灰度分段线性变换和直方图均衡化,并使用MATLAB进行实验验证。这些方法旨在改善图像对比度和可读性,提高图像质量。关键词:图像增强, 灰度变换, 直方图均衡化, MATLAB, 图像处理引言 图像增强是图像处理中的基本内容之一,在图像处理中占有非常重要的地位。图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。 增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法主要分为两类: 空间域增强法和频域增强法。“空间域”一词是指图像平面本身,这类方法是以对图像像素直接处理为基础的;“频率域”处理技术是以修改图像的傅氏变换为基础的。 增强处理可将其灰度范围拉伸到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,070
6
2021-03-18
马尔科夫链讲解(Markov)
摘要马尔可夫链是一种具有马尔科夫性质的离散事件随机过程,通过状态转移矩阵计算转移概率。其核心是状态转移矩阵,可用于预测系统状态变化。满足细致平稳条件的马尔可夫链具有平稳分布。关键词:马尔可夫链, PageRank, 状态转移矩阵, 马尔科夫模型, 细致平衡条件说到马尔可夫链,在机器学习界真是无人不知,无人不晓。谷歌用于确定搜索结果顺序的算法,称为PageRank,就是一种马尔可夫链。在卷积网络出现之前,HMM马尔可夫模型也是语音处理的常用方法。到底什么才是马尔可夫链,之前看了几个介绍特别生动,这里总结一下: 马尔可夫链 马尔科夫链是指数学中具有马尔科夫性质的离散事件随机过程。在其每一步中,系统根据概率分布可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。 下图中有两种状态:A和B。如果我们在A,接下来可以过渡到B或留在A。如果我们在B,可以过渡到A或者留在B。在这张图中,从任意状态到任意状态的转移概率是0.5。 默认图片 真正的建模工作者不会总是就画一张马尔科夫链图。 相反,他们会使用“转移矩阵”来计算转移概率。状态空间中的每个状态都会出现在表格中的一列或者一行中。矩阵中的每个单元格都告诉你从行状态转换到列状态的概率。因此,在矩阵中,单元格做的工作和图中的箭头所示是一样。在状态转移矩阵中,行和列都是可能的所有状态,对应位置就是已知行状态,转移到列状态的概率。 默认图片 如果状态空间添加了一个状态,我们将添加一行和一列,向每个现有的列和行添加一个单元格。 这意味着当我们向马尔可夫链添加状态时,单元格的数量会呈二次方增长。因此,转换矩阵就起到了很大的作用(除非你想把法尔科夫链图画的跟丛林一样)。 状态转移矩阵 从上面可以看出,整个马尔可夫链中的核心就是状态转移矩阵。以股市模型为例,假设初始状态为,然后算之后的状态。 def markov(): init_array = np.array([0.1, 0.2, 0.7]) transfer_matrix = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) restmp = init_array for i in range(25): res = np.dot(restmp, transfer_matrix) print i, "\t", res restmp = res markov() 输出结果: 0 [ 0.295 0.3425 0.3625] 1 [ 0.4075 0.38675 0.20575] 2 [ 0.4762 0.3914 0.1324] 3 [ 0.52039 0.381935 0.097675] 4 [ 0.55006 0.368996 0.080944] 5 [ 0.5706394 0.3566873 0.0726733] 6 [ 0.58524688 0.34631612 0.068437 ] 7 [ 0.59577886 0.33805566 0.06616548] 8 [ 0.60345069 0.33166931 0.06487999] 9 [ 0.60907602 0.32681425 0.06410973] 10 [ 0.61321799 0.32315953 0.06362248] 11 [ 0.61627574 0.3204246 0.06329967] 12 [ 0.61853677 0.31838527 0.06307796] 13 [ 0.62021037 0.31686797 0.06292166] 14 [ 0.62144995 0.31574057 0.06280949] 15 [ 0.62236841 0.31490357 0.06272802] 16 [ 0.62304911 0.31428249 0.0626684 ] 17 [ 0.62355367 0.31382178 0.06262455] 18 [ 0.62392771 0.31348008 0.06259221] 19 [ 0.624205 0.3132267 0.0625683] 20 [ 0.62441058 0.31303881 0.06255061] 21 [ 0.624563 0.31289949 0.06253751] 22 [ 0.624676 0.3127962 0.0625278] 23 [ 0.62475978 0.31271961 0.06252061] 24 [ 0.6248219 0.31266282 0.06251528]从第18次开始,状态就开始收敛至。 如果我们换一个初始状态,比如,继续运行上面的代码,只是将init_array变一下,最后结果为: 0 [ 0.35 0.38 0.27] 1 [ 0.4395 0.39775 0.16275] 2 [ 0.4959 0.39185 0.11225] 3 [ 0.53315 0.378735 0.088115] 4 [ 0.558674 0.365003 0.076323] 5 [ 0.5766378 0.3529837 0.0703785] 6 [ 0.5895162 0.34322942 0.06725438] 7 [ 0.59886259 0.33561085 0.06552657] 8 [ 0.6056996 0.32978501 0.06451539] 9 [ 0.61072624 0.32538433 0.06388944] 10 [ 0.61443362 0.32208429 0.06348209] 11 [ 0.61717343 0.31962047 0.0632061 ] 12 [ 0.61920068 0.31778591 0.06301341] 13 [ 0.62070185 0.31642213 0.06287602] 14 [ 0.62181399 0.31540935 0.06277666] 15 [ 0.62263816 0.31465769 0.06270415] 16 [ 0.62324903 0.31410005 0.06265091] 17 [ 0.62370187 0.31368645 0.06261168] 18 [ 0.62403757 0.31337972 0.06258271] 19 [ 0.62428645 0.31315227 0.06256128] 20 [ 0.62447096 0.31298362 0.06254542] 21 [ 0.62460776 0.31285857 0.06253366] 22 [ 0.62470919 0.31276586 0.06252495] 23 [ 0.62478439 0.31269711 0.0625185 ] 24 [ 0.62484014 0.31264614 0.06251372]到第18次的时候,又收敛到了!这个转移矩阵就厉害了。不管我们的初始状态是什么样子的,只要状态转移矩阵不发生变化,当时,最终状态始终会收敛到一个固定值。 马尔可夫链细致平稳条件 首先,马尔科夫链要能收敛,需要满足以下条件: 可能的状态数是有限的。 状态间的转移概率需要固定不变。 从任意状态能够转变到任意状态。 不能是简单的循环,例如全是从x到y再从y到x。 由前面的例子我们不难看出,当与的n次幂相乘以后,发现得到的向量都会收敛到一个稳定值,而且此稳定值与初始向量 无关!那么所有的转移矩阵都有这种现象嘛?或者说满足什么样的条件的转移矩阵会有这种现象? 细致平衡条件(Detailed Balance Condition):给定一个马尔科夫链,分布 和概率转移矩阵,如果下面等式成立: 默认图片 则此马尔科夫链具有一个平稳分布(Stationary Distribution)。
通信&信息处理
刘航宇
5年前
0
1,031
1
2021-03-10
超详细win系统虚拟机安装liunx系统方法
摘要本文详细介绍了在Windows系统下使用VMware软件安装Linux系统的步骤,包括软件准备、VMware安装、Linux系统安装等,并提供了下载链接和安装注意事项。关键词:win系统虚拟机, Linux系统安装, VMware软件, Ubuntu系统, 虚拟机安装教程前言: Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。 如果初学,建议用VMWARE方式,或者CYGWIN,等熟练后再装双系统。 双系统的方式速度快,适合做研发。 同时虚拟机支持win下用linux系统,不必开关机等麻烦事项,缺点就是慢。 一、软件准备。 由于课本资源老旧,兼容性不佳,可能有的win10安装后无法打开,建议用我下面提供连接安装,或者联系我要u盘安装,免下载 安装有问题话可以联系我! 1、 VMware软件 下载地址1(迅雷)http://forspeed.onlinedown.net/down/vmware15.zip 百度云链接(提取码liu6)https://pan.baidu.com/s/1eJGST7AixIng4v7SoSN2aw 2、Linux系统 Ubuntu16.04版本下载链接(提取码:liu6): https://pan.baidu.com/s/1ZN5fDI7eWSIlRPqkyM38zQ Ubuntu18.04版本下载链接(提取码:liu6): https://pan.baidu.com/s/1-n5WIjuKbDD3NF9YX8-qKQ 二、VMware软件安装 !!!下面安装路径命名最好不要出现中文! 1、解压VMware压缩包得到下图所示文件: 图片 2、打开安装包 图片 3、建议更改安装位置到d盘,C盘大可以忽略 图片 更改后安装位置如下 图片 4、按照安装指示完成安装,安装过程中会重置网络,出现网络断开的现象,属于正常现象。 5、打开VMware,点击许可证!出现输入密钥界面,这时候就要用到密钥生成器了 图片 点击Generate键生成密匙,复制左侧密匙粘贴在VMware密匙界面里,回车确认即可破解软件 图片 秘钥复制后输入 图片 6、如果提示更新不要更新! 三、在VMware上安装linux系统 退出右键点击图标,以管理员权限运行。 1、打开VMware界面如下所示 图片 2、点击创建新的虚拟机 图片 选择自定义安装,点击下一步 3、继续选择下一步 图片 4、选择光盘映像文件,导入的文件为下载的Ubuntu18.04(或者Ubuntu16.04)Linux系统,然后点击下一步: 图片 5、输入你的信息,然后点击下一步,建议不要出现中文 图片 图片 6、输入你的虚拟机名称,按照惯例名称一般不要出现中文,并选择虚拟机部署的位置,然后点击下一部 图片 7、依据你电脑的情况选择分配给这台虚拟机的CPU,如果不清楚自己的电脑情况,建议选少一点,不然运行起来对主系统速度影响会很大。然后点击下一步 图片 8、调整你想要分配给虚拟机的内存,分配原则和上面一样,一般电脑总运行内存4G,调整完成后点击下一步。 图片 9、如无特殊情况,使用网络地址转换,然后点击下一步 图片 10、I/O控制器类型默认类型不用管,然后点击下一步 11、磁盘类型默认类型不用管,然后点击下一步 12、如无特殊情况,选择创建新的虚拟磁盘,然后点击下一步 图片 13、选择分配给磁盘的大小,分配原则与CPU、内存一样。选择将虚拟磁盘存储为一个文件,方便管理,然后点击下一步 图片 14、给磁盘文件命名,一般不要出现中文,然后点击下一步 图片 15、核对虚拟机的各种参数,然后点击完成,虚拟机即会自动安装完成 图片 16、第一次安装很慢,请耐心等待,安装完成后打开虚拟机如图所示,一般点击全屏以自适应屏幕大小 图片 开机无限重启蓝屏等问题 请点击跳转
嵌入式&系统
刘航宇
5年前
17
966
18
2021-02-20
定语从句特殊用法
摘要本文介绍了定语从句的特殊用法,包括that引导的定语从句省略、限制性定语从句与非限制性定语从句的区分、先行词和引导词之间有介词的情况、the same … as与the same … that的区别,以及as和which引导的非限制性定语从句。关键词:定语从句, 特殊用法, that省略, 限制性定语从句, 非限制性定语从句图片 that 引导定语从句时,如果在从句中充当宾语,that 可以省略 举例 • 我喜欢我妈妈给我买的这本书。 I enjoy the book (that) my mom bought for me.(不建议省略) 在分析长难句时候,如果见到有两个名词or代词直接放一起,中间没有被连词或者标点符号隔开,通常都是省略that定语从句 练习 • The potential evolution of today’s technology, and its social consequences, is dazzlingly complicated, and it’s perhaps best left to science-fiction writers and futurologists to explore the many possibilities we can envisage. 区分限制性定语从句和非限制性定语从句 举例 • I love Liu, who is beautiful. 非限制性,有逗号 • I love Liu who is beautiful. 限制性,限制后面条件 分析长难句时候,非限制性定语从句相当于插入语,可以不看。 练习 • Edison, whose inventions have been over 2000, is a famous scientist. 爱迪生是著名科学家(有2000多项发明) 先行词和引导词之间有介词的情况 人不用who用whom,物不用 that只能用whitch 举例 • He is the man from (whom) we should learn. • I will never forget the day on (whitch) I met you. 区别 the same … as;the same … that 引导的定语从句 举例 • He is the same man as I love. 像我爱的人 • He is the same man that I love. 是我爱的人 as 和 which 引导的非限制性定语从句 which 引导的非限制性定语从句可修饰前面整个句子,as也可以,但是which只能放主句后面,as可前可后。 举例 • He enjoys talking with young ladies, which drives me mad.
我的随笔
刘航宇
5年前
0
654
0
2021-02-14
电容、电感、电阻参数测量系统设计
摘要本文设计了一个元器件参数测量仪,可测量电阻、电容和电感参数,测量范围分别为100Ω~1MΩ、100pF~10000pF,测量精度±5%。文章详细介绍了单元电路设计、参数计算、总原理图及元器件清单,并提供了软件程序。关键词:电容, 电感, 电阻, 参数测量, 元器件目录 一、设计任务和要求 二、单元电路设计和参数计算 三、总原理图及元器件清单 四、附录 一、设计任务和要求 1、设计并制作一个元器件参数测量仪。 2、电阻阻值测量,范围:100Ω~1MΩ; 3、电容容值测量,范围:100pF~10000pF; 4、测量精度:±5% ; 5、电感参数的测量; 6、扩大量程; 7、提高测量精度; 系统设计图图片 二、单元电路设计和参数计算 1、电阻的检测单元电路设计 电阻检测图片 从而,可以计算得出电阻值的大小。 2、电容的检测单元电路设计 电容检测图片 从而,可以计算得出电容值的大小。 3、电感的检测单元电路设计 电感检测图片 从而,可以计算得出电感值的大小。 三、总原理图及元器件清单 总电路图片 实物图图片 (2)元器件清单 表1 原理图中所使用的元器件清单 元件序号 型号 数量 备注 U1 STC89C52RC 1 单片机 R3 A103J 1 排阻 R2,R3,R17,R18 10KΩ 4 电位器 X1 11.0592M 1 晶振 C3 25V,10uF 1 电解电容 C1,C2,C11 103(0.01uF) 3 瓷片电容 R1,R13,R18 10KΩ 3 电阻 J1,J2,J3,J4 4 按键 U2 1602 1 液晶 A1,A2 NE555 2 555定时器 R4 300Ω 1 电阻 R5,R6 510KΩ 2 电阻 C4,C5,C6,C7,C8,C9 104(0.1uF) 6 瓷片电容 R7,R9 100KΩ 2 电阻 C10 50V,22uF 1 电解电容 Q1,Q2,Q3 S9108(NPN型) 3 三极管 R10 2KΩ 1 电阻 R8,R11,R14 1KΩ 3 电阻 C12,C13 50V,47uF 2 电解电容 R12,R19 39KΩ 2 电阻 R15,R16 51Ω 2 电阻 C14 25V,470uF 1 电解电容 U3 NE55532 1 运放 四、附录 软件程序 //RCL测量仪程序 //初始化 #include <reg52.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define PI 3.1415926 uchar code table1[8]="Welcome! RCL detector"; uchar table2[16]="f(Hz)="; uchar table3[16]="R(Ohm)="; uchar table4[16]="C(pF)="; uchar table5[16]="L(uH)="; uchar num,a=0,th0,tl0; uint C,L; ulong f,R; sbit lcden=P2^4; //液晶使能端 sbit lcdrs=P2^5; //液晶数据命令选择端 sbit key_R=P1^5; //测量电阻按键 sbit key_C=P1^6; //测量电容按键 sbit key_L=P1^7; //测量电感按键 sbit R_out=P1^2; //测量电阻信号输入 sbit C_out=P1^3; //测量电容信号输入 sbit L_out=P1^4; //测量电感信号输入 //声明子函数 void delayms(uint xms); //延时函数 void write_com(uchar com); //液晶写命令函数 void write_data(uchar date); //液晶写数据函数 void led_init(); //液晶初始化函数 void t_init(); //定时器0初始化函数 void keyscan(); //键盘检测函数(确定被测元件为电阻、电容或电感) void display_f(ulong f); //频率显示函数 void display_R(ulong R); //电阻显示函数 void display_C(uint C); //电容显示函数 void display_L(uint L); //电感显示函数 //主函数 void main() { led_init(); t_init(); keyscan(); write_com(0x01); while(1) { display_f(f); switch(a) { case 1:R=(ulong)(5000000.0/0.6931472/f-150+0.5);display_R(R);break; case 2:C=(int)(100000000.0/153/0.6931472/f+0.5);display_C(C);break; case 3:L=(int)(1000000000000.0/0.1/PI/PI/f/f+0.5);display_L(L);break; } } } //中断函数 void T0_count() interrupt 1 { switch(a) { case 1:while(R_out); while(!R_out); TH0=0; TL0=0; while(R_out); while(!R_out); th0=TH0; tl0=TL0; TR0=0; break; case 2:while(C_out); while(!C_out); TH0=0; TL0=0; while(C_out); while(!C_out); th0=TH0; tl0=TL0; TR0=0; break; case 3:while(L_out); while(!L_out); TH0=0; TL0=0; while(L_out); while(!L_out); th0=TH0; tl0=TL0; TR0=0; break; } f=1000000.0/1.085069/(th0*256+tl0)+0.5; } //延时函数 void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } //液晶写命令函数 void write_com(uchar com) { lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; } //液晶写数据函数 void write_data(uchar date) { lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; } //液晶初始化函数 void led_init() { lcden=0; write_com(0x38); //设置16×2显示,5×7点阵,8位数据接口 write_com(0x0c); //设置开显示,不显示光标 write_com(0x06); //写一个字符后地址指针加1 write_com(0x01); //显示清0,数据指针清0 write_com(0x80); //显示欢迎界面 for(num=0;num<8;num++) { write_data(table1[num]); delayms(5); } } //定时器0初始化函数 void t_init() { TMOD=0x01; //设置定时器0工作方式1(M1M0=0x0001) TH0=0; //装初值 TL0=0; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 } //键盘检测函数(确定被测元件为电阻、电容或电感) void keyscan() { if(key_R==0) { delayms(10); if(key_R==0) a=1; } else if(key_C==0) { delayms(10); if(key_C==0) a=2; } else if(key_L==0) { delayms(10); if(key_L==0) a=3; } else while(key_R&&key_C&&key_L); //按键按下时退出死循环 } //频率显示函数 void display_f(ulong f) { uchar count=0; ulong f0; f0=f; while(f) { f=f/10; count++; } for(num=5+count;num>5;num--) { table2[num]=f0%10+48; f0=f0/10; } write_com(0x80); for(num=0;num<6+count;num++) { write_data(table2[num]); delayms(5); } } 剩余程序付费0.5元即可阅读
嵌入式&系统
# 嵌入式
刘航宇
5年前
5
2,188
3
上一页
1
...
6
7