资源简介
函数用于直方图匹配
输入:参数一:待匹配的JPG、BMP等标准格式彩色图像;参数二:JPG、BMP等标准格式彩色图像,用于匹配
输出:原始图像、原直方图、匹配(规定化)后的图像、匹配(规定化)后的直方图
返回值:直方图匹配后的灰度图像,进行变换的向量
每一个步骤都提供详细注释
代码片段和文件信息
function [image_out T3] = histmatch(origfiledestfile)
%函数用于直方图匹配
%输入:参数一:待匹配的JPG、BMP等标准格式彩色图像;参数二:JPG、BMP等标准格式彩色图像,用于匹配
%输出:原始图像、原直方图、匹配(规定化)后的图像、匹配(规定化)后的直方图
%返回值:直方图匹配后的灰度图像,进行变换的向量
% Level为灰度级别
% T1 T2分别为输入图像,模板直方图的均衡化用到的变换向量
% T3为输入图像匹配模板直方图用到的变换向量
orig3 = imread(origfile);%orig = uint8(imread(origfile));
dest3 = imread(destfile);
orig = rgb2gray(orig3); %转为灰度图像
dest = rgb2gray(dest3);
level = 256;
[mn] = size(orig);
image_hist = imhist(orig); %得到输入图像的直方图 imhist得到的是256*1的矩阵
image_out = orig;
% 求解T1
ac1 = zeros(level 1);
T1 = zeros(level 1 ‘uint8‘);
ac1(1) = image_hist(1) ; %复制输入图像直方图的第一个数
for i = 2 : level
ac1(i) = ac1(i - 1) + image_hist(i); %累计直方图
end
%ac1 = ac1 * (level - 1);
for i = 1 : 256
T1(i) = uint8(round((ac1(i)) / (m * n)));%归一化累计直方图
end
% 求解T2
ac2 = zeros(level 1);
T2 = zeros(level 1 ‘uint8‘);
dest_hist = imhist(dest); %得到匹配图像的直方图
ac2(1) = dest_hist(1);
for i = 2 : level
ac2(i) = ac2(i - 1) + dest_hist(i); %累计直方图
end
%ac2 = ac2 * (level - 1);
[rc] = size(dest);
for i = 1 : 256
T2(i) = uint8(round((ac2(i)) / r/c)); %归一化累计直方图
end
% 求解T3
% T1映射到T2^(-1)时,若有多个值,选取最小的那个值。
% 产生0 到 255 之间的256个点,即产生012...255的大小为256的数组
temp = zeros(level 1 ‘uint8‘);
T3 = T1;
for i = 1 : 256
for j = 1
相关资源
- 雷达MATLAB仿真171350
- (212)和(317)卷积码编解码的MTAL
- WVD时频代码matlab
- 利用鸢尾花数据进行K均值分类
- 基于matlab的傅里叶频域滤波
- 基于MATLAB深度极限学习机与代码
- 双边高效率冲击电压发生器的matlab仿
- matlab广义回归程序代码
- ap聚类算法MATLAB实现代码
- 图像峰度计算函数matlab
- matlab基于笔记本电脑的摄像头的人脸
- 基于K-means算法的图像分割matlab
- matlab菲涅尔衍射
- 遗传算法优化BP标注清晰matlab
- 基于pso的测试函数Griewank得MATLAB算法代
- 平方根法的matlab实现
- MATLAB代码,用于快速平滑滤波
- MATLAB代码,用于分峰拟合
- 2次B样条曲线和3次B样条曲线的matlab绘
- matlab幅频图
- MATLAB 模糊PID
- chirp信号的用cos函数产生并带详细注释
- 数字全息图像matlab程序
- matlab基于小波变换的图像融合代码
- 广义预测控制MATLAB算法
- matlab guide仿真sir模型
- 3种matlab截取指定区域图片.zip
- MATLAB2018b破解文件
- MATLAB画宁夏地区AOD图
- 光伏电池MATLAB仿真模型
评论
共有 条评论