急求,请帮我解释一下这两段matlab程序每句话代表的意思,提取图像的主色调和颜色数的

急求,请帮我解释一下这两段matlab程序每句话代表的意思,提取图像的主色调和颜色数的,第1张

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画直方图时,如何给直方图设置颜色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9546779.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存