数字图像处理
混z
混子一个
展开
-
Matlab视频流处理:读取,播放,保存
clc;clear;close all;video=VideoReader('d:\Temp\test.mp4');nFrames=video.NumFrames;% H=video.Height;% W=video.Width;% Rate=video.FrameRate;for i=1:nFrames frame=read(video,i); imshow(frame); %imwrite(frame,strcat('d:\Temp\',num2str(i),'.原创 2021-04-24 10:58:07 · 1110 阅读 · 0 评论 -
Matlab实现 sift 特征匹配(代码源自网络)
源码下载:链接:https://pan.baidu.com/s/191COIwM515XP1rEDEP5H1Q提取码:owqt注:解压后将siftWin32放至matlab的bin文件夹下。脚本调用格式如下:clc;clear;close all;img1=imread('figure1.png');img2=imread('figure2.png');img1_gray=rgb2gray(img1);img2_gray=rgb2gray(img2);imwrite(img1_gray原创 2020-12-21 10:55:22 · 3408 阅读 · 5 评论 -
Matlab特征点(角点)匹配,基于SSD
SSD介绍参考:https://blog.csdn.net/hujingshuang/article/details/47759579Matlab代码实现:注:img1,img2为参与特征匹配的图像,corners1,corners2分别为img1,img2上的角点(特征点)function [count,matched]=match(img1,img2,corners1,corners2)img1=im2double(img1);img2=im2double(img2);if size(img1原创 2020-12-20 23:53:10 · 4990 阅读 · 11 评论 -
Matlab实现图像边缘检测
边缘检测为了在一幅图像 f 的(x,y)位置寻找边缘的强度和方向,所选择的工具就是梯度,梯度使用向量来表示:该向量指出了图像 f 在位置(x,y)处的最大变化率的方向,梯度向量的大小表示为:它是梯度向量方向变化率的值。梯度向量的方向表示为:梯度算子roberts算子:sobel算子:prewitt算子:Matlab实现function output = my_edge(input_img,method)if size(input_img,3)==3 input_img原创 2020-12-16 16:41:17 · 3906 阅读 · 0 评论 -
Matlab实现Harris角点检测算法
角点一般的角点检测都是对有具体定义的、或者是能够具体检测出来的兴趣点的检测。这意味着兴趣点可以是角点,也可以是在某些属性上强度最大或者最小的孤立点、线段的终点,或者是曲线上局部曲率最大的点。在实践中,通常大部分称为角点检测的方法检测的都是兴趣点,而不是独有的角点。因此,如果只要检测角点的话,需要对检测出来的兴趣点进行局部检测,以确定出哪些是真正的角点。目前的角点检测算法可归纳为3类:基于灰度图像的角点检测、基于二值图像的角点检测、基于轮廓曲线的角点检测。角点是图像很重要的特征,对图像图形的理解和分析有很原创 2020-12-14 23:21:00 · 10794 阅读 · 4 评论 -
Matlab实现图像白平衡(灰度世界法、全反射算法)
参考:https://www.cnblogs.com/molakejin/p/5766132.html白平衡白平衡的英文为White Balance,其基本概念是“不管在任何光源下,都能将白色物体还原为白色”,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿。所谓的白平衡是通过对白色被摄物的颜色还原(产生纯白的色彩效果),进而达到其他物体色彩准确还原的一种数字图像色彩处理的计算方法。(源自百度百科)灰度世界算法灰度世界理论:认为任何一幅图像, 当有足够的色彩变化时, 其R, G,原创 2020-12-07 18:11:11 · 6026 阅读 · 3 评论 -
Matlab 频域滤波处理周期噪声图像(带阻滤波器滤波)
带阻滤波器的传递函数为:D0为截止半径(或是截止宽度)D1、D2由下式确定,表示与(u0,v0)和(-u0,v0)点的距离,此时(u0,v0)是在频域中心为坐标原点表示的,所以是对称关系。使用二阶巴斯沃特带阻滤波器对周期噪声图像滤波:噪声图像如下:首先观察其频谱,了解周期噪声分布:噪声分布在频域图像的竖直方向,在水平方向上没有。画频域图像中心竖直方向的频谱,得到噪声起始两点的位置,分别距离图像上边137和201,即u0=137,u1=201,v0=v,v1=v 。由此构造如下带阻滤波器原创 2020-11-30 20:39:37 · 13082 阅读 · 5 评论 -
Matlab大气湍流退化模型
退化函数为Matlab代码:function out=daqituanliu(img,k)img=double(img);F=fft2(img);[m,n,h]=size(F);H=zeros(m,n);for i=1:m for j=1:n H(i,j)=exp(-k*((i-m/2)^2+(j-n/2)^2)^(5/6)); endendif h==1 out=uint8(real(ifft2(F.*H)));elseif h==3原创 2020-11-25 19:48:17 · 7006 阅读 · 12 评论 -
Matlab频域高/低通滤波
建议参考书籍:数字图像处理高斯高/低通滤波低通滤波:在这里插入代码片高通滤波器:在这里插入代码片原创 2020-11-26 21:50:11 · 6111 阅读 · 6 评论 -
Matlab中的meshgrid函数
参考:https://blog.csdn.net/hhhhhyyyyy8/article/details/76209094matlab函数手册meshgrid是Matlab中用于生成网络采样点的函数。常用于3d绘图。调用方式:[X, Y]=meshgrid(xgv,ygv);复制网格向量xgv和ygv生成矩阵网格(X,Y)的坐标输出X,Y为维度相同的矩阵。令nx,ny 分别为向量xgv,ygv中数的个数,那么xgv被复制ny次以形成X的列,ygv被复制nx次形成Y的行。示例:[X, Y,原创 2020-11-23 23:01:08 · 7136 阅读 · 0 评论 -
Matlab相机标定并进行图像校正
Matlab相机标定工具原创 2020-11-15 11:58:23 · 8795 阅读 · 3 评论 -
C语言数字图像处理编程
C语言数字图像处理读取bmp图像并做简单显示bmp图像几何变换(移动,旋转,镜像,转置,缩放)彩色图像转灰度图,灰度图反色图像中值滤波与平均滤波bmp图像锐化图像的半影调和抖动技术bmp图像对比度扩展...原创 2020-11-12 21:48:56 · 3305 阅读 · 1 评论 -
C语言实现bmp图像对比度扩展
假设有一幅图,由于成象时光照不足,使得整幅图偏暗(例如,灰度范围从0到63);或者成象时光照过强,使得整幅图偏亮(例如,灰度范围从200到255),我们称这些情况为低对比度,即灰度都挤在一起,没有拉开。灰度扩展的意思就是把你所感性趣的灰度范围拉开,使得该范围内的象素,亮的越亮,暗的越暗,从而达到了增强对比度的目的。我们可以用下图来说明对比度扩展(contrast stretching)的原理:图中的横坐标gold表示原图的灰度值,纵坐标gnew表示gold经过对比度扩展后得到了新的灰度值。a,b,c为原创 2020-11-11 22:11:22 · 889 阅读 · 0 评论 -
C语言实现二值图像模拟灰值图像显示效果(图案法、抖动法)
图案法图案法(patterning)是指灰度可以用一定比例的黑白点组成的区域表示,从而达到整体图象的灰度感。黑白点的位置选择称为图案化。下面介绍的一种设计标准图案的算法,是由Limb在1969年提出的。先以一个2×2的矩阵开始:通过递归关系有:其中Mn和Un均为2n×2n的方阵,Un的所有元素都是1。根据这个算法M2如下,为16级灰度的标准图案:M3(8×8阵)比较特殊,称为Bayer抖动表。M4是一个16×16的矩阵。M3 表模拟灰值图像显示效果: int i,j,temp; unsi原创 2020-11-11 21:39:13 · 1734 阅读 · 3 评论 -
C语言实现bmp图像锐化
锐化(sharpening)和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(high pass filter)。锐化处理在增强图象边缘的同时增加了图象的噪声。常用的锐化模板是拉普拉斯(Laplacian)模板,如下所示:容易看出拉普拉斯模板的作法:以自身灰度值的9倍减去周围像素点灰度值作为自身新的灰度值。可见,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声。因为图象中的边缘就是那些灰度发生跳变的区域,所以锐化模板在边缘检测中很有用。实现原创 2020-11-11 20:19:59 · 2235 阅读 · 2 评论 -
C语言实现图像中值滤波与均值滤波
中值滤波中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波容易去除孤立点,线的噪声同时保持图象的边缘,对椒盐噪声有较好的滤波效果;它能很好的去除二值噪声,但对高斯噪声无能为力。辅助函数://从m个数值中提取其中值unsigned char median(unsigned char num[],int m){ int i,j; unsigned char temp; for(i=0;i<m;i++){ for(j=i+1;j&原创 2020-11-11 19:49:43 · 8132 阅读 · 8 评论 -
C语言实现将彩色bmp图像转化为灰图、灰度图像反色
彩色(24位)bmp图像结构:typedef struct{ bitmapFileHeader bfHeader; bitmapInfoHeader biHeader; unsigned char *imgData;}bmp;灰度(8位)bmp图像结构:typedef struct{ bitmapFileHeader bfHeader; bitmapInfoHeader biHeader; rgbQUAD palette[256]; unsigned char *imgData;}原创 2020-11-11 16:44:19 · 3521 阅读 · 13 评论 -
Matlab图像复原(运动模糊、散焦模糊)
图像退化图像退化的因素各种各样,但最主要的就是在得到图像,传送过程和保存的时候导致的,还有由于形成图像系统的不同、想要拍的物体和相机之间的相对运动,一些空气媒介等等都会让图像变得模糊不清楚、混入噪声、照片对比度也有所降低等种种现象。当下,通常见到的退化图像一般是运动的模糊类型、高斯噪声的模糊类型和离焦的模糊类型,有时还有多种模糊混合在一块的情况。而且因为噪声一般都会存在于各种情况当中,因此模糊的图像里面往往都存在噪声的这一影响因素。图像退化的时候,有两个因素会影响这一过程,其一就是退化的模糊函数,也就是原创 2020-11-06 22:01:33 · 17926 阅读 · 5 评论 -
Matlab中的fspecial函数
fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters,sigma)‘average’,为均值滤波,参数为hsize,代表模版尺寸,用向量表示,默认值为[3,3]。‘disk’,为圆形区域均值滤波,参数radius代表区域半径,默认值为5‘gaussian’,为高斯低通滤波器,参数有两个,hsize表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为 0.5。‘l原创 2020-11-02 22:52:56 · 3587 阅读 · 0 评论 -
Matlab对图像做傅里叶变换
傅里叶变换应用在各个领域当中,傅里叶变换的方式也有很多种,通常在图像处理的这一方面,利用了二维的傅里叶变换。为了更好的去观察一幅图像,它通常将图像从空间域变换到频域。利用这个变换更加利于观察到图像的某些特征,从而分类不同种类的模糊图像。代码实现:clc;clear;close all;A=imread('d:\Temp\1.bmp');A=rgb2gray(A);imshow(A);B=fft2(A);C=fftshift(B);subplot(121),imshow(log(abs(原创 2020-11-02 12:02:21 · 5331 阅读 · 0 评论 -
Matlab中bwmorph函数的使用
Matlab中bwmorph函数的使用Matlab中提供了一个基于形态学的处理函数,即以膨胀、腐蚀等操作为基础,其语法格式如下:bw2=bwmorph(bw1,operation,n);其中bw1为输入的二值图像;operation是可以进行的操作;而n为执行该操作的次数;bw2为原图像经过n次操作后得到的结果图像。参数operation的常用取值:open:对图像做开运算close:对图像做闭运算dilate: 对图像做膨胀处理erode:对图像进行腐蚀处理thin:对图像进行细化原创 2020-10-24 23:09:09 · 6782 阅读 · 0 评论 -
C语言实现bmp图像几何变换(移动,旋转,镜像,转置,缩放)
C语言实现bmp图像几何变换(移动,旋转,镜像,转置,缩放)移动镜像转置缩放自定义结构及函数如下:#define pi 3.1415926typedef struct { unsigned char bfType[2]; unsigned long bfSize; unsigned short bfReserved1; unsigned short bfReserved2; unsigned long bfOffBits;}bitmapFileHeader;typedef struct原创 2020-10-23 23:19:09 · 6960 阅读 · 11 评论 -
C语言读取bmp图像并做简单显示
C语言读取bmp图像信息并做简单显示)bmp文件格式读取bmp文件信息并展示bmp文件格式bmp文件大体上分为四个部分:bmp文件构成位图文件头BITMAPFILEHEADER位图信息头BITMAPINFOHEADER调色板Palette实际的位图数据ImageDate第一部分为位图文件头,位图文件头长度固定,为14个字节。typdef struct {WORD bfType; //指定文件类型,必须是0x424d,即”BM”DWORD bfSiz原创 2020-10-20 19:46:00 · 14340 阅读 · 4 评论 -
Matlab实现连通域标记算法求图像连通域
Matlab实现连通域标记算法求图像连通域连通域连通域标记算法连通域连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域(Region,Blob)。连通区域分析(Connected Component Analysis,Connected Component Labeling)是指将图像中的各个连通区域找出并标记。连通区域分析是一种在CVPR和图像分析处理的众多应用领域中较为常用和基本的方法。例如:OCR识别中字符分割提取(车牌识别、文本识原创 2020-10-17 22:45:04 · 7218 阅读 · 3 评论 -
Matlab中的lsqcurvefit函数的使用
Matlab中的lsqcurvefit函数的使用lsqcurvefit函数调用示例lsqcurvefit函数非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函zhi数关系为ydata=F(param, xdata),但不知道系数向量param,此时可以使用lsqcurvefit函数求得beta使得输出的如下最小二乘表达式成立:min Σ(F(x,xdatai)-ydatai)^2。lsqcurvefit函数的调用格式:最简单的格式:param=lsqcurvef原创 2020-10-10 09:43:55 · 10079 阅读 · 1 评论 -
Matlab实现直方图均衡化(基于自定义函数)
Matlalb实现直方图均衡化直方图均衡化Matlab代码实现直方图均衡化直方图均衡化是一种使输出图像直方图近似服从均匀分布的变换算法,其计算步骤如下:列出原始图像的灰度级fjf_jfj,j=0,1,…,k,…,L-1,其中L是灰度级的个数。统计各灰度值的像素数目NjN_jNj, j=0,1,…,k,…,L-1。计算原始图像直方图各灰度级的频度Pj=Njn\frac{Nj}{n}nNj,j=0,1,2,…,k,…,L-1,其中n为原始图像总的像素数目。计算累计分布函数C(f)=∑i=0k原创 2020-10-04 22:13:20 · 5390 阅读 · 0 评论 -
Matlab实现二值图像模拟灰度图像显示效果(基于抖动矩阵)
Matlab实现二值图像模拟灰度图像显示效果抖动技术图案法抖动矩阵2x2抖动矩阵4x4抖动矩阵Matlab代码实现2x2抖动矩阵实现2倍尺寸的模拟灰度图像的显示效果4x4抖动矩阵实现4倍尺寸的模拟灰度图像的显示效果抖动技术对于可用颜色较少的系统,可以以牺牲分辨率为代价,通过颜色值的抖动来增加可用颜色数量。以黑白激光打印机为例,可以通过控制黑点分布的稀疏程度,来使打印出的二值图像能够表示不同灰度级。基本原理: 当⼈眼从较远距离观察图像时,将会平均局部小区域像素的灰度值,并记录之;图案法讲抖动算法,原创 2020-09-28 19:05:05 · 2907 阅读 · 0 评论