Presentation is loading. Please wait.

Presentation is loading. Please wait.

MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang Shariar Zaber Kazi

Similar presentations


Presentation on theme: "MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang Shariar Zaber Kazi"— Presentation transcript:

1 MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang (ph2249@columbia.edu)ph2249@columbia.edu Shariar Zaber Kazi (szk2103@columbia.edu)szk2103@columbia.edu Shih-Hao Liao (sl2937@columbia.edu)sl2937@columbia.edu PoHsu Yeh (py2157@columbia.edu)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 function = main() image x; x=imread("./rabbit.jpg"); print(x[1,1,"RGB"]); end 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){ ………………………… } 26 lines of java code

4 Easy to do image arithmetic operation function = main() image x; image y; x=x+1; x=x-1; x=x*1; x=x/1; x=x+y; end 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){ ……………………} 150 lines of java code

5 Easy to do image convolution function = main() image x; kernel k; x=x@k; end 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){ ……………………. } 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 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'“) function int m = test (int x) end function = main () float x; x=1.0; test(x); end

8 Easy to debug function int m = test () end function = main () int x; x=1; test(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'") 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

9 No cost for license Image Processing Toolbox 6.2 (MATLAP) Individual License For: End user Activation types: Standalone named user or designated computer $1,000 Buy Request a Quote (via fax or e-mail) Contact Sales Buy Request a Quote Contact Sales For an end user who wants to personally install, administer, and operate the software. Group License For: Workgroup Activation Types: Standalone named users or designated computers Request a Quote (via fax or e-mail) Contact Sales Request a Quote 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; function=main() x=1; If x==1 x=x+1; elseif x==2 x=x+2; elseif x==3 x=x+3; else x=x+4; end int x; funciton=main() x=1; If x==1 x=x+1; end Int x; function=main() x=1; if x==1 x=x+1; elseif x==2 x=x+2; end Int x; function=main() x=1; if x==1 x=x+1; else x=x+2; end

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

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

15 Recursion function int m = foo (int x) if(x > 0) m=foo(x-1); else m=-1; 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 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 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 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 imshow(x); end

26 Example (Inverse the image)

27 Example (Rotate the image 90 0 ) 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 function = main() image x; image y; x=imread("./rabbit.jpg"); imshow(x); y=rotate90(x); end

28 Example (Rotate the image 90 0 )

29 Edge Detection kernel k; int i; 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 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


Download ppt "MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang Shariar Zaber Kazi"

Similar presentations


Ads by Google