作者su3cl3 (:))
看板MATLAB
標題[討論] 影像切割運算 不用迴圈
時間Fri Apr 22 02:40:31 2016
我要將影像切割成每塊為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
請問大家有辦法可以把迴圈去掉,
不用迴圈的做法嗎?
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.68.167
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1461264034.A.0DF.html
1F:推 sunev: img=squeeze(mean(mean(reshape(X,[m nh m nw 3]),2),4)); 04/22 02:43
2F:推 YoursEver: help blkproc 04/22 10:44
3F:推 at01076172: 我印象中是blockproc, 可能有誤 04/22 12:54
4F:→ YoursEver: 兩個都有,都可用. 04/22 13:31
5F:推 kobenein: 直接用median filter不就好了 04/22 22:50
6F:→ YoursEver: 中位數 != 平均值... 04/23 06:43
7F:推 kobenein: 對齁 用im2col 04/23 12:58
8F:→ at01076172: 請問這種mxm取平均的作法,跟影像resize的概念是一樣 04/23 13:13
9F:→ at01076172: 的嗎?如果是的話,不曉得是否能夠用imresize? 04/23 13:13
10F:→ YoursEver: imresize這個function的本質類似resample,所以會用到 04/23 14:14
11F:→ YoursEver: interpolation,與這個case所需不同. 這個case看起來是 04/23 14:14
12F:→ YoursEver: 比較接近(以常見演算法舉例)LBP的第一步,求local patch 04/23 14:16
13F:→ YoursEver: center的mean. 04/23 14:16
14F:推 at01076172: 喔喔…剛剛去edit imresize果真有interpolation,感謝 04/24 10:55
15F:→ at01076172: 回答。 04/24 10:55