- 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]
Find the coordinates nearest to the center coordinate of a patch in an image
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Elysi Cochin
am 11 Jun. 2020
Bearbeitet: Elysi Cochin
am 12 Jun. 2020
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 Kommentare
darova
am 11 Jun. 2020
you can divide your matrix using mat2cell
Don't understand that. Can you explain?
Akzeptierte Antwort
darova
am 12 Jun. 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
0 Kommentare
Weitere Antworten (1)
Rob Robinson
am 12 Jun. 2020
Bearbeitet: Rob Robinson
am 12 Jun. 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)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!