Niestety, nikt nie powie Ci czym jest FluxBB - musisz go poznać sam!
Nie jesteś zalogowany na forum.
GPL v3 License ; >
function [ histR histG histB histGR histcumR histcumG histcumB histcumGR] = licz_histogramy(A,windowSize)
% Funkcja zwraca histogramy osobno dla kanałów R,G,B, w skali szarosci
% Funkcja zwraca histogramy takze kumulacyjne, dla takich samych kanalow
% jak zwykle.
% Podajac rozmiar okna ronzy od zera uzyskamy filtrowanie filtrem
% moving-average o podanej szerokosci okna.
%
% Histograms for channels R, G, B:
%kanal 1 R
histR(1:256,1)=0;
imgv=A(:,:,1); imgv=imgv(:);
for i=1:length(imgv)
histR(imgv(i)+1)=histR(imgv(i)+1)+1;
end
%kanal 1 G
histG(1:256,1)=0;
imgv=A(:,:,2); imgv=imgv(:);
for i=1:length(imgv)
histG(imgv(i)+1)=histG(imgv(i)+1)+1;
end
%kanal 1 B
histB(1:256,1)=0;
imgv=A(:,:,3); imgv=imgv(:);
for i=1:length(imgv)
histB(imgv(i)+1)=histB(imgv(i)+1)+1;
end
% Histogram for image in grayscale:
B = cv.cvtColor(A,'RGB2GRAY');
histGR(1:256,1)=0;
imgv=B(:,:); imgv=imgv(:);
for i=1:length(imgv)
histGR(imgv(i)+1)=histGR(imgv(i)+1)+1;
end
% Cumulative histograms:
histcumGR=histGR;
histcumR=histR;
histcumG=histG;
histcumB=histB;
for i=2:size(histcumGR,1)
histcumGR(i)=histcumGR(i)+histcumGR(i-1);
end
for i=2:size(histcumR,1)
histcumR(i)=histcumR(i)+histcumR(i-1);
end
for i=2:size(histcumG,1)
histcumG(i)=histcumG(i)+histcumG(i-1);
end
for i=2:size(histcumB,1)
histcumB(i)=histcumB(i)+histcumB(i-1);
end
% Simple filtering is done:
if windowSize ~= 0
b = (1/windowSize)*ones(1,windowSize);
a = 1;
histR = filter(b,a,histR);
histG = filter(b,a,histG);
histB = filter(b,a,histB);
histGR = filter(b,a,histGR);
end
%To jest end funkcji
end
Offline