Hello everyone, how to record and save the coordinates of each image centroid point in a matrix in 'for loop'. Thank you very much. The code is as follows:

1 view (last 30 days)
Hello everyone, how to record and save the coordinates of each image centroid point in a matrix.There are some problems in curve fitting. Thank you for your answers Thank you very much. The code is as follows:
CODE:
[filename1, pathname1] = uigetfile({'Dune.MP4'},'File Selector');
videoObject=VideoReader([pathname1,filename1]);
% % videoObject= VideoReader('Dune.MP4');
%Framerate=videoObject.FrameRate;
fig1=zeros(1000,1000);
numberOfFrames = videoObject.NumFrames;
centroids=[];
for i=1:numberOfFrames %for all frames in the range defined numberOfFrames
frame=read(videoObject,i);
%frame = rgb2gray(read(videoObject,i)); %turn all stated frames in the video from color to greyscale
J = rgb2gray(frame);
imwrite(J,'myGray.png')
I = imread('myGray.png ');
%imshow(I)
[~,threshold] = edge(I,'sobel');
fudgeFactor = 0.4;
BWs = edge(I,'sobel',threshold * fudgeFactor);
%imshow(BWs)
%title('Binary Gradient Mask')
se90 = strel('line',3,90);
se0 = strel('line',3,0);
BWsdil = imdilate(BWs,[se90 se0]);
%imshow(BWsdil)
%title('Dilated Gradient Mask')
BWdfill = imfill(BWsdil,'holes');
%imshow(BWdfill)
%title('Binary Image with Filled Holes')
BWnobord = imclearborder(BWdfill,4);
%imshow(BWnobord)
%title('Cleared Border Image')
seD = strel('diamond',1);
BWfinal = imerode(BWnobord,seD);
BWfinal = imerode(BWfinal,seD);
%imshow(BWfinal)
imwrite(BWfinal,'L.png')
%title('Segmented Image');
BW = imread('L.png');
BW2 = bwareaopen(BW, 700);
% figure;
% subplot(1,2,1)
% imshow(BW2);
axis on
% % subplot(1,2,2)
I2=flipud(BW2);
% imshow(I2);
axis on
set(gca,'YDir','normal')
%imshow(BW2)%imshowpair(BW,BW2,'montage')
imwrite(I2,'m.jpg')
BW3 = bwperim(I2,8);
BW4 = bwareaopen(BW3, 700);
%imshow(BW4)
imwrite(BW4,'k.png')
BW = imread('k.png');
s = regionprops(BW,'centroid');
centroids= cat(1,s.Centroid);
plot(THETA,RHO,'-')
hold on
curvefit = fit(centroids(1),centroids(2),'poly3','normalize','on');
plot(curvefit,centroids(1),centroids(2))
hold on
formula(curvefit)
end

Accepted Answer

KSSV
KSSV on 10 Jun 2021
Edited: KSSV on 10 Jun 2021
centroids = cell(numberOfFrames ,1) ;
for i = 1:numberOfFrames
centroids{i} = s.Centroid;
end

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!