我想知道怎么用matlab显示三种颜色RGB的直方图,我显示的只有一种颜色
1条回答 默认 最新
关注
代码:
使用的时候改变imread中的图片文件路径即可function HistogramPic pic=imread('test.jpg'); %pic=rgb2gray(pic); FreqNum=zeros(size(pic,3),256); for i=1:size(pic,3) for j=0:255 FreqNum(i,j+1)=sum(sum(pic(:,:,i)==j)); end end ax=gca; hold(ax,'on') if size(FreqNum,1)==3 rBar=bar(0:255,FreqNum(1,:)); gBar=bar(0:255,FreqNum(2,:)); bBar=bar(0:255,FreqNum(3,:)); rBar.FaceColor=[0.6350 0.0780 0.1840]; gBar.FaceColor=[0.2400 0.5300 0.0900]; bBar.FaceColor=[0 0.4470 0.7410]; rBar.FaceAlpha=0.5; gBar.FaceAlpha=0.5; bBar.FaceAlpha=0.5; ax.XLabel.String='RGB brightness'; rrange=find(FreqNum(1,:)~=0); rrange=[num2str(rrange(1)-1),' , ',num2str(rrange(end)-1)]; grange=find(FreqNum(2,:)~=0); grange=[num2str(grange(1)-1),' , ',num2str(grange(end)-1)]; brange=find(FreqNum(3,:)~=0); brange=[num2str(brange(1)-1),' , ',num2str(brange(end)-1)]; legend({['R: range[',rrange,']'],... ['G: range[',grange,']'],... ['B: range[',brange,']']},... 'Location','northwest','Color',[0.9412 0.9412 0.9412],... 'FontName','Cambria','LineWidth',0.8,'FontSize',11); else kBar=bar(0:255,FreqNum(1,:)); kBar.FaceColor=[0.50 0.50 0.50]; kBar.FaceAlpha=0.5; ax.XLabel.String='Gray scale'; krange=find(FreqNum(1,:)~=0); krange=[num2str(krange(1)-1),' , ',num2str(krange(end)-1)]; legend(['Gray: range[',krange,']'],... 'Location','northwest','Color',[0.9412 0.9412 0.9412],... 'FontName','Cambria','LineWidth',0.8,'FontSize',11); end box on grid on ax.LineWidth = 1; ax.GridLineStyle='--'; ax.XLim=[-5 255]; ax.XTick=[0:45:255,255]; ax.XLabel.FontSize=13; ax.XLabel.FontName='Cambria'; ax.YLabel.String='Frequency number'; ax.YLabel.FontSize=13; ax.YLabel.FontName='Cambria'; end
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用 1