1. 程式人生 > >MATLAB中RGB影象的各分量灰度直方圖

MATLAB中RGB影象的各分量灰度直方圖

clear;
clc;
f=imread('123.jpg');
[m,n,p]=size(f);   %對於二維陣列來說,它的size是指它的行數和列數;三維陣列是指它的各個維的維度,可以理解為m行,n列和p層,即一共有m*n*p個元素
a=zeros(1,256);  %a為一個1行,256列的全0矩陣
b=zeros(1,256);
c=zeros(1,256);

for i=1:m     %從行開始
    for j=1:n  %每一行的列
        a(f(i,j,1)+1)=a(f(i,j,1)+1)+1;  %f(i,j,1)是紅色通道的值,這個值有0-255的取值,a陣列正好是容量256的陣列,陣列的下標範圍是1開始的,所以要加1

    end

for i=1:m
    for j=1:n
        b(f(i,j,2)+1)=b(f(i,j,2)+1)+1;%G通道
    end
end

for i=1:m
    for j=1:n
        c(f(i,j,3)+1)=c(f(i,j,3)+1)+1;%B通道
    end
end

figure(2),bar(a);
title('紅色分量的灰度直方圖')
xlabel('灰度值')
ylabel('出現個數')

figure(3),bar(b);
title('綠色分量的灰度直方圖')
xlabel('灰度值')
ylabel('出現個數')

figure(4),bar(c);
title('藍色分量的灰度直方圖')
xlabel('灰度值')
ylabel('出現個數')