2014-11-02 73 views
0

我將灰度圖像分成小塊,我需要隨機均勻地選擇每個小塊的像素,因此所有小塊的選擇方法應該是相同的。 均勻像素選擇對於我的項目,因爲我需要找出每兩個像素之間的強度差異。 這裏是我嘗試的代碼,但由於只有8像素的模式,其中補丁大小爲[90×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 *秒2「。

它適合我的代碼案例,我該如何實現它? 謝謝

+0

你知道這個算法等距隨機分佈嗎? http://bl.ocks.org/mbostock/dbb02448b0f93e4c82c3 – nowox 2014-11-02 10:16:28

+0

您不會在循環中保存'rpix1,2,..,8'中的任何一個,因此您只能從最後一個循環獲取'8'值。 – Rashid 2014-11-02 10:17:09

+0

你的想法是正確的,高斯不是你想要的,但似乎你有一個實現問題。正如Kamtal所說,rpix1..rpix8是什麼?它們不應該與隨機化過程分離嗎? – ypnos 2014-11-02 10:19:28

回答

1

我會做的是用隨機值填充1x8矩陣,然後用它們作爲索引。指數需要映射到實際的x,y值。首先要小心使用一維索引。因爲你在中心有一個洞,所以如果你使用隨機的x,y值,一致性將會成爲一個問題。

+0

請問您能澄清一下我怎樣才能通過實例將隨機值映射到真實的X,Y。謝謝 – user3485941 2014-11-02 18:30:24