![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
matlab
Ibelievesunshine
毕业于浙江师范大学数计学院,是一名图像处理工程师
展开
-
matlab 纹理映射
在MATLAB中,纹理映射是一种将二维图像映射到三维图形表面的技术。这种技术通过转换颜色数据使二维图像与三维图形表面保持一致。在MATLAB中的纹理映射是利用双线性渐变算法来实现图像映射的。上代码:close all;clear all;clc;%利用函数warp()实现纹理映射I = imread('football.jpg'); %读取图像信息[x y z]=sphere; %创建三个(N...原创 2018-04-14 21:14:56 · 4953 阅读 · 7 评论 -
error(nargchk(1,2,nargin))
在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数。nargchk(1,2,nargin),当nargin的值大于2,nargchk返回字符串Too many input arguments. '当nargin的值小于1,nargchk返回字符串not enough input arguments.当nargin的值在1到2之间,nargchk返回空字符串。...原创 2019-08-27 10:23:50 · 2618 阅读 · 0 评论 -
matlab repmat 函数的使用
B = repmat(A,m,n)将A矩阵复制叠加m行n列形成B矩阵例子:A = 1 2 3 4 5 6>> B = repmat(A,2,3)B = 1 2 3 1 2 3 1 2 3 4 5 6 4...原创 2019-08-27 10:46:43 · 2135 阅读 · 0 评论 -
matlab 计算灰度图像的一阶矩、二阶矩、三阶矩
一阶矩,定义了每个颜色分量的平均强度 二阶矩,反映待测区域颜色方差,即不均匀性 三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性close all;clear all;clc;J = imread('lena.jpg');K = imadjust(J,[70/255 160/255],[]);figure;subplot(121),imshow(J);sub...原创 2019-08-28 11:35:05 · 9992 阅读 · 3 评论 -
纹理特征描述之灰度差分统计特征(平均值 对比度 熵) 计算和比较两幅纹理图像的灰度差分统计特征 matlab代码实现
灰度差分统计特征有:平均值:对比度:熵:i表示某一灰度值,p(i)表示图像取这一灰度值的概率close all;clear all;clc;% 纹理图像的灰度差分统计特征J = imread('qiang1.jpg');A = double(J);[m,n] = size(A);B = A;C = zeros(m,n);for i=1:m-1 for j...原创 2019-08-28 16:52:16 · 5547 阅读 · 4 评论 -
纹理特征描述之自相关函数法 纹理粗糙性与自相关函数的扩展成正比 matlab代码实现
图像中通常采用自相关函数作为纹理测度自相关函数的定义为:调用自定义函数 zxcor()对砖墙面和大理石面纹理进行分析:自定义函数 zxcor():function [epsilon,eta,C] = zxcor( f,D,m,n )% 自相关函数zxcor(),f为读入的图像数据,D为偏移距离,[m,n]是图像的尺寸数据,返回图像相关函数C的值% epsilon和eta是...原创 2019-08-28 21:31:18 · 3866 阅读 · 4 评论 -
利用matlab自带函数graycoprops 实现基于共生矩阵的遥感图像纹理特征分析
close all;clear all;clc;I = imread('yaogan2.jpg');HSV = rgb2hsv(I);Hgray = rgb2gray(HSV);% 计算64位灰度共生矩阵glcmsl = graycomatrix(Hgray,'numlevels',64,'offset',[0 1;-1 1;-1 0;-1 -1]);% 纹理特征统计,包括对比度、相...原创 2019-08-29 16:01:13 · 1315 阅读 · 4 评论 -
利用Gabor变换法分析纹理图像 matlab代码实现
Gabor变化属于加窗傅里叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。Gabor函数与人眼的生物作用相仿,所以经常用于纹理识别上,并取得了较好的效果。二维Gobor滤波函数:其中:xp = x*cos(theta)+y*sin(theta)yp=y*cos(theta)-x*sin(theta)function [ G,gabout ] = gab...原创 2019-08-29 21:55:11 · 5875 阅读 · 4 评论 -
matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'
在测试代码时发现,自己的matlab无法执行Freeman链码函数:boundaries和fchcode函数都无法正常运行:需要在自己的工作目录中添加如下函数:boundaries fchcode minmag codediff代码如下:function B=boundaries(BW,conn,dir)%BOUNDARIES Trace object...原创 2019-08-31 20:08:09 · 3121 阅读 · 0 评论 -
matlab 提取图像轮廓(图像边缘提取)
利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下:close all;clear all;clc;% 提取图像轮廓,提取图像边缘I = imread('yifu.jpg');c = im2bw(I,graythresh(I));figure;subplot(131);imshow(I);c = flipud(c); %实现矩阵c上...原创 2019-09-01 17:00:06 · 30390 阅读 · 3 评论 -
matlab 求二值图像图形的面积和重心
图像如下:代码如下:close all;clear all;clc;I = imread('duobianxing1.jpg');I = im2bw(I);C = bwlabel(I,4);Ar = regionprops(C,'Area')Ce = regionprops(C,'Centroid')figure;imshow(I);output:Ar =...原创 2019-09-02 20:36:51 · 8998 阅读 · 1 评论 -
图像欧拉数计算 matlab实现
EUL = C - H其中EUL表示欧拉数 C表示对象数 H表示孔洞数欧拉数常用来识别数字:识别数字 8 ,8 的欧拉数为 -1 ,不同于0,1,2,3,4,5,6,7,9close all;clear all;clc;% 识别数字8I = imread('8.jpg');K = im2bw(I);J = ~K; %图像取反EUL = bweuler(J);fi...原创 2019-09-03 10:49:15 · 5419 阅读 · 0 评论 -
使用不同的膨胀和腐蚀方法对图像进行处理
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。通过膨胀,可以填充图像中的小孔及在图像边缘处的小凹陷部分。结构元素B对图像A进行膨胀,记作AB腐蚀和膨胀是对偶操作。腐蚀是一种消除边界点,使边界向内部收缩的过程。利用腐蚀操作,可以消除小且无意义的物体。集合A被结构元素B腐蚀,记作AB这里为了简化起见,被膨胀和腐蚀图像我们处理成二值图像:matlab 中膨胀函...原创 2019-09-03 17:06:00 · 2500 阅读 · 0 评论 -
简单直观理解形态学中的开运算和闭运算
开运算是先腐蚀,再膨胀。闭运算是先膨胀,再腐蚀。注意上图,开运算去除了图像中比较小的点,闭运算将图中的多个圆变成了一个整体。具体matlab代码如下:close all;clear all;clc;% 开运算和闭运算I = imread('testpic.jpg');I = im2bw(I);I = ~I;se = strel('line',5,90);J = imo...原创 2019-09-03 19:51:12 · 3410 阅读 · 1 评论 -
matlab 简单的图像填充例子
BW = imfill(BW,'holes')该函数通过参数holes可以填充二值图像中的空洞close all;clear all;clc;I = imread('tire.tif');J = imfill(I,'holes'); %图像填充figure;subplot(121);imshow(I);subplot(122);imshow(J);...原创 2019-09-03 21:12:38 · 9131 阅读 · 0 评论 -
imregionalmax imregionalmin imextendedmax imextendedmin imhmax imhmin 函数的详解 matlab中函数
BW = imregionalmax(I): 该函数获得灰度图像 I 的局部极大值,返回值BW为和原图像大小相同的二值图像,BW中元素1对应极大值,其他元素为0BW = imregionalmax(I,conn):该函数中参数conn为连通类型。对于二值图像conn可以取值为4和8,默认值为8。对于三维图像,conn可以取值为6、 18、 26,默认值为26。J = imregionalm...原创 2019-09-05 10:33:05 · 1974 阅读 · 0 评论 -
利用膨胀和腐蚀获取图像边缘 matlab实现
关于膨胀和腐蚀的概念请参考:https://blog.csdn.net/Ibelievesunshine/article/details/100522440close all;clear all;clc;I = imread('rice.png');se = strel('square',2);J = imdilate(I,se);K = imerode(I,se);L = ...原创 2019-09-05 11:28:56 · 4560 阅读 · 1 评论 -
matlab 实现行程编码 对二值图像进行编解码
何为行程压缩呢?很简单:例如:aaabccccccddeee 可以表示为 3a1b6c2d3e行程压缩对二值图像的压缩非常有效close all;clear all;clc;% matlab 行程编解码 二值图像I1 = imread('lena.jpg');I2 = I1(:);I2length = length(I2);I3 = im2bw(I1,0.5); %将原...原创 2019-08-26 21:15:17 · 3681 阅读 · 1 评论 -
香农编码的 matlab 实现
close all;clear all;clc;% 香农编码matlab实现p = [0.5 0.19 0.19 0.07 0.05] %输入概率n = length(p);y = fliplr(sort(p));D = zeros(n,4);D(:,1) = y';for i = 2:n D(1,2) = 0; D(i,2) = D(i-1,1)+D(i-1,2)...原创 2019-08-26 15:50:46 · 8427 阅读 · 1 评论 -
matlab 中 diff 函数 cumsum 函数 logical 函数 tabulate 函数 使用方法
I = 0 0 1 1 1 1 8 8 -1>> diff(I)ans = 1 1 0 7 7 -2下一行减去上一行的值形成的矩阵>> cumsum(I)ans = 0 0 1 1 ...原创 2019-08-26 16:55:15 · 1173 阅读 · 0 评论 -
matlab图像点运算 对比度增强 对比度拉伸 灰度变换
点运算又称为对比度增强、对比度拉伸或灰度变换,是一种通过图像中的每一个像素值进行运算的图像处理方式。。它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅有对应的输入像素点的灰度值决定,运算结果不会改变图像内像素点之间的空间关系。其运算的数学关系式如下:其中,A(x,y)表示原图像,B(x,y)表示经过点运算处理后的图像,f表示点运算的关系函数。按照灰度变换的数学关系,点运算可以分为线性灰度变...原创 2018-04-15 12:08:56 · 25701 阅读 · 1 评论 -
matlab利用图像减法实现找茬
★ Z=imsubtract(X,Y):该函数中X和Y表示进行图像减法运算的两幅图像,Z表示X-Y后的操作结果利用该函数实现找茬代码如下:close all;clear all;clc;%利用图像减法运算实现DSA减影A=imread('F:/cha3.jpg');B=imread('F:/cha4.jpg');C=imsubtract(A,B);figure,subplot...原创 2018-04-15 14:41:09 · 8104 阅读 · 2 评论 -
matlab空域内图像增强之灰度变换增强
空域内的图像增强就是调整灰度图像的明暗对比度,是对图像中各个像素的灰度值直接进行处理。灰度变换增强是空域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行。为了进行灰度变换,首先要获取灰度图像的直方图。具体实现的代码如下:close all;clear all;clc;%获取灰度图像的直方图I=imread('pout.tif');...原创 2018-04-16 11:58:55 · 15332 阅读 · 1 评论 -
matlab图像灰度调整——imadjust函数的使用
在MATLAB中,通过函数imadjust()进行图像灰度的调整,该函数调用格式如下:J=imadjust( I ) 对图像I进行灰度调整J=imadjust( I,[low_in;high_in],[low_out;high_out]) [low_in;high_in]为原图像中要变换的灰度范围,[low_out;high_out]为变换后的灰度范围J=imadjust( I,[low_in;...原创 2018-04-16 14:05:03 · 78875 阅读 · 24 评论 -
matlab实现直方图均衡化
直方图均衡化是一种利用灰度变换自动调节图像对比度质量的方法,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累计分布函数变换法为基础的直方图修正法。直方图均衡化处理的步骤如下:1. 求出给定待处理图像的直方图2. 利用累计分布函数对原图像的统计直方图做变换,得到新的图像灰度。3. 进行近似处理,将新灰度代替旧灰度,同时将灰度值相等或相近的每个灰度直方图合并在一起MATLAB实现直方图...原创 2018-04-16 15:34:34 · 77948 阅读 · 8 评论 -
matlab低通滤波
低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。所以低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界,造成图像不同程度上的模糊。大于大小为M×N的图像,频率点(u,v)与频率中心的距离为D(u,v),其表达式为:1. 理想低通滤波器产生公式为:其中Do为理想低通滤波器的截止频率。理想低通滤波器具有平滑图像的作用,但是有很严重的振铃现象。利用理想低通滤波...原创 2018-04-16 21:02:49 · 46614 阅读 · 8 评论 -
matlab字符串转换
matlab字符串与数值之间的转换close all;clear all;clc;num=rand(3,3) %产生3×3随机矩阵s1=num2str(num) %将数值转换成字符串s2=num2str(pi,10) %将pi的前10位转换成字符串int = 12345s3=int2str(int) %将整形转换为...原创 2018-04-12 20:27:27 · 10089 阅读 · 0 评论 -
matlab二进制十进制十六进制和任意进制之间的转换
>> a=bin2dec('1011001') %将二进制转换为10进制a = 89>> b=dec2bin(22) %将10进制转换为2进制b =10110>> c=hex2dec('9B3C') %将16进制转换为10进制c = 39740>> d=dec2hex(97) %将10进制转换为16进制d =61>&...原创 2018-04-12 20:39:09 · 30520 阅读 · 1 评论 -
matlab细胞数组类型建立及操作
细胞数组结构图:细胞数组中每个细胞存储一种类型的MATLAB数组,此数组中的数据可以是任何一种MATLAB数据类型或用户自定义的类型,其大小也可以是任意的。相同数组的第二个细胞的类型与大小可以和第一个细胞完全不同。建立细胞数组并输出结构图:>> stu=cell(2); %运用cell函数建立2×2细胞数组>> stu{1,1}={'Xiao','Na'};>>...原创 2018-04-12 21:57:38 · 11410 阅读 · 0 评论 -
matlab矩阵运算相关函数
1. MATLAB提供函数det()求方阵行列式的值>> A=[1 3 4;5 6 7;1 0 1]A = 1 3 4 5 6 7 1 0 1>> a=det(A)a = -122. MATLAB提供函数transpose()求矩阵的转置矩阵,也可以使用算术运算符“ ’”求矩阵的转置运算>&g...原创 2018-04-13 16:10:36 · 3910 阅读 · 0 评论 -
matlab绘制等高线图
MATLAB提供函数contour()绘制等高线图,函数contourf()绘制经过填充的等高线图,具体调用格式如下:★ contour(z):该函数绘制矩阵z的等高线。★ contour(x,y,z):该函数在指定坐标(x,y)下,画出矩阵 z 的等高线。★ contour(z,n):该函数绘制n条等高线。★ contour(x,y,z,[v v]):该函数绘制高度为 v 的等高线。>&g...原创 2018-04-13 17:40:53 · 29447 阅读 · 2 评论 -
matlab 检测图像中的线段
close all;clear all;clc;I=imread('gantrycrane.png');I=rgb2gray(I);h1=[-1 -1 -1;2 2 2;-1 -1 -1];h2=[-1 -1 2;-1 2 -1;2 -1 -1];h3=[-1 2 -1;-1 2 -1;-1 2 -1];h4=[2 -1 -1;-1 2 -1;-1 -1 2];J1=im...原创 2018-12-08 20:05:33 · 4979 阅读 · 0 评论 -
matlab 计算矩阵a的离散余弦变换
close all;clear all;clc;A=[1 1 1 1;2 2 2 2;3 3 3 3]s=size(A);M=s(1);N=s(2);P=dctmtx(M) %离散余弦变换矩阵Q=dctmtx(N) %离散余弦变换矩阵B=P*A*Q' %离散余弦变换输出结果如下:...原创 2018-12-13 15:20:47 · 2969 阅读 · 0 评论 -
matlab hadamard(哈达玛变换)变换
close all;clear all;clc;%对图像进行Hadamard变换I=imread('peppers.png');I=rgb2gray(I);I=im2double(I);h1=size(I,1); %图像的行h2=size(I,2); %图像的列H1=hadamard(h1); %Hadamard变换矩阵H2=hadamard(h2...原创 2018-12-13 16:59:38 · 11753 阅读 · 2 评论 -
利用matlab写一个简单的拉普拉斯变换提取图像边缘
可以证明,最简单的各向同性微分算子是拉普拉斯算子。一个二维图像函数 f(x,y) 的拉普拉斯算子定义为其中,在 x 方向可近似为同理,在 y 方向上可近似为于是 我们得到满足以上三个公式的两个变量的离散拉普拉斯算子是拉普拉斯变换所对应的滤波器模板为:0 1 0 1 -4 1 0 1 0 使用matlab利用拉普拉斯...原创 2019-03-25 18:59:46 · 7908 阅读 · 0 评论 -
利用中值滤波而不是均值滤波去除椒盐噪声(脉冲噪声)
在去除椒盐噪声方面均值滤波会模糊图像,并且去除效果较差。相比之下,中值滤波能够较好地去除椒盐噪声。我们直接看matlab实现的效果和代码:%这个程序为我们显示了在去除椒盐噪声方面 中值滤波优于均值滤波clear all;close all;clc;I=imread('cameraman.tif');I=im2double(I);J=imnoise(I,'salt & pe...原创 2019-03-24 16:05:32 · 13735 阅读 · 0 评论 -
利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数
clear all;close all;clc;I = imread('rice.png');I = im2bw(I);J = bwperim(I); % 提取二值图像图像边缘figure;subplot(121);imshow(I);title('原二值图像');subplot(122);imshow(J);title('图像边缘');其他提取图像边缘的方法:利用膨...原创 2019-09-05 11:50:49 · 2874 阅读 · 0 评论