Download presentation
Presentation is loading. Please wait.
Published byJeffery Wilcox Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.