Effacer les filtres
Effacer les filtres

Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

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

1 vue (au cours des 30 derniers jours)
Ayesha ayub
Ayesha ayub le 8 Déc 2014
Clôturé : MATLAB Answer Bot le 20 Août 2021

Réponses (1)

Guillaume
Guillaume le 8 Déc 2014
Modifié(e) : Guillaume le 8 Déc 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 commentaire
Image Analyst
Image Analyst le 8 Déc 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.

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by