I used the size() function to determine the size of the input file's picture's matrix, and then used the inverse transformation matrix shown below to determine the source pixel for each destination pixel. My program determined whether the source pixel was within the 320 x 200 dimensions, and if so, painted the destination pixel into the output file and if not, left the value as 0, i.e. black.
This program was very similar to the image rotation's code. Similarly, the program determined whether the source pixel of the picture was within the 320 x 200 frame using the inverse shearing transformation matrix shown below. Again, if so, it painted the destination pixel into the output file and if not, left the value as 0, i.e. black.
Instead of using loops for this program, detect.m uses matrices to detect the horizontal and vertical edges for all the pixels at one go.
My program then added them up using the given formulas shown below to produce the final output.
The resulting image is 1 pixel less in height and width than the original due to the fact that Outhorizontal and Outvertical needed the input of the current pixel and the adjacent pixel on the right, and the rightmost pixel was excluded.
By averaging the pixel values with the 8 surrounding pixels, a blurring effect was achieved. Using the blurring formula shown below, blur.m processes all the pixels and creates a matrix "sum" which is a 'shifted' version of the original image.