f= imread('2.jpg');
I=double(f); [m,n]=size(I);
H=zeros(1,256);
for i=1:m
for j=1:n
H(I(i,j)+1)=H(I(i,j)+1)+1; %求各灰度级的像素数
end
end
s=zeros(1,256);t=zeros(1,256);
for i=1:256
s(i)=H(i)/(m*n); %求各灰度级的频率
% for j=1:i
% t(i)=t(i)+s(j); %求累计频率的和
%end
end
% 原始直方图的累积直方图
histc = cumsum(s);
% 规定直方图的累积直方图
J=imread('p.jpg'); h=rgb2gray(J); g=imhist(h);
matchhist=g/(m*n);
matchhistc = cumsum(matchhist);
N = length(matchhist);
M = double(intmax(class(f))) + 1;
% 映射的实现
tk = zeros(1,M); % 映射关系hist-->tk
%if strcmp(mapl,'SML') 以下为单映射规则(‘SML’)
tk(1) = 1;
linit = 2;
kinit = 0;
for k = 1:M %删除histc(k)=0的单元
if histc(k) == 0
kinit = kinit + 1;
else
break;
end
end
% 标记为SML为零的位置
indis0 = zeros(1,N);
for k = kinit:M
mappingL = zeros(size(matchhist));
% 为节省运算量而修改
for l = linit:N % 规定直方图从上一次最小处计算,节省运算时间
if matchhistc(l) == matchhistc(l - 1); %去掉相等为0的单元
continue;
end
mappingL(l) = abs(histc(k) - matchhistc(l));
if mappingL(l) == 0
indis0(linit) = 1;
end
end
mappingL(N) = abs(histc(k) - matchhistc(N));
indtemp1 = find(mappingL == 0);
indtemp2 = find(indis0 == 1);
mappingL(setdiff(indtemp1,indtemp2)) = inf;
[minmap,tk(k)] = min(mappingL(linit:N));
linit = tk(k) + linit - 1;
tk(k) = linit;
for k = 1:kinit - 1
tk(k) = tk(kinit);
end
end
%规定计算有意义
if N < M
for k = N:M
tk(k) = N;
end
end
histm = zeros(1,N);
for k = 1:M
histm(tk(k)) = histm(tk(k)) + H(k);
end
tk = tk - 1; % 方便灰度值的计算
% 图像的规定化
imagematch = zeros(size(f));
for p = 1:size(f,1)
for q = 1:size(f,2)
ind = f(p,q) + 1;
imagematch(p,q) = tk(ind);
end
end
subplot(321)
imshow(f)
title('原始图像')
subplot(322)
imshow(imagematch)
title('直方图规定化后图像')
subplot(323)
bar(H,'g');
xlabel('灰度值')
ylabel('统计个数');
title('原始直方图')
subplot(324)
bar(histm,'g');
xlabel('灰度值')
ylabel('统计个数');
title(['规定化后直方图'])
subplot(3,2,5),a=rgb2gray(f);g=histeq(a,matchhist);imshow(g);title('图像的规定化');
subplot(3,2,6),a=rgb2gray(f);g=histeq(a,matchhist);h=imhist(g);plot(h),title('图像的规定化直方图');

局外狗
- 粉丝: 84
- 资源: 1万+
最新资源
- APA水平泊车算法与车辆实时控制:Matlab与C++联合仿真路径规划与跟踪算法研究,APA泊车算法详解:Matlab与C++联合仿真实现路径规划与车辆控制,APA水平泊车算法,matlab和C++联
- 学生选课-安卓-基于android的学生选课系统设计与实现
- 基于Matlab的无线充电仿真研究:四套模型解析-LLC谐振恒压输出、LCC-S拓扑磁耦合谐振恒压输出、LCC-P拓扑磁耦合谐振恒流输出及S-S拓扑补偿模型探究,基于Matlab的无线充电仿真研究:
- 基于S7-200 PLC与组态王技术的多维度分拣系统:大小、颜色、材质与形状的智能识别与处理No.883,基于S7-200 PLC与组态王控制的大小球颜色材质分拣系统技术实现与优化研究(No.883)
- 垃圾分类-WeChat-基于微信小程序的垃圾分类设计与实现(毕业论文)
- Screenshot_20250219_200245.jpg
- S7-200 PLC在变电站变压器自动化中的高级应用:No.1219案例分析,S7-200 PLC在变电站变压器自动化中的关键应用:No.1219的实践与探索,No.1219 S7-200 PLC在变
- 基于LQR控制算法的四轮独立电驱车辆横向稳定性控制研究:双移线工况仿真与PID及无控车辆对比,基于LQR控制算法的四轮独立电驱汽车横向稳定性控制研究:双移线工况仿真与PID及无控车辆对比,适用方向:基
- 基于银河麒麟桌面&服务器操作系统的DeepSeek本地化部署方法.pdf
- 电子科技大学毕设设计论文LaTeX模板-UESTCthesis
- 零担物流智慧管理-WeChat-基于微信小程序的零担物流智慧管理平台设计(毕业论文)
- 基于高温流变与热加工过程的材料本构模型研究-真应力-真应变关系、本构方程参数拟合与动态再结晶行为的探究,材料热加工工艺中的真应力-应变分析与本构模型构建-探究高温流变特性及功率耗散因子计算,高温流
- 新版骆驼IPTV小肥米iptv管理系统全开源源码可对接EZtv电视直播管理系统.zip
- https://upload.csdn.net/creation/uploadResources?spm=1011.2124.3001.5646
- 云开发高效学习微信小程序源码共享平台.zip
- 基于Simulink的模块化多电平变换器MMC仿真解析:从交流380V到直流800V的整流过程,附搭建指南、原理出处与PCB电路设计实践,模块化多电平变换器MMC仿真详解:从原理到实践,电力电子交直流
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


