[讨论] 影像切割运算 不用循环

楼主: 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