clc ; close all; clear all; %mkdir Live; mkdir slice; %% Code to write images %open(NewObj1); %open(NewObj2); updating_array=0; dead_cells=0; total_dead_cells=0; total_live_cells=0; live_cells=0; for videos=91:91 z=0; VidObj = VideoReader(strcat('D:\All_videos\Yeast_1\yeast00',num2str(videos),'.avi')); VidObjDat = read(VidObj); Nframes = VidObj.NumberOfFrames; vidHeight = VidObj.Height; vidWidth = VidObj.Width; mean_count=1; pixel_count=1; %% Generate Background a = read(VidObj,1); %%% average ten frames to generate background. bg = 0; count = 30 ;% set number of frame to be averaged N = 1; % start frame number for i = N:N+count bg = bg +double(rgb2gray(read(VidObj,i))); end bg = uint8(bg /count); % Final Background generated. %imshow(bg); % set appropriate cropping for the background % RS = 135;% start value of the row %RE = 280; % end value of the row RS = 76;% start value of the row RE = 280;% start value of the row % RS = 493;% start value of the row % RE = 638; % end value of the row CS = 1;% start value of the column CE = 216; % end value of the column % crop as per the following imshow(CS:CE,RS:RE) %imshow(bg(:,RS:RE)); %% subtract all subsequent frames and write into a video. ccount = 0; gccount = 0; framecount = 0; ccount = 0; MAVector = 0; MVector = 0; framenum = 0; pframenum = 0; for k =1:Nframes Copy=rgb2gray(read(VidObj,k)); CurrFrame = double(rgb2gray(read(VidObj,k))); CurrFrame1=read(VidObj,k); CurrFrame1=CurrFrame1(:,RS:RE); Sub = double(CurrFrame(:,RS:RE)-double(bg(:,RS:RE))); Submin = min(Sub(:)); Submax = max(Sub(:)); AdjBGSub = uint8( (Sub - Submin)/(Submax-Submin) * 255); I = AdjBGSub; [A, B]=size(I); % a = uint8(min(Sub(:))*-1+Sub); [~, threshold] = edge(I, 'sobel'); fudgeFactor = 1; BWs = edge(I,'sobel', threshold * fudgeFactor); se90 = strel('line', 3, 90); se0 = strel('line', 3, 0); BWsdil = imdilate(BWs, [se90 se0]); BWdfill = imfill(BWsdil, 'holes'); BWdfillopen = imopen(BWdfill,strel('disk',5,4)); BWnobord = imclearborder(BWdfillopen, 4); seD = strel('diamond',2); BWfinal = imerode(BWnobord,seD); BWfinal = imerode(BWfinal,seD); CC =bwconncomp(BWfinal); Areas = regionprops(CC,'Area'); MALength = regionprops(CC,'MajorAxisLength'); MinLength = regionprops(CC,'MinorAxisLength'); Centroids=regionprops(CC,'Centroid'); BWthresh = imcomplement(im2bw(I,0.15)); % imshow(BWthresh); % figure; % imshow(uint8(BWthresh).*I); % CC_par =bwconncomp(BWthresh); % Centroids=regionprops(CC_par,'Centroid'); % Areas_par = regionprops(CC_par,'Area'); for il = 1:CC.NumObjects if(Areas(il).Area > 40 && Areas(il).Area < 45840 ) ccount = ccount +1; gccount = gccount +1; CR1=round(Centroids(il).Centroid(1))-15; CC1=round(Centroids(il).Centroid(2))-15; CR2=round(Centroids(il).Centroid(1))+15; CC2=round(Centroids(il).Centroid(2))+15; if CR1 <= 0 CR1=1; end if CC1 <= 0 CC1=1; end if CR2 > B CR2=B; end if CC2 > A CC2=A; end sliceOfImage = CurrFrame1(CC1:CC2,CR1:CR2); %imwrite(sliceOfImage,strcat('C:\Users\RBCCPS\Documents\MATLAB\slice/FrameNumber','-',num2str(k),'-',num2str(il),'.jpg'),'jpeg'); %mean(mean_count)=mean2(I(CC1:CC2,CR1:CR2)); %mean_count=mean_count+1; %mean_slice=mean2(sliceOfImage); [p, q]=size(sliceOfImage); % BWthresh = im2bw(sliceOfImage,0.15); % imshow(BWthresh); % figure; % imshow(uint8(BWthresh).*I); %CC1 =bwconncomp(imcomplement(BWthresh)); % Areas_stained = regionprops(CC1,'Area'); % C_Percentstained = sum(struct2array(Areas_stained))/max(struct2array(Areas))*100; % Percentstained = horzcat(Percentstained, C_Percentstained ); z=z+1; %if (pixel_count ~=0) pixel_count_array(z)=pixel_count; imwrite(sliceOfImage,strcat('C:\Users\RBCCPS\Documents\MATLAB\slice/FrameNumber','-',num2str(videos),'-',num2str(k),'-',num2str(il),'.jpg'),'jpeg'); end end end updating_array=vertcat(updating_array(:),pixel_count_array(:)); pixel_count_array=0; z=0; videos end %end %end %end %close(NewObj1); %close(NewObj2);--