Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

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

2 Ansichten (letzte 30 Tage)
Ayesha ayub
Ayesha ayub am 8 Dez. 2014
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021

Antworten (1)

Guillaume
Guillaume am 8 Dez. 2014
Bearbeitet: Guillaume am 8 Dez. 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 Kommentar
Image Analyst
Image Analyst am 8 Dez. 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.

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by