【谷速软件】matlab源码-直方图匹配

合集下载

MATLAB直方图匹配

MATLAB直方图匹配

MATLAB直⽅图匹配 直⽅图匹配或叫做直⽅图规定化都可以,是把原图像的直⽅图按照给定的直⽅图加以映射,使新图像的直⽅图的分布类似于给定的函数。

总共有以下⼏步: 1.求给定的函数的累积直⽅图s。

2.求原图像的累积直⽅图G。

3.求s中每⼀个值在G中距离最⼩的位置index。

4.求原图像每个像素通过index映射到的新像素的值。

代码如下:1 clear all;2 close all;3 clc;45 r=127;6 x=-r:r+1;7 sigma=20;8 y1=exp(-((x-80).^2)/(2*sigma^2));9 y2=exp(-((x+80).^2)/(2*sigma^2));10 y=y1+y2; %双峰⾼斯函数,任意函数都可以1112 %im=imread('bg.bmp'); %匹配⼀个图像的直⽅图13 %y=imhist(im);14 y=y/sum(y); %归⼀化,使函数符合概率分布的sum(y)==1这样⼀个规律15 plot(y); %待匹配的直⽅图1617 G=[]; %函数的累积直⽅图18for i=1:25619 G=[G sum(y(1:i))];20 end2122 img=imread('lena.jpg');23 [m n]=size(img);24 hist=imhist(img); %待处理图像的直⽅图25 p=hist/(m*n);26 figure;plot(p) %原图直⽅图2728 s=[]; %待处理图像的累积直⽅图29for i=1:25630 s=[s sum(p(1:i))];31 end3233for i=1:25634 tmp{i}=G-s(i);35 tmp{i}=abs(tmp{i}); %因为要找距离最近的点,所以取绝对值36 [a index(i)]=min(tmp{i}); %找到两个累积直⽅图距离最近的点37 end3839 imgn=zeros(m,n);40for i=1:m41for j=1:n42 imgn(i,j)=index(img(i,j)+1)-1; %由原图的灰度通过索引映射到新的灰度43 end44 end4546 imgn=uint8(imgn);47 figure;imshow(imgn)48 figure;plot(imhist(imgn)) %新图的直⽅图效果如下:给定的直⽅图原图原图直⽅图变换后的直⽅图最后的结果。

直方图均衡化及matlab实现

直方图均衡化及matlab实现

直⽅图均衡化及matlab实现在处理图像时,偶尔会碰到图像的灰度级别集中在某个⼩范围内的问题,这时候图像很难看清楚。

⽐如下图:它的灰度级别,我们利⽤⼀个直⽅图可以看出来(横坐标从0到255,表⽰灰度级别,纵坐标表⽰每个灰度级别的像素出现个数)可以看出,上图是由于灰度级过于集中,导致图⽚难以看清。

这时候我们可以把灰度级别“拉开”,使得灰度级多且分布均匀,让图⽚具有⾼对⽐度和多变的灰度⾊调。

那么如何拉开才能使得灰度级别占据从0到255的整⼀个范围呢?我们可以先利⽤概率,计算出原图中每⼀个灰度级别的像素个数占所有像素个数的⽐例,然后⽐例逐个灰度级别地累加,接着把累加⽐例乘以256,得出该灰度级别“拉开”之后应该在哪⼀个级别。

举⼀个例⼦,假设⼀张图⽚像素点对应的矩阵为f=[100,100,100,100,100;110,110,110,110,110;120,120,120,120,120;130,130,130,130,130;140,140,140,140,140];那么我们可以看到灰度级别为100的像素个数的⽐例为1/5,那么现在灰度级别应该改为round(1/5*256-1)。

之所以-1是因为灰度级从0到255,取整是因为灰度级均为整数。

接下来110所占⽐例也是1/5,累加⽐例变成2/5,所以灰度级别应该是round(2/5*256-1)。

120对应的累加⽐例为3/5,就应该是round(3/5*256-1)……如此,就可以把灰度级拉开。

拉开后直⽅图如下:最后效果如下最后附上matlab代码:clear all;clc;close all;f=imread('zftjhh1.jpg');[m,n,d]=size(f);%灰度图1维,彩⾊图3维if d==1f1=f;%复制后新的图⽚f1,作为改变后的图⽚elseif d==3f=rgb2gray(f);f1=f;endfigureimhist(f)[count,x]=imhist(f);%count表⽰每个灰度级别有多少个像素,x表⽰有多少个灰度级别PDF=count/(m*n);%PDF表⽰每个灰度级别出现的概率,⼀共有256⾏CDF=cumsum(PDF);%CDF表⽰逐⾏相加的概率,也就是累加概率for i=1:256xiangsuxushu=find(f==i);%原本灰度级别为i的像素在第⼏位changdu=length(xiangsuxushu);for j=1:changduf1(xiangsuxushu(j))=round(CDF(i)*256-1);%每⼀个原本灰度级别为i的像素,%灰度级别改为累加出现概率*256%再取整endendfigureimhist(f1)figureimshow(f1)有做得不完善的地⽅欢迎留⾔探讨!。

Matlab实现直方图规定化

Matlab实现直方图规定化

Matlab实现直⽅图规定化直⽅图规定化算法分析1. 求出原图的累积概率分布2. 求出规定图的累积概率分布3. 求出原图中每⼀个灰度级累积概率与规定图的累积概率最接近的灰度级4. 根据第3步的⽅法将原图的灰度映射到标准图中距离最近的灰度值伪代码function outputimg = my_histspec(A,B)% 灰度图的直⽅图规定化% 输⼊:A是读⼊的原图,B是读⼊的规定化的标准图% 输出:outputimg是将A规定化到B之后的图像[HA,WA] = 原图的⼤⼩[HB,WB] = 标准图的⼤⼩统计原图灰度级频数统计标准图灰度级频数计算原图灰度级概率计算标准图灰度级概率计算原图灰度级累积概率分布计算标准图灰度级累积概率分布%求原图和标准图的映射关系,找到两个累积概率最接近的灰度级遍历原图的每个灰度级value{j} = 求标准图当前灰度级累积概率与原图所有灰度级累积概率之差的绝对值[temp{j},index(j)] = index中存的是vlaue中最⼩值的下标outputimg = 开辟⼀个和原图⼤⼩⼀致的新矩阵存放规定化后的图像遍历outputimgoutputimg(i,j) = 根据映射关系为每⼀个新矩阵的像素点赋灰度值转换outputimg成uint8数据类型end代码function outputimg = my_histspec(A,B)% 灰度图的直⽅图规定化% 输⼊:A是读⼊的原图,B是读⼊的规定化的标准图% 输出:outputimg是将A规定到B之后的图像[HA,WA] = size(A);[HB,WB] = size(B);PA = imhist(A) / (HA * WA);PB = imhist(B) / (HB * WB);%求累积概率分布for i = 2 : 256PA(i) = PA(i - 1) + PA(i);PB(i) = PB(i - 1) + PB(i);end%求原图和映射图的映射关系,找到两个累积直⽅图距离最近的点for j = 1:256value{j} = abs(PB - PA(j));[temp{j},index(j)] = min(value{j}) %index中存的是最⼩值的下标,temp中存的是最⼩值endoutputimg = zeros(HA, WA);for i = 1:HAfor j = 1:WAoutputimg(i,j) = index(A(i,j) + 1)-1;endendoutputimg = uint8(outputimg);end实验结果%调⽤⽰例:A = imread('pout.tif');B = imread('coins.png');C = my_histspec(A,B);subplot(2,3,1);imshow(A);title('原图');subplot(2,3,2);imshow(B);title('标准图');subplot(2,3,3);imshow(C);title('匹配到标准图后');subplot(2,3,4);imhist(A);title('原图直⽅图');subplot(2,3,5);imhist(B);title('标准图直⽅图');subplot(2,3,6);imhist(C);title('匹配到标准图后直⽅图');实验分析直⽅图均衡化是直⽅图规定化的特例,理想状态下原图直⽅图均衡化和标准图均衡化后对应的直⽅图应该是相等的,通过求得原图累积概率和标准图累积概率最接近的灰度值映射,最后的效果是原图的直⽅图和标准图的直⽅图接近。

Matlab中的图像特征提取与匹配技术

Matlab中的图像特征提取与匹配技术

Matlab中的图像特征提取与匹配技术引言图像特征提取与匹配技术是计算机视觉领域中一项重要的技术,它广泛应用于图像处理、物体识别、目标跟踪等领域。

而在Matlab中,也提供了许多强大的函数和工具箱来支持图像特征提取与匹配。

本文将介绍Matlab中的一些常用的图像特征提取与匹配技术及其应用。

一、图像特征提取1. 颜色特征提取颜色是图像中最直观的视觉特征之一,对于图像分类和目标识别起着重要的作用。

在Matlab中,我们可以通过颜色直方图、颜色矩等统计方法来提取图像的颜色特征。

2. 纹理特征提取纹理是图像中的重要特征之一,可以用来描述物体的表面细节。

Matlab提供了丰富的纹理特征提取函数,比如灰度共生矩阵(GLCM)、局部二值模式(LBP)等。

这些函数可以帮助我们从图像中提取出不同尺度和方向的纹理特征。

3. 形状特征提取形状是图像中物体的几何外形,是图像特征中最常用的特征之一。

Matlab中可以使用边缘检测算法(如Canny边缘检测)来提取图像中的边缘信息,然后通过边缘描述子(如形状上下文)来提取图像的形状特征。

4. 尺度不变特征提取尺度不变特征是一种具有尺度不变性的图像特征,可以有效应对图像中物体的尺度变化。

在Matlab中,我们可以使用尺度不变特征变换(SIFT)算法来提取图像的尺度不变特征。

SIFT算法通过检测关键点和计算局部特征描述子,能够在不同尺度下对图像进行特征提取。

二、图像特征匹配1. 特征点匹配特征点匹配是图像特征匹配的一种常用方法,通过寻找两幅图像中相同或相似的特征点,来实现图像匹配和目标检测。

在Matlab中,我们可以使用SURF(加速稳健特征)算法或者基于特征距离的匹配算法(如欧氏距离、汉明距离等)来进行特征点的匹配。

2. 相似性度量相似性度量是图像特征匹配中另一种常见的方法,它通过计算两幅图像特征之间的相似度来实现图像匹配。

在Matlab中,我们可以使用余弦相似度、欧氏距离等数学公式来度量图像特征的相似性。

如何使用MATLAB进行图像匹配与检索

如何使用MATLAB进行图像匹配与检索

如何使用MATLAB进行图像匹配与检索引言图像匹配与检索是图像处理和计算机视觉领域中的重要任务,其应用涵盖了人脸识别、图像搜索、智能监控等众多领域。

而MATLAB作为一款强大的数学计算和图像处理软件,提供了丰富的工具和函数,便于进行图像匹配与检索的研究与实践。

本文将介绍如何使用MATLAB进行图像匹配与检索的基本原理、方法以及示例应用。

一、图像匹配与检索的基本原理1.1 图像匹配图像匹配指的是在给定图像数据库中,找出与查询图像最相似的图像。

其基本原理是通过衡量图像间的相似度来进行匹配。

常用的相似度度量方法包括结构相似性指数(SSIM)、均方误差(MSE)、归一化互相关系数(NCC)等。

在MATLAB中,可以使用imfilter函数对图像进行滤波操作,并使用相关函数计算图像的相似度。

1.2 图像检索图像检索指的是根据查询图像的特征,从图像数据库中检索出相似的图像。

其基本原理是提取图像的特征,并根据特征之间的相似度进行检索。

常用的图像特征包括颜色直方图、边缘特征、纹理特征等。

在MATLAB中,可以使用histogram 函数对图像进行直方图特征提取,并使用特征匹配算法(如最近邻算法)进行图像检索。

二、图像匹配与检索的方法和实现2.1 图像匹配方法图像匹配方法包括基于特征点的匹配和基于全局特征的匹配。

前者是通过检测图像中的关键点,提取关键点的局部特征,然后通过寻找匹配点来实现图像匹配。

后者是通过提取图像的全局特征,比如颜色、纹理等信息,然后计算图像之间的相似度进行匹配。

在MATLAB中,可以使用SURF算法提取图像的特征点,或者使用Bag of Words(BoW)模型提取图像的全局特征,并通过最近邻算法进行匹配。

2.2 图像检索方法图像检索方法主要包括基于内容的检索和基于语义的检索。

前者是通过提取图像的低级视觉特征,比如颜色、形状等,然后根据相似度进行检索。

后者是通过利用机器学习和自然语言处理技术,将图像关联到语义标签,然后根据语义标签进行检索。

用MATLAB统计图像直方

用MATLAB统计图像直方

02
imhist(I); % 计算并显示归一化直方图
03
```
04
直方图均衡化
直方图均衡化的定义
直方图均衡化是一种图像处理技术, 通过对图像的灰度直方图进行变换, 改善图像的对比度,增强图像的细节 和清晰度。
通过扩展图像的灰度级别范围,使得 图像的细节更加突出,提高图像的可 视化效果。
Matlab实现直方图均衡化
01 使用Matlab中的`histeq`函数,可以对图 像进行直方图均衡化处理。
02 首先,读取图像文件并将其转换为灰度图 像。
03
然后,使用`histeq`函数对灰度图像进行直 方图均衡化处理。
04
最后,显示处理后的图像。
直方图均衡化的效果
01
02
03
直方图均衡化可以显著 改善图像的对比度,增 强图像的细节和清晰度
彩色图像直方图
示例代码
1
```matlab
2
3
I = imread('image.jpg'); % 读取彩色图像
彩色图像直方图
imhist(I); % 计算并显示彩色直方图 ```
归一化直方图
归一化直方图
归一化直方图是一种将像素值范围限制在特定范围内的直方图,可以更好地反映图像的细节和特征。 在Matlab中,可以使用`imhist`函数计算归一化直方图。
直方图可以用于提取图像中的特征,如边缘、纹理等,也可以用于 图像分割,将图像划分为不同的区域。
直方图的计算方法
01
累积直方图
02
归一化直方图
首先计算原始直方图,然后将每个像 素强度值的频数累加起来,得到累积 直方图。累积直方图可以用于快速查 找特定像素强度值的范围。

图像的直方图均衡、匹配及图像分割【数字图像处理大作业】

数字图像处理—————————————————————————————Porject3:图像的直方图均衡、匹配及图像分割摘要:本文利用matlab的编程,绘出图像的直方图。

本文用了一般的直方图均衡和自适应的直方图均衡的算法分别对各个直方图进行均衡,得到了不同的效果。

本文讨论了单映射规则和组映射规则的直方图匹配技术。

本文采用了一般的直方图图像分割技术对图像进行分割,同时还讨论了一种基于梯度的直方图阈值图像分割技术。

2012 年4 月12 日星期四项目题目:共10 幅经变亮或者变暗处理的源图像;要求:1.把附件图像的直方图画出;2.把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;3.进一步把图像按照对源图像直方图的观察,各自指定不同源图像的直方图,进行直方图匹配,进行图像增强;4.利用直方图对图像elain和woman 进行分割;技术分析1. 画出附件的直方图,先利用读取图像数据的函数将图像的数据点读取出来,然后再对数据点的值进行排序,然后再统计每个灰度值出现的次数,然后再用这些数据值绘出直方图2. 把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;先说说直方图均衡的原理:从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它是对图像中每一灰度值出现频率的统计,从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。

灰度直方图性质:①表征了图像的一维信息。

只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。

②与图像之间的关系是多对一的映射关系。

一幅图像的直方图基本上可描述图像的概貌,如图像的阴暗状况和对比度等特征都可以通过直方图反映出来。

既然一幅图像的概貌可以通过直方图反映出来,反之,可以通过修改直方图的方法来调整图像的灰度分布情况,因为直方图反映的是一个图像的灰度值的概率统计特征,所以,基于直方图的图像增强技术是以概率统计学理论为基础的,直方图反映的是一个图像的灰度值的概率统计特征。

MATLAB技术图像匹配方法

MATLAB技术图像匹配方法引言图像匹配是计算机视觉领域的一项重要任务,它可以实现在不同图像中寻找相似的区域或物体。

在许多应用中,图像匹配被用于目标跟踪、图像拼接、三维模型重建等。

MATLAB作为一款强大的数值计算与图像处理工具,提供了丰富的算法和函数库,使得图像匹配成为可能。

本文将介绍一些常用的MATLAB技术图像匹配方法。

一、特征点检测与描述在进行图像匹配前,首先需要检测图像中的特征点,并对其进行描述。

特征点是图像中具有显著性的、在不同图片中容易被区分的点。

在MATLAB中,有许多方法可以实现特征点检测与描述。

常用的方法有角点检测及SIFT(尺度不变特征变换)算法。

1. 角点检测角点是图像中两条边缘线交叉处的点,具有很好的区分性和不变性。

MATLAB 中的corner函数可以快速实现角点的检测。

通过调整参数,如角点的最小强度、角点邻域半径等,可以获取不同数量和质量的角点。

2. SIFT算法SIFT算法是一种具有尺度不变性的特征点检测与描述算法。

它可以在不同尺度上检测图像中的关键点,并为每个关键点计算其特征向量。

MATLAB中提供了vlfeat库,其中包含了SIFT算法的实现。

通过调用库中的函数,可以方便地进行SIFT特征的提取与描述。

二、特征点匹配特征点匹配是指在两幅图像中找到相互对应的特征点。

在实际应用中,由于图像中可能存在噪声、遮挡等因素,使得特征点匹配变得复杂。

在MATLAB中,有多种方法可以实现特征点匹配,如基于距离和基于几何约束的方法。

1. 基于距离的匹配基于距离的匹配方法是根据特征向量之间的距离来判断特征点的相似性。

常用的距离度量方法有欧式距离、余弦相似度等。

MATLAB中的pdist函数可以方便地计算特征向量之间的距离,并通过设定阈值来判断两个特征点是否匹配。

2. 基于几何约束的匹配基于几何约束的匹配方法是根据特征点之间的几何关系来判断特征点的匹配性。

常用的几何约束包括基础矩阵、单应矩阵等。

Matlab中的图像比对和图像匹配技术

Matlab中的图像比对和图像匹配技术在现代科技的发展中,图像处理技术在各个领域均得到了广泛应用。

其中,图像比对和图像匹配技术是图像处理中的重要组成部分。

在Matlab中,我们可以通过各种函数和工具箱实现不同类型的图像比对和图像匹配任务。

本文将介绍Matlab中的图像比对和图像匹配技术,并探讨其在实际应用中的一些潜在问题。

一、图像比对技术图像比对技术主要用于判断两幅图像之间的相似程度。

在Matlab中,可以通过计算图像的相似性指标来实现图像比对。

常用的相似性指标包括均方差(MSE)、峰值信噪比(PSNR)、结构相似性指数(SSIM)等。

首先,我们来介绍均方差(MSE)指标。

MSE指标是通过计算两幅图像的像素之间的差值平方的平均值来衡量两幅图像之间的相似程度。

在Matlab中,可以使用imabsdiff函数计算两幅图像的差值,然后使用mean函数计算均方差。

同样重要的是峰值信噪比(PSNR)。

PSNR是通过计算两幅图像之间的峰值信噪比来衡量它们之间的相似程度。

在Matlab中,可以使用imread函数读入图像,然后计算两幅图像之间的PSNR值。

除了MSE和PSNR,还有一种常用的相似性指标是结构相似性指数(SSIM)。

SSIM是通过比较两幅图像的亮度、对比度和结构来评估它们之间的相似性。

在Matlab中,可以使用ssim函数计算两幅图像之间的SSIM值。

二、图像匹配技术图像匹配技术用于在两幅或多幅图像中找到相似的部分。

在Matlab中,我们可以使用不同的特征描述算法和匹配算法来实现图像匹配。

特征描述算法是用于提取图像中的特征点的算法。

常用的特征描述算法包括尺度不变特征变换(SIFT)、加速稳健特征提取器(SURF)和高级LBP特征(HOG)等。

在Matlab中,可以使用extractFeatures函数来提取图像中的特征点,并得到特征描述子。

然后,我们可以使用匹配算法来将提取的特征描述子进行匹配。

Matlab中的图像配对和立体视觉分析技巧

Matlab中的图像配对和立体视觉分析技巧Matlab作为一款功能强大的科学计算软件,广泛应用于图像处理和计算机视觉领域。

本文将介绍Matlab中的图像配对和立体视觉分析技巧,帮助读者深入了解和运用这些技术。

一、图像配对技巧图像配对是指将两个或多个图像进行匹配、对齐或比较的过程。

在计算机视觉和图像处理领域,图像配对是一项基本任务,应用广泛。

而Matlab提供了许多强大的函数和工具箱来实现图像配对。

首先,图像预处理是图像配对的关键步骤。

在Matlab中,可以使用imread函数读取图像,并使用imresize函数进行图像大小的调整。

此外,还可以使用imadjust函数进行图像的亮度、对比度调整,以便更好地进行后续处理。

其次,Matlab提供了多种图像配对算法,如最小二乘法、局部敏感哈希(LSH)和支持向量机(SVM)等。

其中,最小二乘法是一种常用的线性回归方法,可以用于图像的几何校正和配准。

而LSH和SVM则主要用于图像的相似性匹配和分类。

另外,Matlab还提供了一些特征提取和匹配函数,如Harris角点检测、SIFT特征提取和RANSAC算法等。

这些函数可以帮助用户从图像中提取关键特征,并找到图像之间的对应关系,从而实现图像配对。

最后,Matlab还支持通过可视化展示来进行图像配对结果的分析和评估。

用户可以使用imshow函数显示图像,使用plot函数绘制关键特征点,并使用imblend函数将配对结果进行融合。

此外,还可以使用imhist函数绘制图像的直方图,用于对比不同图像之间的差异。

二、立体视觉分析技巧立体视觉分析是指通过两个或多个视觉传感器获取的图像,计算出相应物体的三维信息的过程。

在Matlab中,也提供了许多用于立体视觉分析的函数和工具箱,帮助用户实现立体视觉处理。

首先,图像校正是立体视觉分析的基础步骤。

在Matlab中,可以使用stereoRectify函数进行图像的校正,从而消除因视角不同而引起的畸变和误差。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档