[討論] 影像切割運算 不用迴圈

作者: su3cl3 (:))   2016-04-22 02:40:31
我要將影像切割成每塊為mxm的大小,
然後計算每一塊內每一點RGB的平均
並儲存到img
nh:影像高度(m的倍數)
nw:影像寬度(m的倍數)
X為影像nhxnwx3
程式如下:
for x=1:m:nh
for y=1:m:nw
x1=ceil(x/m);
x2=ceil(y/m);
img(x1,x2,1)=mean(mean(X(x:x+m-1,y:y+m-1,1)));
img(x1,x2,2)=mean(mean(X(x:x+m-1,y:y+m-1,2)));
img(x1,x2,3)=mean(mean(X(x:x+m-1,y:y+m-1,3)));
end
end
請問大家有辦法可以把迴圈去掉,
不用迴圈的做法嗎?
感謝!
作者: sunev (Veritas)   2016-04-22 02:43:00
img=squeeze(mean(mean(reshape(X,[m nh m nw 3]),2),4));
作者: YoursEver (豬是妳)   2016-04-22 10:44:00
help blkproc
作者: at01076172   2016-04-22 12:54:00
我印象中是blockproc, 可能有誤
作者: YoursEver (豬是妳)   2016-04-22 13:31:00
兩個都有,都可用.
作者: kobenein (哈哈哈)   2016-04-22 22:50:00
直接用median filter不就好了
作者: YoursEver (豬是妳)   2016-04-23 06:43:00
中位數 != 平均值...
作者: kobenein (哈哈哈)   2016-04-23 12:58:00
對齁 用im2col
作者: at01076172   2016-04-23 13:13:00
請問這種mxm取平均的作法,跟影像resize的概念是一樣的嗎?如果是的話,不曉得是否能夠用imresize?
作者: YoursEver (豬是妳)   2016-04-23 14:14:00
imresize這個function的本質類似resample,所以會用到interpolation,與這個case所需不同. 這個case看起來是比較接近(以常見演算法舉例)LBP的第一步,求local patchcenter的mean.
作者: at01076172   2016-04-24 10:55:00
喔喔…剛剛去edit imresize果真有interpolation,感謝回答。

Links booklink

Contact Us: admin [ a t ] ucptt.com