
clear %清除工作区的所有变量
Filename='flowerbmp'%所要处理的的名称
P=imread(Filename);%导入到matlab内存中
subplot(1,3,1)%创建一个一行三列的显示区,并选中第一个显示区
imshow(P)%在第一个显示区中显示所导入的
P=double(P);%将变量P从uint8数据类型转换到double
[M,N,K]=size(P);%获取的高度、宽度和颜色通道数
Hist(512)=0;%创建一个直方图数据变量,用来统计各像素值经过计算后落入某个区间的个数
%下面是直方图的统计过程
for i=1:M
for j=1:N
%这个计算原理,可能书上有讲,我不了解
Z=floor(P(i,j,1)/32)64+floor(P(i,j,2)/32)8+floor(P(i,j,3)/32);
Hist(Z+1)=Hist(Z+1)+1;%统计落入某区间的个数
end
end
%显示颜色直方图到第二个显示区
subplot(1,3,2)
plot(Hist)
%设定所需要主色调的个数为5
n=5
maincolor(n,3)=0;%初始化主色调像素变量,用来存放主色调像素的值
%下面是取出直方图数据中前五个统计数据最大的区间,并经过换算得到五个主色调像素值
for k=1:n
Mmm=max(Hist);
for z=1:512
if Hist(z)==Mmm
maincolor(k,1)=32floor(z/64);
maincolor(k,2)=32floor(mod(z,64)/8);
maincolor(k,3)=32mod(mod(z,64),8);
Hist(z)=0;
end
end
end
PP(M,N,3)=0;%用主色调表示的变量
Dis(n)=0;%用来判断原图中的每个像素值与各个主色调之间的不相似度
%下面通过某种距离算法,计算出主色调中与原图像素相似度最大的一个色调,并用
%该主色调表示原图中相应的像素,生成用n个主色调表示的图像PP
for i=1:M
for j=1:N
for k=1:n
Dis(k)=abs(P(i,j,1)-maincolor(k,1))+abs(P(i,j,2)-maincolor(k,2))+abs(P(i,j,3)-maincolor(k,3));
end
Mnn=min(Dis);
for k=1:n
if Dis(k)==Mnn
PP(i,j,1)=maincolor(k,1);
PP(i,j,2)=maincolor(k,2);
PP(i,j,3)=maincolor(k,3);
end
end
end
end
%在第三个显示区中显示主色调表示的原图
subplot(1,3,3)
imshow(PP/256)%利用图像的颜色直方图计算图像的颜色数
clear
Filename='2018jpg'
P=imread(Filename);
imshow(P)
pause(2)
P=double(P);
[M,N,K]=size(P);
Hist(512)=0;
for i=1:M
for j=1:N
Z=floor(P(i,j,1)/32)64+floor(P(i,j,2)/32)8+floor(P(i,j,3)/32);
Hist(Z+1)=Hist(Z+1)+1;
end
end
plot(Hist)
hold on
%上面的代码是计算并显示出颜色直方图,与主色调提取时的计算过程一样
colornum=0;
HHH=0;
delta=0005;%直方图中一个区间的像素统计个数占总像素数的比例
KKK=deltaMN;%这个KKK就相当于下图中的红色值,大于红线的颜色被认为是主色调,所以delta越小,主色调数越大
lines=Hist;
lines(:)=KKK;
plot(lines,'r');
hold off
for z=1:512
if Hist(z)>KKK
colornum=colornum+1;
end
end
colornum
a=imread('f:\xxjpg'); %读入原图像文件
I=rgb2gray(a);%彩色图像转黑白,若原图像为黑白的,则不要这一步
J=histeq(I); %对原图像进行直方图均衡化处理
imshow(I); %显示原图像
title('原图像'); %给原图像加标题名
figure;imshow(J); %对原图像进行屏幕控制;显示直方图均衡化后的图像
title('直方图均衡化后的图像'); %给直方图均衡化后的图像加标题名
figure;subplot(121);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排
%两幅图的第1 幅图
imhist(I,64); %将原图像直方图显示为64 级灰度
title('原图像直方图'); %给原图像直方图加标题名
subplot(122); %作第2 幅子图
imhist(J,64); %将均衡化后图像的直方图显示为64 级灰度
title('均衡变换后的直方图'); %给均衡化后图像直方图加标题名
h = findobj(gca,'Type','line')
set(h,'Color','r')
如果是柱形图用
h = findobj(gca,'Type','patch');
set(h,'FaceColor','r')
1、双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。
2、使用直接输入法创建一个数组v :v=[21,17,18,13,15,30,19,12,23,24,25,26,29]; 该数组用来表示直方图的统计数据。
3、使用函数hist(v); 绘制直方图。
4、使用函数title()给直方图添加标题。
5、使用函数xlabel('u')和ylabel('f'); 给坐标轴添加标签,其中直方图的面积表示频率。
6、使用语句grid on; 语句给直方添加坐标分割线,也称为网格线。
7、查看绘制的直方图,注意查看它的标题、坐标轴、网格分割线,注意直方图的面积表示频率。
这里给出转化和直方图的代码 你依葫芦画瓢即可 别说不会哈
rgb=imread('pepperspng');%%%%%%转成RGB颜色空间
R=rgb(:,:,1);
G=rgb(:,:,2);
B=rgb(:,:,3);
figure(1);
subplot(221);imshow(rgb);title('原图像');
subplot(222);imshow(R);title('R分量');
subplot(223);imshow(G);title('G分量');
subplot(224);imshow(B);title('B分量');
直方图,这里演示红色分量的,其他的一样的 ,别说不会哈
%二,绘制直方图
[m,n]=size(R); %红色分量 %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(mn); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure(2);bar(0:255,GP,'g') %绘制直方图
title(''R分量'直方图')
xlabel('灰度值')
ylabel('出现概率')
以上就是关于急求,请帮我解释一下这两段matlab程序每句话代表的意思,提取图像的主色调和颜色数的全部的内容,包括:急求,请帮我解释一下这两段matlab程序每句话代表的意思,提取图像的主色调和颜色数的、如何用MATLAB画直方图,输入图像,出来直方图,我没学过MATLAB,请从使用到输出尽量详细O(∩_∩)O谢谢哎~、matlab 用imhist画直方图时,如何给直方图设置颜色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)