Overlapping submatrices/sliding window and vectorization problem
6 次查看(过去 30 天)
显示 更早的评论
Hello experts, I have a colored (RGB) image which I want to do the following:
- For each pixel I need to produce his 10X10 environment/neighbor pixels (lets say the pixel is in the middle) like sliding window. Thus, there will be overlaps of color images and that's what I want.
- For each 10X10 environment (or color image) I need to produce a vector according to a specific logic I have.
- Lastly, I need to save all vectors produced earlier for each pixel in some array/matrix (some structure).
FOR LOOPS are very slow in MATLAB. what you suggest me to do?
3 个评论
Image Analyst
2016-4-12
lavanya, I already gave an answer for this. Did you see it below? Did you run and adapt the demos? Use the one where I define a custom filter. In there you would put a call to graycomatrix().
回答(1 个)
Image Analyst
2015-11-21
I think you haven't given the whole story,that's what I think. Who would want a gigantic list (perhaps 1 to 20 million) of 100 element vectors? What will they be then used for. To just give you the vectors, you can use blockproc(). I have demos. You can also use nlfilter() but that will probably be slower than a for loop.
AND can we dispel the myth that for loops are very slow? I can do a hundred million for loop iterations on my computer in 0.3 seconds. Would you call that slow? That's a lot of iterations in the blink of an eye. Sure, for some operations it can be slower than vectorized solutions but I'd hardly call them VERY SLOW - that's a myth. And most questions I see here do not have anywhere near that number of iterations, not even close.
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!