Instructions for image deblurring optimization using the Split-Bregman iteration method described in class. (Created by Dan Weller, F13) If you have not done so already, you may wish to review the course notes on constrained optimization before this lab. 1. Download from web site deblur3_data.mat deblur3_sb_template.m qpwls_pcg3.m 2. We will be investigating the convergence properties of the Split-Bregman iteration method. The deblur3_sb_template.m file contains code to run your implementation of Split-Bregman iteration for various values of the penalty parameter mu. To complete this assignment, you will need to complete the skeleton implementation provided. It may be helpful to start with a single value of mu (e.g., 1) to make debugging easier. a. Use preconditioned conjugate gradients (see qpwls_pcg3.m) to solve the x (image)-update. You will need to determine the proper fatrices and vector inputs to qpwls_pcg3.m to perform this update. Note: For this problem size, you likely can solve the x (image)-update via direct inversion. This may be helpful for debugging purposes, but please complete the algorithm using preconditioned conjugate gradients for your final implementation. You should be able to operate this algorithm with much larger images in practice. b. Complete the code for the w (transform coefficients)-update. c. Write the b (scaled dual variable)-update. d. Change P to be a suitable preconditioner for the x-update subproblem. Since the image is represented as a column vector, reshaping may be required for two-dimensional operations. 3. After you get the method to work, refine the range of mu's (see variable mulist) to identify a value that results in fast convergence of the objective function value. 4. Enter the best mu you found into the google doc for class 16 under "homework" link on the course web page. 5. If you still have time, reconsider your choice of mu. Do you think that a constant value of mu is optimal in practice? Attempt to construct a scheme that varies mu to achieve faster convergence than the constant value you found in step 3. It may be useful to increase the number of outer iterations (e.g., niters = 1000) for this part.