随机均匀地选择像素

时间:2014-11-02 10:09:50

标签: matlab

我将灰度图像划分为补丁,我需要随机均匀地从每个补丁中选择像素,因此所有补丁的选择方法应该相同。 均匀像素选择在我的项目中至关重要,因为我需要找到每两个像素之间的强度差异。 这是我尝试的代码,但它没有提供所需的结果,因为只有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.“

它适合我的代码案例,我该如何实现它? 谢谢

1 个答案:

答案 0 :(得分:1)

我要做的是用随机值填充1x8矩阵,然后将它们用作索引。然后需要将索引映射到实数x,y值。小心首先使用一维索引。因为你在中心有一个洞,如果你使用随机的x,y值,均匀性会成为一个问题。