1 / 32

MATLIP: MATLAB-Like Language for Image Processing

MATLIP: MATLAB-Like Language for Image Processing. Pin-Chin Huang ( ph2249@columbia.edu ) Shariar Zaber Kazi ( szk2103@columbia.edu ) Shih-Hao Liao ( sl2937@columbia.edu ) PoHsu Yeh ( py2157@columbia.edu ). Motivation. Easy to code Easy to access pixels of an image

dannycurtis
Download Presentation

MATLIP: MATLAB-Like Language for Image Processing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang (ph2249@columbia.edu) Shariar Zaber Kazi (szk2103@columbia.edu) Shih-Hao Liao (sl2937@columbia.edu) PoHsu Yeh (py2157@columbia.edu)

  2. Motivation • Easy to code • Easy to access pixels of an image • Easy to do image arithmetic operation • Easy to do image convolution • Easy to assign images of any size • Easy to debug • No cost for license • Good Portability

  3. Easy to access one pixel of an image public static void main(String[] args) { BufferedImage x = imnew(100, 100, "RGB"); x = imread("./rabbit.jpg"); System.out.println(getImagePixel(x, 1, 1, "RGB")); } static int getImagePixel(BufferedImage im, int col, int row, String channel){ ………………………… } function = main() image x; x=imread("./rabbit.jpg"); print(x[1,1,"RGB"]); end 26 lines of java code

  4. Easy to do image arithmetic operation public static void main(String[] args){ BufferedImage x = imnew(100, 100, "RGB"); BufferedImage y = imnew(100, 100, "RGB"); x = imread("./rabbit.jpg"); x = (BufferedImage)clone((BufferedImage)doArithmetic(x, 1, OPERATION.ADD)); x = (BufferedImage)clone((BufferedImage)doArithmetic(x, 1, OPERATION.SUB)); x = (BufferedImage)clone((BufferedImage)doArithmetic(x, 1, OPERATION.MUL)); x = (BufferedImage)clone((BufferedImage)doArithmetic(x, 1, OPERATION.DIV)); x = (BufferedImage)clone((BufferedImage)doArithmetic(x, y, OPERATION.ADD)); } static Object doArithmetic(Object op1, Object op2, OPERATION op){……………} static Object clone(Object src){ ……………………} function = main() image x; image y; x=x+1; x=x-1; x=x*1; x=x/1; x=x+y; end 150 lines of java code

  5. Easy to do image convolution public static void main(String[] args){ BufferedImage x = imnew(100, 100, "RGB"); Kernel k = kernelinit(); x = (BufferedImage)clone(convolve(x, k)); } static BufferedImage convolve(BufferedImage im, Kernel k){ …………………. } static Object clone(Object src){ ……………………. } function = main() image x; kernel k; x=x@k; end 45 lines of java code

  6. Easy to assign image to image of different size function = main() image a; image b; a = imnew(300,300,"RGB"); b = imnew(200,200,"RGB"); a=b; end public static void main(String[] args) { BufferedImage a = imnew(100, 100, "RGB"); BufferedImage b = imnew(100, 100, "RGB"); a = imnew(300, 300, "RGB"); b = imnew(200, 200, "RGB"); a = (BufferedImage)clone(b); } static BufferedImage imnew(int width, int height, String type){ ………….. } static Object clone(Object src){ ……………………… } 50 lines of java code

  7. Easy to debug function = main() int i; for i=0:(int y):100 x=x+1; end y=0; end function int m = test (int x) end function = main () float x; x=1.0; test(x); end syntax error in line #3 Fatal error: exception Parsing.Parse_error Fatal error: exception Failure("Type mismatch in argument passing between: 'x', type: int and 'x', type: float in function: 'test'“)

  8. Easy to debug function int m = test () end function = main () int x; x=1; test(x); end function = main() image x; imshow(x); x = imread("./rabbit.jpg"+x); imshow(x); imsave(x,"./rabbit.jpg"); x = imnew(300,300,"RGB"); imshow(x); end Fatal error: exception Failure(“Wrong number of arguments passed to function: ‘test’”) Fatal error: exception Failure("Cannot concatenate image type with string type in function: 'main'")

  9. No cost for license Image Processing Toolbox 6.2  (MATLAP) • Individual LicenseFor: End userActivation types: Standalone named user or designated computer • $1,000 • BuyRequest a Quote (via fax or e-mail)Contact Sales • For an end user who wants to personally install, administer, and operate the software. • Group LicenseFor: WorkgroupActivation Types: Standalone named users or designated computers • Request a Quote (via fax or e-mail)Contact Sales • For organizations who would like to designate an administrator to manage a group of Individual licenses. 

  10. Tutorial introduction • Variable declaration and assignment: int a; float b; boolean c; kernel k; image i; function = main() a=1; b=0.1; c=true; k=kernelnew(10,10); k=[0.0,0.1;0.3,0.4]; i=imnew(10,10,”RGB”); end int a=3; float b=0.3; boolean c =true; Kernel k=kernelnew(10,10); Image i=imnew(10,10,”RGB”);

  11. Arithmetic Operation Int a; Int b; float c; float d; funciton = main() a=a+b; a=a-b; a=a*b; a=a/b; a=a^b; a=mod(a,b); c=c+d; c=c-d; c=c*d; c=c/d; end image a; image b; int c; function =main() a=a+b; a=a-b; a=a*b; a=a/b; a=a*2+b; a=a*c+b; a=a*2.0; (NOT OK) a=2*a;(NOT OK) end kernel k1; kernel k2; float a; function = main() k1=k1+k2; k1=k1-k2; k1=k1*k2; k1=k1/k2; k1=k1*2.0+k2; k1=k1*a+k2; k1=k1*2+k2;(NOT OK) k1=2.0*k1+k2;(NOT OK) end

  12. Control Flow Statement int x; funciton=main() x=1; If x==1 x=x+1; end end int x; function=main() x=1; If x==1 x=x+1; elseifx==2 x=x+2; elseifx==3 x=x+3; else x=x+4; end end Int x; function=main() x=1; if x==1 x=x+1; else x=x+2; end Int x; function=main() x=1; if x==1 x=x+1; elseif x==2 x=x+2; end

  13. Control Flow Statement function = main() int x; inti; for i=0:1:10 x=x+1; endend function = main() Int x; while x<3 x=x+1; end end

  14. Function function = test() end function main() test(); end function int m= test(int x) m=d; end function main() Int d; d=test(d); end function main() Int d; d=test(); End function int m= test() end

  15. Recursion function int m = foo (int x) if(x > 0) m=foo(x-1); else m=-1; end end function int m = bar (int x) m=x+1; end function = main() print(foo(bar(foo(5)))); end

  16. Example (Flip the image vertically)

  17. Example (Flip the image vertically) function image ret = flip(image im) int height; int width; int i; int j; height = getheight(im); width = getwidth(im); ret=imnew(width,height,"RGB"); for j=0:height-1 for i=0:width-1 ret[i,height-j-1,"rgb"]=im[i,j,"rgb"]; end end end function = main() image x; image y; x=imread("./rabbit.jpg"); imshow(x); y=flip(x); imshow(y); end

  18. Example (Flip the image vertically)

  19. Example (Flip the image horizontally) function image ret = flip(image im) int height; int width; int i; int j; height = getheight(im); width = getwidth(im); ret=imnew(width,height,"RGB"); for j=0:height-1 for i=0:width-1 ret[width-i-1,j,"rgb"] = im[i,j,"rgb"]; end end end function = main() image x; image y; x=imread("./rabbit.jpg"); imshow(x); y=flip(x); imshow(y); end

  20. Example (Flip the image horizontally)

  21. Example (Blur the image) function = main() image x; image y; kernel k; k= [0.25,0.0,0.25;0.0,0.0,0.0;0.25,0.0,0.25]; x=imread("./rabbit.jpg"); #x=togray(x); imshow(x); y=x@k@k@k@k@k@k@k; imshow(y); imsave(y,"./r3.gif"); end

  22. Example (Blur the image)

  23. Example (Sharpen the image) function = main() image x; image y; kernel k; k= [0.0,-1.0,0.0;-1.0,5.0,-1.0;0.0,-1.0,0.0]; x=imread("./rabbit.jpg"); imshow(x); y=x@k@k; imshow(y); imsave(y,"./r4.gif"); end

  24. Example (Sharpen the image)

  25. Example (Inverse the image) function = main() image x; int i; int j; int width; int height; x=imread("./rabbit.jpg"); width=getwidth(x); height=getheight(x); imshow(x); for j=0:height-1 for i=0:2:width-1 x[i,j,"R"] = 255-x[i,j,"R"]; x[i,j,"G"] = 255-x[i,j,"G"]; x[i,j,"B"] = 255-x[i,j,"B"]; end end imshow(x); end

  26. Example (Inverse the image)

  27. Example (Rotate the image 900) function image ret = rotate90(image im) int height; int width; int i; int j; height = getheight(im); width = getwidth(im); ret=imnew(height,width,"RGB"); for j=0:height-1 for i=0:width-1 ret[height-j-1,i,"rgb"] = im[i,j,"rgb"]; end end end function = main() image x; image y; x=imread("./rabbit.jpg"); imshow(x); y=rotate90(x); end

  28. Example (Rotate the image 900)

  29. Edge Detection kernel k; inti; int j; function image m=edge(image b,kernel k) imshow(b); b = b@k; for i=0:getheight(b) for j=0:getwidth(b) if b[j,i,"grey"] < 0 b[j,i,"grey"] = -b[i,j,"grey"]; end end end imshow(b); imsave(b,"./lena_edge.jpg"); end function = main() image a; image b; a = imread("./lena_color.jpg"); b = togray(a); k = [-5.0, 0.0, 0.0; 0.0, 0.0, 0.0; 0.0, 0.0, 5.0]; edge(b,k); end

  30. Edge Detection

  31. Architectural diagram

  32. Lesson learned • Whenever changes are made, do regression test immediately. • Try to come up with a complete test suite before language design • Use Version Control System • Try to finish the grammar before implementation

More Related