Is there any way to make this code better?

Hi, I have this code that draws a rectangle onto an image. However, it is very slow for if I wish to draw multiple rectangles. Is there any better way to draw something onto an image?
function imret = image_dsquare( im, r1, c1, r2, c2, val )
[imr imc] = size(im);
imret = im;
for r = r1:r2
for c = c1:c2
if r >= 1 && r <= imr && c >= 1 && c <= imc
imret(r, c) = val;
end
end
end
end

 채택된 답변

Sean de Wolski
Sean de Wolski 2012년 7월 17일

1 개 추천

imret(max(r1,1):min(r2,imr),max(c1,1):min(c2,imc)) = val;

댓글 수: 3

Qingyang
Qingyang 2012년 7월 18일
Thanks, that did help a lot. But, is there any better (even faster) way of drawing points on an image?
Sean de Wolski
Sean de Wolski 2012년 7월 18일
That is probably as fast as it's going to get for the code you have above...
Why is speed so important? How many time are you actually going to call this? Does it matter if one approach takes a few ten thousanths of a second longer?
Qingyang
Qingyang 2012년 7월 18일
Thanks for your help. I was calling this maybe >1000 times for each run. However, I did come up with another way to draw on the image that was much faster.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by