求matleb高手,请为我解释下面2段代码,每句都要有注视,一段时直方图均衡化图像增强,另一个是直方图匹配
%%直方图均衡化--图像增强%I=imread('lena.png');I=imread('bean.jpg');imshow(I);figure;imhist(I);[...
%%直方图均衡化--图像增强
% I=imread('lena.png');
I=imread('bean.jpg');
imshow(I);
figure;
imhist(I);
[m,n]=size(I);
hf = zeros(1,256);
pa = zeros(1,256);
I=double(I);
for i = 1:m
for j = 1:n
hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数
end
end
bmap=zeros(1,256);
for i=1:256
temp=0;
for j=1:i
temp=temp+hf(j);
end
bmap(i)=floor(temp*255/(m*n));
end
y=zeros(m,n);
for i=1:m
for j=1:n
y(i,j)=bmap(I(i,j)+1);
end
end
y=uint8(y);
figure;
imshow(y);
figure;
imhist(y);
直方图匹配图像增强
% i=imread('.\bean.jpg');
% i=imread('.\moon.jpg');
i=imread('.\child.tif');
figure(1),imhist(i);title('org hist');
% subplot(3,2,2);
i=im2double(i);
figure(2),imshow(i);title('org img');
r=1:255;
n=1400*r.*[r<=5]+[7000-310*r].*[r>5].*[r<=20]+[900-5*r].*[r>20].*[r<=180]+[8*r-1440].*[r>180].*[r<=225]+[3060-12*r].*[r<=255].*[r>225];
%在0~5处扩1400倍,6~20处从值5140:310:800,21~180处795:5:0,181~225处8:8:360,226~255处348:12:0
% subplot(3,2,5);
ie=histeq(i,n);
ie=ie*255;
ie=uint8(ie);
figure(3),imhist(ie);title('after histogram matching hist');
% subplot(3,2,6);
figure(4),imshow(ie);title('after histogram matching img');
% subplot(3,2,1);
% plot(r,n);title('2 :r ,n fuctoin'); 展开
% I=imread('lena.png');
I=imread('bean.jpg');
imshow(I);
figure;
imhist(I);
[m,n]=size(I);
hf = zeros(1,256);
pa = zeros(1,256);
I=double(I);
for i = 1:m
for j = 1:n
hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数
end
end
bmap=zeros(1,256);
for i=1:256
temp=0;
for j=1:i
temp=temp+hf(j);
end
bmap(i)=floor(temp*255/(m*n));
end
y=zeros(m,n);
for i=1:m
for j=1:n
y(i,j)=bmap(I(i,j)+1);
end
end
y=uint8(y);
figure;
imshow(y);
figure;
imhist(y);
直方图匹配图像增强
% i=imread('.\bean.jpg');
% i=imread('.\moon.jpg');
i=imread('.\child.tif');
figure(1),imhist(i);title('org hist');
% subplot(3,2,2);
i=im2double(i);
figure(2),imshow(i);title('org img');
r=1:255;
n=1400*r.*[r<=5]+[7000-310*r].*[r>5].*[r<=20]+[900-5*r].*[r>20].*[r<=180]+[8*r-1440].*[r>180].*[r<=225]+[3060-12*r].*[r<=255].*[r>225];
%在0~5处扩1400倍,6~20处从值5140:310:800,21~180处795:5:0,181~225处8:8:360,226~255处348:12:0
% subplot(3,2,5);
ie=histeq(i,n);
ie=ie*255;
ie=uint8(ie);
figure(3),imhist(ie);title('after histogram matching hist');
% subplot(3,2,6);
figure(4),imshow(ie);title('after histogram matching img');
% subplot(3,2,1);
% plot(r,n);title('2 :r ,n fuctoin'); 展开
展开全部
%直方图均衡化- -图像增强
I=imread('bean.jpg');
imhist(I);
[m,n]=size(I);
hf = zeros(1,256);
pa = zeros(1,256);%pa下面没用到
I=double(I);%为了计算精确转化为double型
for i = 1:m
for j = 1:n
hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数,取hf(I(i,j)+1)是为了避免出现hf(0)
end
end
bmap=zeros(1,256);
for i=1:256
temp=0;
for j=1:i
temp=temp+hf(j); %计算累积函数,即灰度值在0.0-1,0-2,0-3……0-255上的分布
end
bmap(i)=round(temp*255/(m*n));%根据映射公式,确定映射关系,此步完成的即是直方图的均衡化
end
y=zeros(m,n);
for i=1:m
for j=1:n
y(i,j)=bmap(I(i,j)+1);%根据均衡化后的灰度分布还原出具体每点的灰度值
end
end
y=uint8(y);%转化为unit8数据类型
figure;
imshow(y); %显示均衡化后的图片
figure;
imhist(y);%显示均衡化后的直方图
第二个说的已经很详细了,看一下histeq函数就好
J = histeq(I,n) 将原始图像I的直方图变成用户指定的向量n。n中的各元素的值域为[0,1]。
I=imread('bean.jpg');
imhist(I);
[m,n]=size(I);
hf = zeros(1,256);
pa = zeros(1,256);%pa下面没用到
I=double(I);%为了计算精确转化为double型
for i = 1:m
for j = 1:n
hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数,取hf(I(i,j)+1)是为了避免出现hf(0)
end
end
bmap=zeros(1,256);
for i=1:256
temp=0;
for j=1:i
temp=temp+hf(j); %计算累积函数,即灰度值在0.0-1,0-2,0-3……0-255上的分布
end
bmap(i)=round(temp*255/(m*n));%根据映射公式,确定映射关系,此步完成的即是直方图的均衡化
end
y=zeros(m,n);
for i=1:m
for j=1:n
y(i,j)=bmap(I(i,j)+1);%根据均衡化后的灰度分布还原出具体每点的灰度值
end
end
y=uint8(y);%转化为unit8数据类型
figure;
imshow(y); %显示均衡化后的图片
figure;
imhist(y);%显示均衡化后的直方图
第二个说的已经很详细了,看一下histeq函数就好
J = histeq(I,n) 将原始图像I的直方图变成用户指定的向量n。n中的各元素的值域为[0,1]。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
150元人家都不一定会做,这多费神,况且懂的人还不多。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去相关专业论坛发帖求助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询