Switch to side-by-side view

--- a
+++ b/detect_wall_boundary_cropped_image.m
@@ -0,0 +1,46 @@
+% This function detects the boundary of the image. 
+% The boundary is assumes to be a straight line. 
+% Region = "Proximal" or "Distal"
+% Output wall location on the image is the format [x_start x_end y_start y_end]
+function [ Wall_detect, valid_cols, valid_rows] = detect_wall_boundary_cropped_image(Crop_Image, region)
+    
+    Wall_detect = nan;
+
+    % Perform edge detection
+    BW          = edge(Crop_Image); 
+
+    % Find the region of the figure with valid rows. 
+    valid_cols = find(~all(BW == 0))';
+    
+    % If the length of the valid_rows is less than 20 pixels, ignore the frame
+    if(length(valid_cols) < 20)
+        valid_cols = [];
+        valid_rows = [];
+    end
+
+    % Find the row index of the boundary
+    % If the input is proximal wall, wall is assumed to be in the bottom of the
+    % croped image. If the input is distal wall, wall is assumed to be in the top of the
+    % cropped image. This assumption helps to speed up the code via vectorization. 
+    switch (region)
+        case 'Proximal'
+            [~, valid_rows]  = max(flipud(BW(:, valid_cols))); 
+            valid_rows       = (size(Crop_Image, 1) - valid_rows + 1)';
+        case 'Distal'
+            [~, valid_rows]  = max(BW(:, valid_cols)); 
+            valid_rows       = valid_rows';
+    end
+    
+    
+
+    % Fit a straight line
+%     p_fit               = polyfit(valid_cols, valid_rows, 1);
+%     Estimated_valid_row = floor(polyval(p_fit, valid_cols)); 
+%     Wall_detect = [valid_cols(1) valid_cols(end) Estimated_valid_row(1) Estimated_valid_row(end)];
+    
+    
+%     % Plot the data
+%     figure(); imshow(Crop_Image); hold on;
+%     plot(valid_cols, valid_rows, 'og');
+%     line(Wall_detect(1:2), Wall_detect(3:4), 'Color', 'r', 'LineStyle', '-', 'LineWidth', 3);
+end
\ No newline at end of file