Find the coordinates nearest to the center coordinate of a patch in an image

4 visualizzazioni (ultimi 30 giorni)
i have an image of size [512 512], and xy coordinates values, which have been found on the whole image. (I have attached an example xy coordinate which i'm working on)
Now i wanted to divide the image into blocks of size [128 128], and
I need to find the center most xy coordinate that falls on each patch
  2 Commenti
darova
darova il 11 Giu 2020
you can divide your matrix using mat2cell
  • I wanted to find the center xy coordinate value that falls in each patch, and crop from the center a new patch of size [100 100]
Don't understand that. Can you explain?

Accedi per commentare.

Risposta accettata

darova
darova il 12 Giu 2020
See this simple example
x = rand(100,1); % random data
y = rand(100,1);
[x1,y1] = meshgrid(0.05:.3:1); % mesh
D = pdist2([x y],[x1(:) y1(:)]); % combinations of distances
[~,ix] = min(D); % closest distances (indices)
plot(x,y,'.r')
hold on
plot(x1,y1,'.-b','markersize',25)
plot(x1',y1','.-b')
plot(x(ix),y(ix),'om','markersize',20)
hold off

Più risposte (1)

Rob Robinson
Rob Robinson il 12 Giu 2020
Modificato: Rob Robinson il 12 Giu 2020
centres = cell((size(ca,1)-1),(size(ca,2)-1));
for r = 1:size(ca,1)-1
for c = 1:size(ca,2)-1
centrePoint = [(blockSizeR/2 +(blockSizeR*(r-1))) (blockSizeC/2 + (blockSizeR*(c-1)))];
distance = sqrt(sum((xy-centrePoint).^2,2));
[value, rowId] = min(distance);
centres{r,c} = xy(rowId,:);
end
end
I think this is what you meant? But this won't return any kind of error if the nearest xy point lies outside of the "patch" - something to be wary of. ( I assumed the RGB array was a matrix of values size 256x256)

Community Treasure Hunt

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

Start Hunting!

Translated by