[英]How can I calculate standard deviation for every block in an image
我正在嘗試使用文檔中的此示例來計算圖像中每個8x8像素塊的標准差,但在這種情況下我不能很好地使用它,因此任何人都可以幫助我為每個塊計算std。
fun = @(block_struct) std2(block_struct.data) * ones(size(block_struct.data))
I2 = blockproc('moon.tif',[8 8],fun);
figure;
imshow('moon.tif');
figure;
imshow(I2 , []);
我懷疑你想nlfilter
(或colfilt
與'sliding'
選項)。 使用blockproc
,它將圖像復制為不重疊的不同塊,並通過復制其計算的標准偏差值以塊形式寫出。 使用nlfilter
它是一個滑動窗口,因此您可以獲得平滑的輸出圖像。
nlfilter
的語法不同,因此可以這樣應用:
Iout = nlfilter(imread('moon.tif'),[8 8],@std2);
另外,您可以使用colfilt
獲得更好的性能:
Iout = colfilt(double(imread('moon.tif')),[8 8],'sliding',@std);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.