--- a
+++ b/complete_processing_frames.m
@@ -0,0 +1,80 @@
+function Mean_diameter_in_metric = complete_processing_frames(Input_Frames, bthresh, handles)
+
+    Mean_diameter_in_metric = nan(size(Input_Frames, 3), size(handles.Proximal_Mask, 3));
+    Proximal_Wall           = nan(size(Input_Frames, 3), 4, size(handles.Proximal_Mask, 3));
+    Distal_Wall             = nan(size(Input_Frames, 3), 4, size(handles.Proximal_Mask, 3));
+    
+        for cnt = 1:size(Input_Frames, 3)
+
+            % Frame of interest
+            Input_Image         = Input_Frames(:, :, cnt); 
+
+            % Perform Area-Open operation
+            Input_Image         = Input_Image .* bwareaopen(Input_Image > bthresh, 15); 
+            
+            % Here, Each mask is for each rectangular box pair you have
+            % added.
+            for Mask_counter = 1:size(handles.Proximal_Mask, 3)
+                
+                % We use the Rectangular boxes as the MASK. Processing is
+                % done only within the Rectangular boxes. separate Masks
+                % are created for Proximal and Distal wall.
+                Proximal_Mask   = handles.Proximal_Mask(:, :, Mask_counter);
+                Distal_Mask     = handles.Distal_Mask(:, :, Mask_counter); 
+
+                %Crop the image using Proximal and distal Mask
+                Cropped_Proximal    = Input_Image .* Proximal_Mask;
+                Cropped_Distal      = Input_Image .* Distal_Mask;
+                
+                % This function detects the proximal wall of the artery within the masked region.
+                % This ia simple line detection algorithm. 
+                [~, ...
+                    Proximal_col, ...
+                    Proximal_row ]              = detect_wall_boundary_cropped_image(Cropped_Proximal, 'Proximal');
+                
+                % This function detects the disatl wall of the artery within the masked region.
+                % This ia simple line detection algorithm. 
+                [~, ...
+                    Distal_col, ...
+                    Distal_row ]                = detect_wall_boundary_cropped_image(Cropped_Distal, 'Distal');
+                
+                % If walls were not detected, skip the process.
+                % Corresponding value of diameter will be set to nan
+                if isempty(Proximal_col) || isempty(Distal_col)
+                    fprintf('Walls not detected at Frame = %d and mask = %d\n', cnt, Mask_counter);
+                    continue;
+                end
+                
+                % We assume that the proximal and distal walls are parallel
+                % to each other. This code calculates the optimized wall
+                % postions for the Proximal and Distal sides of the artery.
+                [Proximal_Wall(cnt, :, Mask_counter), ...
+                    Distal_Wall(cnt, :, Mask_counter)] 	...
+                                                = find_optimized_best_fit_walls(Proximal_col, Proximal_row, Distal_col, Distal_row);
+                
+                % Estimate perpendicualar distances between the two walls.
+                D                             	= point_to_line(Proximal_Wall(cnt, :, Mask_counter), Distal_Wall(cnt, :, Mask_counter));
+                
+                % Estimate the Diameter from the resolution of the Y axis
+                % of the recorded B mode images. 
+                Mean_diameter_in_metric(cnt, Mask_counter)...
+                                                = mean(D)* handles.dy * 10;
+
+                handles.Message_Bar.String      = sprintf('Processing all Frames [%4d / %4d]. Buttons De-activated !!', cnt, size(Input_Frames, 3));
+                
+            end
+            
+            % This pause will help the display
+            pause(1e-4);
+            
+            % Update all the plots in the GUI.
+            update_plot(  Input_Image, handles.Plot_Image, ...
+                             handles.Rect_Proximal_Position, handles.Rect_Distal_Position, ... 
+                             handles.Rect_proximal_Rotation_in_degree, handles.Rect_distal_Rotation_in_degree, ...
+                             Proximal_Wall(cnt, :, :), Distal_Wall(cnt, :, :), ...
+                             Mean_diameter_in_metric(1:cnt, :), handles.time(1:cnt), handles.Diameter_Plot);
+
+        end
+    
+
+end
\ No newline at end of file