CSCI  4830/5722 Assignment  1  solution

$29.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (2 votes)

Early  Vision  –  One  Image     For  Assignment  1,  you  will  create  a  simple  image-­‐processing  program,  with   functions  similar  to  those  found  in  Adobe  Photoshop  or  The  Gimp.  The  functions  you   implement  for  this  assignment  will  take  an  input  image,  process  the  image,  and   produce  an  output  image.  Note:  it  would  be  possible  to  achieve  some  the   functionality  required  in  this  assignment  by  using  built-­‐in  Matlab  functions,   especially  from  a  couple  of  specialized  toolboxes.  You  are  NOT  allowed  to  use  these   image-­‐specific  built-­‐in  functions.  The  convolution  function  (conv)  is  also  not   allowed.  You  will  need  to  code  your  own  implementation  of  these  functions.  Feel   free  however,  to  use  these  functions  to  check  your  results.       Provided  files:   A  shell  script  vision_hwk1.m  is  provided  to  get  you  started.  Also,  a  collection  of   images  is  provided  for  testing.  You  can  use  your  own  images  as  well.     What  You  Have  to  Do     Implement  a  menu  driven  program,  where  each  button  should  trigger  a  call  to  a   function.  If  you  run  the  provided  shell  program,  you  will  notice  the  following  three   buttons:     1.  Load  Image  –  loads  one  image  file.  In  order  to  select  one  image,  the  file   needs  to  be  in  the  same  folder  as  the  main  script.  The  loaded  image  will   become  the  current  image  and  can  be  passed  as  an  input  to  other   functions.  2.   Display  Image  –  displays  the  current  image.  3.   Exit  Program  –  closes  the  menu  and  terminates  the  script.     You  have  to  add  and  test  additional  functionality  for  the  program.  For  every   button/functionality  you  add,  you  can  use  one  of  the  images  to  test  it.       For  Assignment  1,  you  need  to  implement  the  following  functions  and  add  menu   buttons  for  each  of  them.     Task  1  (15  points)  Mean  Filter:  also  known  as  smoothing,  averaging  or  box  filter   function [ outImg ] = meanFilter( inImg, kernel_size ) Mean  filtering  is  a  method  of  smoothing  images,  i.e.  reducing  the  amount  of  intensity   variation  between  one  pixel  and  the  next.  It  is  often  used  to  reduce  noise  in  images.   The  idea  of  mean  filtering  is  simply  to  replace  each  pixel  value  in  an  image  with  the   mean  (average)  value  of  its  neighbors,  including  itself.    This  has  the  effect  of   eliminating  pixel  values  that  are  unrepresentative  of  their  surroundings.    
The  input  argument  kernel_size will  determine  the  size  of  the  smoothing   kernel.  For  example,  if  kernel_size is  3,  the  smoothing  kernel  is  of  3  x  3  size  like   in  the  picture  below.    Note:  Pay  close  attention  to  the  pixels  on  the  edge  (first  row,  last  row,  first  column,   last  column).  How  many  neighboring  pixels  do  they  have?  Use  selection  statements   to  address  these  special  cases  or  pad  the  image  with  extra  rows  and  columns   (details  in  lecture,  remember  the  NaN  value!).     Choosing  the  Mean  Filter  menu  button  should  result  in:   a.  Ask  the  user  to  input  the  size  of  the  smoothing  kernel  (a  positive  integer)   b.  Call  the  meanFilter  function,  with  the  current  image  as  input,  plus  the  value   entered  by  the  user  for  the  size  of  the  smoothing  kernel.   c.  Display  the  original  image  and  the  image  returned  by  the  function,  side  by  side   (use  subplots)     d.  Save  the  resulting  image.  Use  a  naming  convention  of  your  choice.       Task  2  (20  points)  Gaussian  Filter:  smoothing  filter,  also  known  as  Gaussian  blur   function [ outImg ] = gaussFilter( inImg, sigma ) The  Gaussian  filter  works  in  a  similar  fashion  to  the  mean  filter.  The  values  of  the   weights  in  the  Gaussian  smoothing  kernel  will  be  different  (as  opposed  to  the  mean   filter  where  the  weights  were  the  same).  They  follow  the  Gaussian  distribution:            ,  where  x  is  the  distance  from  the  origin  in  the  horizontal  axis,  y  is  the  distance  from  the  origin  in  the  vertical  axis,  and  σ  is  the  standard  deviation  of  the  Gaussian  distribution.  The  size  of  the  Gaussian  kernel   will  be  computed  based  on  the  value  of  sigma  as  follows:   2 * ceil ( 2 * sigma) + 1   Note:  the  origin  is  always  at  the  (x,y)  coordinates  of  the  pixel  you  are  trying  to   replace  with  a  new,  smoothed  value.  Since  the  size  of  the  kernel  will  always  be  an   odd  number,  for  the  calculation  of  the  Gaussian  weights  the  pixel  in  the  middle  of   the  kernel  will  be  the  (0,0)  origin,  and  therefore  have  the  highest  weight.     Choosing  the  Gaussian  Filter  menu  button  should  result  in:   a.  Ask  the  user  to  input  a  positive  value  for  sigma  
b.  Call  the  gaussFilter  function,  with  the  current  image  as  input,  plus  the  value   entered  by  the  user  for  sigma.   c.  Display  the  original  image  and  the  image  returned  by  the  function,  side  by  side   (use  subplots)     d.  Save  the  resulting  image.  Use  a  naming  convention  of  your  choice.       Task  3  (20  points)  Scale  Nearest   function [ outImg ] = scaleNearest( inImg, factor ) This  method  scales  an  image  using  nearest  point  sampling  to  obtain  pixel  values  and   returns  the  new  image.  The  value  of  the  input  parameter  factor  is  the  factor  by   which  the  image  is  to  be  scaled.       Choosing  the  Scale  Nearest  menu  button  should  result  in:   a.  Ask  the  user  to  input  a  positive  value  for  factor   b.  Call  the  scaleNearest  function,  with  the  current  image  as  input,  plus  the  value   entered  by  the  user  for  factor.   c.  Display  the  original  image  and  the  image  returned  by  the  function,  side  by  side   (use  subplots)     d.  Save  the  resulting  image.  Use  a  naming  convention  of  your  choice.       Task  4  (20  points)  Scale  Bilinear   function [ outImg ] = scaleBilinear( inImg, factor ) This  method  scales  an  image  using  bilinear-­‐interpolation  to  obtain  pixel  values  and   returns  the  new  image.  The  value  of  the  input  parameter  factor  is  the  factor  by   which  the  image  is  to  be  scaled.       Choosing  the  Scale  Bilinear  menu  button  should  result  in:   a.  Ask  the  user  to  input  a  positive  value  for  factor   b.  Call  the  scaleBilinear  function,  with  the  current  image  as  input,  plus  the   value  entered  by  the  user  for  factor.   c.  Display  the  original  image  and  the  image  returned  by  the  function,  side  by  side   (use  subplots)     d.  Save  the  resulting  image.  Use  a  naming  convention  of  your  choice.       Task  5  (25  points)  Fun  Filter   function [ outImg ] = funFilter( inImg) This  method  applies  a  fun-­‐filter  to  the  current  image  and  returns  the  new  image.   Warp  an  image  using  a  non-­‐linear  mapping  of  your  choice  (examples  are  fisheye,   sine,  bulge,  swirl).  You  can  choose  to  have  user  input  to  specify  which  filter  to  apply,   or  just  hard-­‐code  one  filter  in  particular,  indicating  (in  comments)  which  filter  are   you  implementing  and  the  mapping  function  used.    
Choosing  the  Fun  Filter  menu  button  should  result  in:   a.  Call  the  funFilter  function,  with  the  current  image  as  input.   b.  Displaying  the  original  image  and  the  image  returned  by  the  function,  side  by  side   (use  subplots).  Here  you  can  display  the  name  of  the  filter  used  as  well.   c.  Save  the  resulting  image.  Use  a  naming  convention  of  your  choice.     Note:  You  might  want  to  implement  two  helper  functions  useful  for  tasks  3-­‐5:   function [ value ] = sampleNearest( x, y) This  method  returns  the  value  of  the  image,  sampled  at  position  (x,y)  using  nearest-­‐ point  sampling.  https://en.wikipedia.org/wiki/Nearest-­‐neighbor_interpolation     function [ value ] = sampleBilinear( x, y) This  method  returns  the  value  of  the  image,  sampled  at  position  (x,y)  using  bilinear-­‐ weighted  sampling.  https://en.wikipedia.org/wiki/Bilinear_interpolation       Submitting  the  assignment:   Make  sure  each  script  or  function  file  is  well  commented  and  it  includes  a  block   comment  with  your  name,  course  number,  assignment  number  and  instructor  name.   Save  one  resulting  image  for  each  of  the  buttons/functionality  impleme