2013-11-27 4 views
0

Я хочу подсчитать пиксели на двоичном изображении в строке. Но мне нужно подсчитать все слои, которые у меня есть, и пиксели черные в слое на черном, а белые - белые.Подсчитайте, сколько пикселей находится в двоичном изображении.

Извините за мой английский ... Мой код:

I = rgb2gray(imread('pass_p.png')); 
level = graythresh(I); 
bw = im2uint8(im2bw(I,level)); 

imshow(bw); 
[Nx, Ny] = size(I); 
cP = 0; 
cB = 0; 

%Vectores 
B = zeros(1,9); 
P = zeros(1,9); 
for k = 2:Ny-1 
    index = 1; 
    if(bw(((Nx-1)/2),k) == 0) %preto 
     cP = cP + 1; 
     if(bw(((Nx-1)/2)-1, (k-1)) == 255) 
      B(1,index) = B(1,cB); 
      cB = 0; 
      index = index +1; 
     end 
     end 
     if(bw(((Nx-1)/2),k) == 255) %branco 
      cB = cB + 1; 
     if(bw(((Nx-1)/2)-1, (k-1)) == 0) 
      P(1,index) = P(1,cP); 
      cP = 0; 
      index = index +1; 
     end 
    end 
    end 

Моя цель обнаружить пешеходному. Спасибо за ваше время тратить :)

EDIT

Это пример изображения:

enter image description here

+0

Я действительно не могу понять, что вы после. Не могли бы вы попытаться объяснить себя? – Shai

+0

Задача состоит в том, чтобы подсчитать, сколько слоев у меня черно-белое в двоичном изображении (в моем случае это перекресток), и внутри этих слоев подсчитывается количество пикселей, которые существуют. вы понимаете ? – NatsuDragonEye

+1

Лучше включить ссылку на изображение, чтобы мы могли запускать ваш код. Что вы подразумеваете под слоями? –

ответ

0

Я не уверен, чтобы понять вопрос, но есть что-то подсчитать количество черные пиксели в изображении bw.

I = rgb2gray(imread('pass_p.png')); 

bw = im2bw(I,graythresh(I)); 

figure;imshow(bw); 

[Nx,Ny] = size(bw); 
BlackPixelCount = zeros(Nx,1); 
WhitePixelCount = zeros(Nx,1); 

for it = 1:Nx 
    blackPixel = find(bw(it,:) == 0); 
    BlackPixelCount(it) = size(blackPixel,1); 
    WhitePixelCount(it) = Ny - BlackPixelCount(it); 
end 

РЕДАКТИРОВАТЬ

Это для тупого примера. Поэтому мы ожидаем, что на пути пешеходного перехода будет выбрано только 1 строка или столбец.

v = [1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0]; 
w =[ 1 v 1]; 

InvV = ~v; 

w2 = [1 InvV 1]; 


runs_zeros = find(diff(w)==1)-find(diff(w)==-1); % lenghts of runs of 0's 
runs_ones= find(diff(w2)==1)-find(diff(w2)==-1); % lenghts of runs of 1's 

nbBlackBand = size(runs_zeros,2); 
nbWhiteBand = size(runs_ones,2); 

После этого вы знаете, что у вас есть длина каждой группы и количество групп каждого вида. Возможно, вы можете взять несколько строк в своем изображении и сделать это, чтобы получить среднее значение пикселя для каждой группы. В противном случае у вас всего 1 образец.

+0

Привет, вы алгоритм найти мне весь черный пиксель и белый пиксель, но мне действительно нужно найти последовательность черного пикселя и подсчитать, сколько из них, в слоях seperatly по белым регионам. – NatsuDragonEye

+1

Вот почему я сказал, что не совсем понимаю вопрос. Можете ли вы предоставить тестовое изображение и, возможно, немой пример с малой матрицей? – Vuwox

+0

Я попробую ... подождать litle :) – NatsuDragonEye

Смежные вопросы