Borrar filtros
Borrar filtros

Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

CAN ANY ONE TELL ME WHAT IS THIS PART OF CODE DOING??

1 visualización (últimos 30 días)
Ayesha ayub
Ayesha ayub el 8 de Dic. de 2014
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021

Respuestas (1)

Guillaume
Guillaume el 8 de Dic. de 2014
Editada: Guillaume el 8 de Dic. de 2014
This badly written code recolour a rectangle of 4 rows by 8 column above the centroid of the largest objects. The red and green channels of that rectangle are set to 0, the blue is set to 255.
I say badly written since none of the for loops are required (the second one is particularly absurd). The first loop could just be replaced with:
[armax, armaxloc] = max(ar);
%no need to calculate mx (which by the way is just mx = numel(ar))
centroid = stats(armaxloc).Centroid;
The second loop is just:
i_aft(y-4:y, x-4:x+4, [1 2]) = 0; %set red and green channel to 0
i_aft(y-4:y, x-4:x+4, 3) = 255; %set blue channel to 255
Note that the above, just like the original code will give an error if the centroid is less than 4 pixels away from the left, top or right edge of the image.
Possibly, the original author intended to recolour a square around the centroid, but that's not what the code is doing.
  1 comentario
Image Analyst
Image Analyst el 8 de Dic. de 2014
Looks like he's trying to burn a blue box into the RGB "after" image. I'm not sure why. I'd probably just use plot(x,y,'bs', 'LineWidth', 4, 'MarkerSize', 10), or rectangle() or line(), to place a blue rectangle in the overlay above the image.

La pregunta está cerrada.

Community Treasure Hunt

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

Start Hunting!

Translated by