diff --git a/20Tracking/@TrackBlobs/TrackBlobs.m b/20Tracking/@TrackBlobs/TrackBlobs.m index 4b166d9..c793bcd 100644 --- a/20Tracking/@TrackBlobs/TrackBlobs.m +++ b/20Tracking/@TrackBlobs/TrackBlobs.m @@ -20,6 +20,7 @@ timeSearchScope = 15; searchRadius = 10; areaThreshold = 5; + steadyCriteria = 6; videoName = []; end diff --git a/20Tracking/@TrackBlobs/dbCleanUp.m b/20Tracking/@TrackBlobs/dbCleanUp.m new file mode 100644 index 0000000..f6d9956 --- /dev/null +++ b/20Tracking/@TrackBlobs/dbCleanUp.m @@ -0,0 +1,36 @@ +function dbCleanUp(obj) + cleanUpOnlyOneAppearance(obj); + cleanUpSteady(obj); +end + +function cleanUpOnlyOneAppearance(obj) + ndb = length(obj.DB); + keepIndex = true(ndb, 1); + for i = 1 : ndb + if length(obj.DB{i}.timeIDX) == 1 + keepIndex(i) = false; + end + end + obj.DB = obj.DB(keepIndex); +end + +function cleanUpSteady(obj) + ndb = length(obj.DB); + keepIndex = true(ndb, 1); + for i = 1 : ndb + isSteady = checkIsSteady(obj, i); + if isSteady == 1 + keepIndex(i) = false; + end + end + obj.DB = obj.DB(keepIndex); +end + +function isSteady = checkIsSteady(obj, i) + tmpEntry = obj.DB{i}; + tmpStd = std(tmpEntry.Centroid); + isSteady = 0; + if all(tmpStd < obj.steadyCriteria) + isSteady = 1; + end +end \ No newline at end of file diff --git a/20Tracking/@TrackBlobs/playTrackingBlobs.m b/20Tracking/@TrackBlobs/playTrackingBlobs.m index 9bd74dd..e7fc8ee 100644 --- a/20Tracking/@TrackBlobs/playTrackingBlobs.m +++ b/20Tracking/@TrackBlobs/playTrackingBlobs.m @@ -6,6 +6,7 @@ function playTrackingBlobs(obj) rectShow = figure; for t = 1 : obj.fg.nFrame I = uint8(obj.fg.Data(:, :, t)); + I = I > 0.01; imshow(I, 'border', 'tight'); for j = 1 : length(obj.DBbyFrame{t}) tBlob = obj.DBbyFrame{t}(j); diff --git a/20Tracking/@TrackBlobs/saveTrackingBlobs.m b/20Tracking/@TrackBlobs/saveTrackingBlobs.m index 3dea465..09dad14 100644 --- a/20Tracking/@TrackBlobs/saveTrackingBlobs.m +++ b/20Tracking/@TrackBlobs/saveTrackingBlobs.m @@ -9,6 +9,7 @@ function saveTrackingBlobs( obj ) for t = 1 : obj.fg.nFrame I = uint8(obj.fg.Data(:, :, t)); + I = I > 0.01; imshow(I, 'border', 'tight'); for j = 1 : length(obj.DBbyFrame{t}) tBlob = obj.DBbyFrame{t}(j); diff --git a/main_class.m b/main_class.m index f68d4e3..e4d1bcf 100644 --- a/main_class.m +++ b/main_class.m @@ -27,7 +27,7 @@ end combinedImagePath = '/Users/herbert19lee/Documents/MATLAB/work/celltrack/Results/vivo/combinedImage'; [datapath videoName n] = rfdatabase(datapath, [], '.mat'); -for i = 4 +for i = 11 idName = videoName{i}(7 : end - 4); display([idName 'i = ' num2str(i)]); load(fullfile(datapath, videoName{i})); @@ -45,6 +45,7 @@ trackBlobsObj.DBMergeLocation(); % TODO Dynamics trackBlobsObj.DBMergeDynamics(); + trackBlobsObj.dbCleanUp(); trackBlobsObj.DBSortByFrame(); trackBlobsObj.playTrackingBlobs(); trackBlobsObj.videoName = ['video' idName '_trial1.avi'];