matlab图像学习入门
jiajiadejiali21
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
matlab中由size函数引发的问题
一开始代码如下p=imread('lv.jpg');q=imread('new.png');[m,n]=size(p); %这里q=imresize(q,[m,n]);p=imadd(1/2*p,1/2*q);imshow(p,[]);出现如下错误说是矩阵大小不一样一查m,n,n的大小扩大了3倍一直不明白为什么会这样后来查了查原创 2015-10-16 17:20:11 · 1737 阅读 · 0 评论 -
butterWorth低通滤波器
I=imread('test.jpg');I=rgb2gray(I);imshow(I);figure;[f1 f2]=freqspace(size(I),'meshgrid'); %分隔成网状的区间D=0.4; %截止频率n=1;Hd=ones(size(I)); %用于保存滤波器二维数组r=sqrt(f1.^2+f2.^2); %计算到原点的距离原创 2015-10-29 22:07:57 · 2935 阅读 · 0 评论 -
bp神经网络的简单理解和使用
%%这里构建的网络实际就是建立x到Y的映射函数a=[1:1:10]; %输入矩阵其实就是xt=[1:1:5 6:-1:2]; %期望矩阵就是Yplot(a,t); net=newff(minmax(a),[5,1],{'tansig','purelin'},'trainlm'); %设定网络相关参数net.trainParam.goal=0.001;net原创 2015-11-15 21:10:39 · 503 阅读 · 0 评论 -
Google图片搜索的原理
对于这种图像搜索的算法,一般是三个步骤:1. 将目标图片进行特征提取,描述图像的算法很多,用的比较多的是:SIFT描述子,指纹算法函数,bundling features算法,hash function(散列函数)等。也可以根据不同的图像,设计不同的算法,比如图像局部N阶矩的方法提取图像特征。2. 将图像特征信息进行编码,并将海量图像编码做查找表。对于目标图像,可以对分辨率较大的图转载 2015-10-30 18:32:54 · 596 阅读 · 0 评论 -
bwboundaries函数使用--标记不同的区域
clc;clear all;I=imread('test.jpg');figure;imshow(I);title('原始图像');bw=im2bw(I,graythresh(I)); %图像二值化figure;imshow(bw);title('二值图像');[b,l]=bwboundaries(bw,'noholes'); %搜索物体的外边界 f转载 2015-10-31 16:25:10 · 4262 阅读 · 0 评论 -
matlab使用神经网络实现图像压缩
clc;clear all;I=imread('lv.jpg');I=rgb2gray(I);I=imresize(I,[128,128]);figure;imshow(I);p=[];for i=1:32 %预处理取4*4的字块,最后生成16*1024的矩阵 for j=1:32 I2=I((i-1)*4+1:i*4,(j-1)*4转载 2015-11-15 20:28:03 · 3657 阅读 · 0 评论 -
高通滤波代码
%高通滤波I=imread('lv.jpg');I=rgb2gray(I);[f1,f2]=freqspace(size(I),'meshgrid'); %分割频率空间Hd=ones(size(I));r=sqrt(f1.^2+f2.^2); %计算到原点的rHd(rY=fft2(I);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshi转载 2015-10-30 16:18:36 · 1886 阅读 · 0 评论 -
butter高通滤波
%butterworth高通滤波p=ones(100);q=ones(size(p));d=0.5; %决定漩涡的大小n=2; %决定漩涡的尖点[f1,f2]=freqspace(size(p),'meshgrid');r=sqrt(f1.^2+f2.^2);for i=1:size(p,1) for j=1:size(p,2) t=r(原创 2015-10-30 16:59:50 · 1594 阅读 · 0 评论 -
各种边缘检测算法的比较
%各种边缘检测算法的比较I=imread('lv.jpg');I=rgb2gray(I);I0=edge(I,'sobel');I1=edge(I,'roberts');I2=edge(I,'prewitt');I3=edge(I,'log');I4=edge(I,'canny');I5=edge(I,'zerocross');figure;imshow(I原创 2015-10-30 22:29:06 · 6952 阅读 · 0 评论 -
bwtraceboundary函数的使用
%曲线跟踪,给定搜索起点和搜索方向返回线条坐标数组clc;clear all;rgb=imread('test.jpg');figure;imshow(rgb);title('原始图像');I=rgb2gray(rgb);threashold=graythresh(I); %使用此函数找到最佳阈值bw=im2bw(I,threashold); %使用此阈值将图原创 2015-10-30 23:49:27 · 7187 阅读 · 2 评论 -
imshow函数的复习,在医学图像处理上的应用
imshow函数的调用格式是:imshow(f,g);其中f是一个图像数组,g是一个图像的灰度级数。另一种调用格式是:imshow(f,[low,high])所有小于low的为黑色,所有大于high的显示为白色。可以讲low设置成f的最小值,high设置成图像的最大值,正imshow函数可以显示衣服动态范围较小的图像,对于既有正值又有负值的图像来说非常有用。在医学图像处理上该函数也非常有用。原创 2015-11-17 11:06:39 · 566 阅读 · 0 评论 -
基于灰度的分割
图像分割的基本思想:将高于某一灰度的像素划分到一个区域,将低于某一灰度的像素分到另一个区域,这是基于灰度阈值的分割方法。一下有三种方法:1.直方图阈值法:选择两个峰之间的谷底作为阈值2.自动阈值法:otsu法,使用graythresh自动确定阈值3.分水岭法:将图像灰度看做山的高度,向下降雨,着在谷底会形成积水区,这样由积水区和分水岭找出要分割目标。例:clc;clear原创 2015-11-01 22:19:08 · 2100 阅读 · 0 评论 -
检测出图片中的直线且标记出图片中的最长线段
clc;clear all;I=imread('test.jpg');figure;imshow(I);I=rgb2gray(I);rot1=imrotate(I,33,'crop'); %旋转图像bw=edge(rot1,'canny'); %使用边缘检测形成二值图像[H,T,R]=hough(bw); %生成点的叠加矩阵和坐标T,Rfigure;原创 2015-11-01 17:50:18 · 3123 阅读 · 1 评论 -
pca降维的理论知识
什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样做的好处是使要分析的数据的维度降低了,但是数据的主要信息还能保留下来,并且,这些变换后的维两两不相关!至于为什么?那就接着往下看。在本文中,将会很详细的解答这些问题:PCA、SVD、特征值、奇异值、特征向量这些关键词是怎么联系到一起的?又是如何在一个矩阵上体现出来?它们如何决定着一个矩阵的性质?能不能用一种直观又容易理转载 2016-04-07 15:24:00 · 1690 阅读 · 0 评论 -
对图像高频信号和低频信号的理解
今天开始讲图像了,讲了很多在频域处理的方法,回来复习一下图像的频域。一 、关于图像高频和低频 1.1 对图像高频信号和低频信号的理解 图像中的低频信号和高频信号也叫做低频分量和高频分量。 简单一点说,图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓);图像中的低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地转载 2016-04-08 16:46:19 · 20720 阅读 · 6 评论 -
freqspace
描述 freqspace 返回隐含的频率范围内等间隔的频率响应。创建各种一维和二维的应用程序所需的频率响应时,是有用的。回复举报|3楼2012-10-01 12:21XIAOTIE211吧主9[f1,f2] = freqsp转载 2015-10-29 21:52:31 · 1731 阅读 · 0 评论 -
使用拉普拉斯算子
I=imread('test.jpg'); %使用拉普拉斯算子进行图像锐化h1=[0,-1,0;-1,5,-1;0,-1,0];h2=[-1,-1,-1;-1,9,-1;-1,-1,-1];BW1=imfilter(I,h1); %五领域BW2=imfilter(I,h2); %八领域figure;imshow(uint8(BW1));figure;imsh原创 2015-10-29 19:55:27 · 1119 阅读 · 0 评论 -
matlab实现灰度直方图均匀化
p=imread('test.jpg');figure(1);imshow(p);p=rgb2gray(p); %转换为灰度图像figure(11);imshow(p);figure(2);imhist(p); %显示灰度分布图figure(1234);histgram=zeros(1,256); %灰度统计数组[m,n]=size(p);for i=原创 2015-10-15 17:09:49 · 3013 阅读 · 0 评论 -
imshow函数的一些问题
因为图片过多就不上传图片各位可随便找两张图片查看效果。p=imread('lv.jpg');q=imread('new.png');[m,n,r]=size(p);q=imresize(q,[m,n]);k=imadd(1/2*p,1/2*q,'uint16'); %转化成double合并%-------------uint16-------------------fi原创 2015-10-16 23:08:43 · 2629 阅读 · 0 评论 -
数学形态学运算
数学形态学运算有4个:膨胀,腐蚀,开启和闭合。膨胀:对图像中的目标增加像素,输出图像的像素值是输入图像邻域的最大值。使用imdilate(im,se)函数实现。腐蚀:对图像张的目标去除像素,输出图像的像素值是输入图像邻域的最小值。使用imrode(im,se)函数实现结构元素:实际上就是人为规定的那个邻域由0和1构成目的是为了拼出形状(我自己的理解),只是把有1的计算在邻域内。使用st原创 2015-11-03 11:17:35 · 1606 阅读 · 0 评论 -
MATLAB线性分类器
基本2维公式: d(x)=w1*x1+w2*x2+w3=0; d(x)>0归到第一类 d(x)p=[1:10;1:10]; %前面是x坐标后面是y坐标t=[0 0 0 0 1 1 1 1 1 1]; %分类标记矩阵一个点对应一个坐标点,如0对应(1,1)plotpv(p,t); %使用标记矩阵将p中的点分类标记w=[1,1]; %w1=1,w2=1b=-9; %w3原创 2015-11-07 22:06:00 · 1830 阅读 · 1 评论 -
MATLAB中classify函数的使用
具体的原理不懂,但是希望通过这个例子告诉自己怎么用这个函数%training为训练数组training=[0.056 0.084 0.031 0.038 0.0081 0.022; 0.040 0.055 0.100 0.110 0.0220 0.0073; 0.050 0.074 0.041 0.048 0.007原创 2015-11-08 16:53:43 · 17410 阅读 · 3 评论 -
各种距离
在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 本文的目的就是对常用的相似性度量作一个总结。本文目录:1.欧氏距离2.曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离转载 2015-11-08 17:19:20 · 346 阅读 · 0 评论 -
第一天 图像的显示、保存
读入一张图像并颜色取反,使用两个窗口显示,最后保存。I=imread('lv.jpg');J=255-I; %颜色取反figure(1),imshow(I),title('原始图像'),colorbar;figure(2),imshow(J),title('取反后的图像'),colorbar;imwrite(J,'nihao.jpg');纹理映射.p=im原创 2015-10-11 17:22:28 · 430 阅读 · 0 评论 -
DCT变换
DCT变换:类似傅里叶变换,但只是使用实数。应用:可以把变换后的结果的能量绝大部分集中在前几个最大特征值分量上,最后我们保存高能量部分就可以近似保存图像的基本内容,这就是DCT压缩的直观解释。图像去噪clear all;close all;clc;x=imread('test.jpg');x=rgb2gray(x);[m,n]=size(x);xnois原创 2015-10-27 10:07:40 · 601 阅读 · 0 评论 -
matlab使用小波变换进行图像融合
clc;clear all;X1=imread('cs1.jpg');X1=double(X1)/256; %这里转化成double类型,否则使用小波变换输出的会有大量大于1的存在,会导致图像显示有问题% X1=rgb2gray(X1); %原本以为小波变换只能使用一维的,看来可以使用3维figure;imshow(X1),title('左焦距');axis原创 2015-11-12 09:30:59 · 22335 阅读 · 11 评论 -
补充代码低频和高频的提取
clc;clear all;p=imread('12.jpg');q=imread('21.jpg');p=double(p)/256;q=double(q)/256;imshow(p);figure;imshow(q);figure;[c1,s1]=wavedec2(p,4,'sym4');[c2,s2]=wavedec2(q,4,'sym4');原创 2015-11-12 17:30:49 · 761 阅读 · 0 评论 -
imshow和image的区别
1、显示RGB图像相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的。区别:imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当 的缩放,注意这里只是图像显示的尺寸。2、显示灰度图像说明:先搞明白什么是索引图像?(灰度图像也是索引图像的一种) 当用Matlab中的imread函数将图像读入并存入矩阵时,我们知道如果转载 2015-11-12 17:23:33 · 4641 阅读 · 2 评论 -
使用MATLAB工具wfusimg函数进行图像的融合
x1=imread('cs1.jpg');x2=imread('cs2.jpg');x1=double(x1)/256;x2=double(x2)/256;xfus=wfusimg(x1,x2,'sym4',5,'max','max'); %使用wfusimg函数进行图像的融合,其实就是把对低频和高频的处理封装了。figure;imshow(xfus);效果:原创 2015-11-12 10:00:20 · 7145 阅读 · 1 评论 -
canny算法原理
图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不转载 2015-10-14 19:31:59 · 7570 阅读 · 0 评论 -
图像的锐化和边缘提取
clc;I=imread('test.jpg');I=rgb2gray(I); %灰度化p=fspecial('sobel'); %构造sobel算子BW1=imfilter(I,p); %使用sobel算子进行滤波imshow(BW1); %显示图像figure;BW2=edge(I,'sobel'); %使用sobel进行边缘检测imshow(BW2原创 2015-10-29 19:30:54 · 1665 阅读 · 0 评论 -
直方图均衡化的作用是图像增强原理
直方图均衡化的作用是图像增强。有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条转载 2015-10-14 21:30:10 · 13093 阅读 · 1 评论 -
自己拿傅里叶变换公式实现2维傅里叶变换
今天看了看傅里叶变换的公式想自己实现以下加深映像便于对公式的理解所以写了以下代码,还是挺简单的,以前一直惧怕傅里叶,没想到就这一个公式就搞定了先上代码(MATLAB)clc;a=[1 1 1 1; 1 1 1 1; 1 1 1 1; 1 1 1 1]b=zeros(4);temp=0;for r=1:4 for c=1:4 for w=1:4原创 2016-04-08 17:37:37 · 4185 阅读 · 0 评论
分享