2014-11-02 3 views
0

У меня есть серое изображение, разделенное на патчи, мне нужно выбирать пиксели из каждого патча случайным образом и равномерно, поэтому метод выбора должен быть одинаковым для всех патчей. выбор однородного пикселя имеет решающее значение для мой проект, поскольку мне нужно будет найти разницу в интенсивности между каждыми двумя пикселями. вот код, который я стараюсь, но это не дает нужного результата, как только 8 пикселей выбирается, когда размер заплаты [90 X 100]выбор пикселей случайным образом и равномерно

I = imread('0001hv1.bmp'); 
Rpix = zeros(size(I)); 
[m n] = size(I); 
for i = 2:m-1 
    for j = 2:n-1 
    switch randi(8,1,1) 
    case 1 
     rpix1 = I(i-1,j-1); 
    case 2 
     rpix2 = I(i-1,j); 
    case 3 
     rpix3 = I(i-1,j+1); 
    case 4 
     rpix4 = I(i,j-1); 
    case 5 
     rpix5 = I(i,j+1); %skip i,j as that is the pixel itself 
    case 6 
     rpix6 = I(i+1,j-1); 
    case 7 
     rpix7 = I(i+1,j); 
    case 8 
     rpix8 = I(i+1,j+1); 
    end 
    %rpix(i,j) = rpix ; 

end 
end 
im_sub1 = rpix1 - rpix2; 
im_sub2 = rpix3 - rpix4; 
im_sub3 = rpix5 - rpix6; 
im_sub4 = rpix7- rpix8; 

Я читал о гауссовском распределении, где идея предложена является: «X и Y случайным образом дискретизируются с использованием распределения Гаусса, где сначала X отбирается со стандартным отклонением 0,04 * S^2, а затем Yi выбираются с использованием распределения Гаусса. Каждый Yi отбирается со средним Xi и стандартным отклонением 0,01 * S^2 «.

подходит ли он для моего кода и как его реализовать? спасибо

+0

Вы знаете этот алгоритм для эквидистантного случайного распределения? http://bl.ocks.org/mbostock/dbb02448b0f93e4c82c3 – nowox

+0

Вы не сохраняете ни одного из'rpix1,2, .., 8' в цикле, поэтому вы получаете только значения «8» из последнего цикла. – Rashid

+0

Ваша идея правильная, Гаусс не то, что вы хотите, но, похоже, у вас есть проблема с реализацией. Как отметил Камтал, что это такое с rpix1..rpix8? Разве они не должны быть отделены от процесса рандомизации? – ypnos

ответ

1

Что бы я сделал, это заполнить матрицу 1x8 со случайными значениями, а затем использовать их как индексы. Затем индексы должны быть сопоставлены с вещественными значениями x, y. Будьте осторожны, сначала используйте одномерный индекс. Поскольку у вас есть отверстие в центре, однородность будет проблемой, если вы будете использовать случайные значения x, y.

+0

Не могли бы вы прояснить, как я могу сопоставить случайное значение с реальным X, Y на примере. Спасибо – user3485941

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