Summation of specific range of 2d array
4 次查看(过去 30 天)
显示 更早的评论
I have a grayscale image image named tumour.
I need to find the area where the intensity is greater than 0.
I have another variable outline showing the outline of original image.
G1 is an empty array.
To find it properly, I have used this code:
for i=1:200
for j=1:200
if((outline(i,j)>0) && sum(sum(tumor(i-5,j-5),tumor(i+5,j+5)))>0)
G1(i,j)=255;
end
end
end
I want to get the outline of only the tumour.
However, I am getting this error (in the sum() part) and I am unable to solve it:
Error using sum
Dimension argument must be a positive integer scalar, a vector of unique positive integers, or 'all'.
0 个评论
采纳的回答
Mehmed Saad
2020-5-12
编辑:Mehmed Saad
2020-5-12
I donot understand what you are trying to do in the code. There are much simpler ways to do it.
By looking in your code i think the error is occuring because your for loop index starts from i=1 and ends at i= 200. When you access i-5 or j-5 it will give error because you are indexing negative values to tumor. SImilarly when your loop reaches end it will try to access 200+5 which is out of bound. So run you for loop from
i=1+5:200-5
&
j=1+5:200-5
Edit:
(tumor(i-5,j-5),tumor(i+5,j+5))
and i think what you are intended to do in this line is accessings tumor's i-5th to i+5th index and j-5th to j+5th index( i.e. total 11x11 elements) . AM i right?
3 个评论
Mehmed Saad
2020-5-12
编辑:Mehmed Saad
2020-5-12
Try to generate 10x10 array from tumor For example tumor(1:10,1:10)
Now try to index it in two for loops of yours such that index doesnot exceed tumor dimension
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Computer Vision with Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!