Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
B31SE Image Processing Fundamentals of Image Processing with Matlab Matlab scripts a01images.m and b01neighbours.m demonstrate how to load and image, get some image information, display an image, and perform some simple manipulations with an image. Run these scripts on various images. Use matlab help if necessary. If you feel yourself comfortable with these simple image processing manipulations and matlab programming in general, you can start working on the following programming assignment. This assignment consists of four parts (tasks). Task 1a (4 points): Nonlinear image filtering. Given a grey-scale image (, ), consider the following non-linear iterative process: 0(, ) = (, ), +1(, ) = ∑ ( + , + ) 1 ,=−1 ∑ 1 ,=−1⁄ , = exp{−|(, ) − ( + , + )|} where K is a positive constant. Note that the weights {} depend on the pixel positions (, ) and the iteration number n. After a certain number of iterations, you should get results similar to those shown in the picture below: small-scale image details are removed while salient image edges are sharpened. Your first task is to implement the above non-linear iterative procedure, perform a number of experiments (with different images, different numbers of iterations, and various values of parameter k). A matlab script simple_averaging.m implements the above iterative scheme in the simplest case when all the weights are equal to one: = 1. Task 1b (4 points): Low-light image enhancement. The above filtering scheme can be used for enhancing low-light images. Given a colour (RGB) image (, ) = [(, ), (, ), (, )], let us define (, ) = max ∈{,,} (, ). Let (, ) be obtained from (, ) by applying the image filtering scheme from Part 1 described above. An enhanced version of the original colour (, ) is generated by (, ) = (,) (,)+ , where ε is a small positive parameter used to avoid division by zero. You are expected to get results similar to those shown below: original enhanced Task 2 (4 points): Image filtering in frequency domain. This part is independent of Parts 1 and 2 and devoted to using the Fourier transform for image filtering purposes. Matlab function fftshift shifts the zero frequency component of an image to the centre of spectrum Try Fourier4ip.m matlab script and see how the Fourier transform can be used for image processing and filtering purposes. Your task is as follows. Image eye-hand.png is corrupted by periodic noise. Find the Fourier transform of the image, visualise it by using log(abs(fftshift(.))), as seen below. An image corrupted by periodic ripples The image in the frequency domain The four small crosses in the frequency domain correspond to the frequencies behind the periodic noise. Use impixelinfo to locate the frequencies. Construct a notch filter (a band-stop filter, you can use small-size rectangles or circles to kill the unwanted frequencies) and use it to remove/suppress the periodic noise while preserving the image quality. The Part 3 of your report must include the reconstructed image and the filter used in the frequency domain. Task 3a (5 points): Image deblurring by the Wiener filter. Given a grey-scale image (, ), consider the following non-linear iterative process: (, ) = ℎ(, ) ⊗ (, ) + (, ) , where f (x,y) is the latent (unblurred) image, g(x,y) is the degraded image, h(x,y) is a known blurring kernel, ⊗ denotes the convolution operation, and n(x,y) stands for an additive noise. Applying the Fourier transform to both sides of the above equation yields (, ) = (, )(, ) + (, ) . The Wiener filter consists of approximating the solution to this equation by (, ) = [ 1 (, ) |(, )|2 |(, )|2 + ] (, ) = ̅(, ) |(, )|2 + (, ) (1) , where ̅(, ) is the complex conjugate of (, ). Implement Weiner filter restoration scheme (1) and test it for different types of blur kernels (motion blur and Gaussian blur). In your implementation of the Wiener filter restoration scheme (1) you may need to use H = psf2otf(h,size(g)); See also deblur.m. Task 3b (5 points): Image deblurring by ISRA. The matlab script deblur.m contains simple implementations of two popular image deblurring schemes, the Landweber method and the Richardson-Lucy method (in addition, the matlab built-in implementation of the Wiener filter is presented in deblur.m). In particular, the Richardson-Lucy method consists of the following iterative process 0(, ) = (, ), +1(, ) = (, ) ∙ (ℎ(−, −) ⊗ (, ) (, ) ⊗ ℎ(, ) ) where ∙ stand for the pixel-wise multiplication and the pixel-wise division is also used. Let us consider the so-called ISRA (Image Space Reconstruction Algorithm) method 0(, ) = (, ), +1(, ) = (, ) ∙ ( ℎ(−, −) ⊗ (, ) ℎ(−, −) ⊗ ℎ(, ) ⊗ (, ) ) . Your task is to implement ISRA and use PSNR graphs (see again deblur.m) to compare ISRA against the Wiener, Landweber, and Richarson-Lucy methods for the two types of motion blur and Gaussian blur considered in deblur.m. Remark. In this particular example of additive gaussian noise, advantages of the Richardson- Lucy and ISRA methods are not revealed. Task 4 (3 points): Image filtering in frequency domain. Matlab script handwritten_digit_recognition_simple.m provides you with a simple application of ANN for handwritten digit recognition. Your task is to modify the hidden layers of the network in order to achieve the accuracy higher than 93%. You are not allowed to use CNN layers. You are not allowed to use more than 100 neurons in total for all your hidden layers. You are not allowed to modify the training options. You can observe that a higher accuracy can be easily achieved if convolutional layers are used: handwritten_digit_recognition.m. Please submit a single report describing briefly your results achieved for Tasks 1, 2, 3, and 4 of the assignment. Together with the report, please submit your matlab scripts implementing your solutions to Tasks 1, 2, 3, and 4.