MATLAB处理图像_matlab视频图像处理

MATLAB处理图像_matlab视频图像处理RGB图像转为灰度图像:X=rgb2gray(I)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

 图像类型的转换

图像文件读写

视频文件读写

数字图像的运算

图像的几何变换


 图像类型的转换

MATLAB处理图像_matlab视频图像处理


RGB图像转为灰度图像:X=rgb2gray(I) %I为RGB图像,X为转换后的图像

RGB图像转换为索引图像:

         [X,map]=rgb2ind(I,tol) %toll的范围是0.0到1.0,map包含至少(floor(1/tool)+1)^3个颜色

         [X,map]=rgb2ind(I,N)%map包含至少N个颜色

        X=rgb2inb(I,map) %【x,map】对应的是索引图像,colorcube(M)返回包含colorcube的M × 3矩阵。M = 256, colorcube返回完全一样的颜色。当M < 8时,长度为M的灰色斜坡返回。

灰度图像转换为索引图像:

         [X,map]=gray2ind(I,n)%该函数是将灰度图像转为索引图像,灰度级为n 

         [X,map]=gray2ind(BW,n)%该函数是将二值图像BW转换为索引图像

        map中对于的颜色值为颜色图gray(n)中的颜色值,gray(M)返回一个包含灰度色图的M × 3矩阵

        I=grayslice(G,n)%该函数是将灰度图像中的像素灰度均匀化为n个等级转换为索引色图像,然后imshow(I,jet(n)),jet()函数生成颜色映射表,给图像I对于像素点加上颜色

索引图像转换为灰度图像:

I=ind2gray(X,map)%该函数将具有颜色映射表map的索引图像转化为灰度图像,[X,map]=imread();

索引图像转为RGB图像:

RGB=ind2rgb(X,map)%索引图像中的map表直接赋给RGB中对应像素的颜色值,肉眼下两图一样

 灰度图像,RGB转换为二值图像:

BW=im2bw(I,level)%level为设置的阈值参数,取值范围在[0,1],输出图像BW用白色替换输入图像中亮度大于level*255的所有像素,用黑色替换其他,像如果没有指定level, im2bw将使用值0.5。 

数值矩阵转换为灰度图像:

I=mat2gray(X,[xmin,xmax])%1指白色,0指黑色,数据矩阵小于0取xmin,大于1取xmax。


图像文件读写

文件信息的读取:imfinfo(‘文件名件.类型’)%可以查看图像的图像类型,大小等。

图像文件的读取:

       I=imread(‘文件名件.类型’)%灰度图像M*N二维,真彩色图像M*N*3的三维数组。

       [X,map]=imread(‘文件名件.类型’)%索引图像,map用于存储与索引图像相关的颜色映射表。

       [X,map]=imread(‘文件名件.GIF’,idx)%idx读取第几帧图像。

图像文件的保存:

        imwrite(I,’文件名件’,’类型’)将图像I保存。

        imwrite(X,map,’文件名件’,’类型’)用于保存索引图像。

图像显示函数:

        imshow(I)  imshow(‘文件’)  imshow(X,map)%图像视窗

        imtool(I)%图像工具浏览器

        image(I)   image([1,2],[3,4],I)%X轴1到2,y轴4到3,个人理解类似于A([1 2],[2 3])这种。

        image有坐标轴区别于前面两个函数

彩色条:

         colorbar%在图像上形成一个彩色条,默认在右侧

         imshow(I),colorbar;

         colobar(‘off’)   、colobar(‘hide’)和colobar(‘delete’)删除当前轴所有的相关彩色条。


视频文件读写

v = VideoReader(filename)%读取视频

v.NumberOfFrames%获取视频帧数(我用的是matlab2016a,V结构里面没有总帧数所以加上了)

read(v,[1 10])%读取视频中的1:10帧

read(v,[1 Inf])%从第 1 帧开始读取到视频结束。

VideoReader.getFileFormats()%查看在你的matlab上 VideoReader支持的文件格式列表


数字图像的运算

          图像的加法:imadd(X,Y)%其中X,Y为大小相等的图像矩阵,Y如果是数字则表示在原图像X上每个像素值加30,这里不能用索引图像。

          附加噪声:imnosie(I,type,parameters)%type为噪声类型:gaussian(高斯噪声),localvar(零均值的高斯噪声),poisson(泊松噪声),salt & pepper(椒盐噪声) 

          J = imnoise(I,’gaussian’,M,V),M-均值,V-方差

          J = imnoise(I,’localvar’,V)

          J = imnoise(I,’poisson’)

         J = imnoise(I,’salt & pepper’,d),其中d为噪声密度。 这将影响大约d*numel(I)像素,d的默认值是0.05

          图像的减法:imsubtract(X,Y),这里Y可以是常熟类似于上面的加法—获取两个图像之间的差异

         图像的乘法:immulitply(X,Y)——实现图像局部显示

    Y–常数,大于1起亮度增强的作用


图像的几何变换

         impixel(I,C,R)%输出像素的颜色

          图像的缩放[B,newmap]=imresize(A,map,m)%m为缩放比例   

         B=imresize(A,m)   B=imresize(A,[行,列])%缩放后的行列

          图像的旋转imrotate(A,angle)

          图像的修剪imcrop(X,行,列),imcrop(I)–截选好图像,然后双击

          图像的平移x_{1}=x_{0}+\Delta x         y_{1}=y_{0}+\Delta y

J(i+a,j+b,:)=I(i,j,:)

         将图像的数据类型转换为双精度–目的是提高精度im2double(I)

          图像的转置x_{1}=y_{0}          y_{1}=x_{0}     

         图像的空间变换:B=imtransform(A,TFORM);A是图像矩阵,TFORM通过maketform()返回

maketform(‘affine’,D)%平移,缩放,旋转

返回二维的参数结构体,输入D应该是(2+1)*(2+1)或者(2+1)*2的矩阵

如果是3*3的矩阵,最后一列应该为(zeros(2,1);1)

a_{0} a_{1} a_{2} b_{0} b_{1} b_{2}
平移 1 0 \Delta x

1 \Delta y
缩放 s_{x} 0 0 0 s_{y} 0
旋转(逆时针a) cosa sina 0 -sina cosa 0

eg:

       D=\begin{bmatrix} 1&0 & 0\\ 0& 1& 0\\ \Delta x& \Delta y&1 \end{bmatrix}


灰度变换增强

        灰度图像的直方图可以通过imhist()获取,或通过编程 k=I(i,j);N(k+1)=N(k+1)+1

imadjust(I,[0.2,0.5],[0,1])%小于255*0.2的灰度值设为0。

       灰度图像的亮度改变brighten(n),通常放在imshow()的后面%n>0&&n<1,图像变亮,n\subseteq [-1,1]

       最佳输入区间:stretchlim(I)%获取最佳区间。

       灰度反转:imcomplement()%0变为255,将灰度值为X的像素值转换为255-X。

       RGB图像也可以求直方图(分解R,G,B)  imhist(I(:,:,1))%计算R分量的直方图。

      直方图均衡化:histeq()%直方图是近似均匀的。


图像的统计特性

         图像的均值:mean2()计算矩阵的均值,对于RGB图像mean(I(:,:,1))先弄成2维矩阵。

         图像的标准差std2()

         图像的相关系数:两个大小相等的二维矩阵,可以计算相关系数,corr2(A,B)。

         图像的等高线:imcontour(I,n)%n为设置等高线的条数,不指定函数会自动选取n,好玩。


空域滤波

           空域滤波是对图像中每一个像素为中心的领域进行的一系列的运算

            线性空域滤波:线性平均滤波是一种常用的线性空域滤波,它是一种低通滤波,信号低频部分通过,阻止高频部分通过。由于图像的边缘处于高频部分,因此线性平均滤波后,会造成图像边缘的模糊。

eg:常用的模版大小为3X3,如下所示:

T=\frac{1}{5}\begin{bmatrix} 0&1 &0 \\ 1& 1& 1\\ 0&1 &0 \end{bmatrix}

对图像进行平滑:   imfilter(I,T),           

通过卷积进行滤波C = conv2(A,B,’___’)—锐化滤波后得到的图像,图像的边缘部分得到了加强

same——返回与A大小相同的卷积的中心部分。B是模版

full——返回完整的二维卷积,默认的

conv2%把图像的轮廓描绘出来,K=原图-卷积后的图%边缘部分会加强。


              非线性空域滤波:

              中值滤波:是一种保护边缘的非线性图像平滑方法——medfilt2(I)进行图像的二维中值滤波,中指滤波非常适合去除椒盐噪声,取得非常好的滤波效果。

wiener2()根据图像的噪声进行自适应滤波,该函数根据图像的局部方差来调整滤波器的输出,当局部方差大时,滤波器的平滑效果较弱;当局部方差小时,滤波器的平滑效果较强。

J = wiener2(I,[m n])使用像素方向自适应Wiener滤波对图像I进行滤波,使用大小为m × n的邻域来估计局部图像的均值和标准差。

               排序滤波:ordfilt()还不会,这就很难受,书上的代码看不懂


频域滤波:

      通过傅里叶变换将图像从空间域转换为频率域,然后在频率域内对图像进行处理,最后通过傅里叶反变换转换到空间域。

低通滤波:作用是过滤掉包含在高频中的噪声,同时也抑制了图像边缘

对于大小为M*N的图像,频率点(u,v)与频率中心的距离为D(u,v)其表达式为:

D(u,v)=\sqrt{[(u-M/2)^2+(v-N/2)^2]}

1.理想低通滤波器:Do为理想低通滤波器的截止频率,在半径为Do的范围内,所有频率都可以没有衰减的通过滤波器,在半径之外的全部衰减为0。理想低滤波器具有平滑图像的作用,但是有很严重的振铃现象振铃效应,是由于在图像复原中选取了不适当的图像模型造成的,振铃效应产生的直接原因是图像退化过程中信息量的丢失,尤其是高频信息的丢失,其严重降低了复原图像的质量,并且使得难于对复原图像进行后续处理)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188150.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号