Presentation is loading. Please wait.

Presentation is loading. Please wait.

אלכסנדר ברנגולץ דואר אלקטרוני: פישבך 346, טל : 4619 פישבך 346, טל : 4619 שעות קבלה : ב ’ 18:30-19:30 אלכסנדר ברנגולץ דואר אלקטרוני:

Similar presentations


Presentation on theme: "אלכסנדר ברנגולץ דואר אלקטרוני: פישבך 346, טל : 4619 פישבך 346, טל : 4619 שעות קבלה : ב ’ 18:30-19:30 אלכסנדר ברנגולץ דואר אלקטרוני:"— Presentation transcript:

1 אלכסנדר ברנגולץ דואר אלקטרוני: aer@cs.technion.ac.il פישבך 346, טל : 4619 פישבך 346, טל : 4619 שעות קבלה : ב ’ 18:30-19:30 אלכסנדר ברנגולץ דואר אלקטרוני: aer@cs.technion.ac.il פישבך 346, טל : 4619 פישבך 346, טל : 4619 שעות קבלה : ב ’ 18:30-19:30 עיבוד אותות ותמונות במחשב

2 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 2 היכן תעבדו ? תואר ראשון : תואר ראשון : – תחנות st194s5-st209s5 UltraSparc בחדר 402 – תחנות st100hp-st150hp HP/712/100 בחדר 200 – שרת HP/9000/879/K260 csst דרך telnet תואר שני : תואר שני : – שרת Sparc Ultra-Enterprise csd דרך telnet –X-terminals בחדרים שאלות על בעיות במערכת שאלות על בעיות במערכת : בדואר האלקטרוני ל - helpdesk@cs.technion.ac.il

3 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 3 העבודה הבסיסית ב -Matlab Matlab היא סביבה אינטראקטיבית לחישוב מדעי והנדסי ולויזואליזציה המבוססת על מטריצות. Matlab היא סביבה אינטראקטיבית לחישוב מדעי והנדסי ולויזואליזציה המבוססת על מטריצות. מידע בסיסי - הרצאה זו. מידע בסיסי - הרצאה זו. איך למצוא מידע נוסף : איך למצוא מידע נוסף : – פקודות help, helpwin, helpdesk, demo מתוך ה -Matlab – באינטרנט : http://www.cs.technion.ac.il/~aer/matlab-help/helpdesk. html http://www.cs.technion.ac.il/~aer/matlab-help/helpdesk. html –Matlab Primer: http://www.technion.ac.il/~aer/Books/Matlab-Primer-4.1.ps.gz http://www.technion.ac.il/~aer/Books/Matlab-Primer-4.1.ps.gz

4 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 4 מטריצות ב -Matlab מטריצות מלבניות הן מבנה הנתונים העיקרי ב - Matlab. מטריצות מלבניות הן מבנה הנתונים העיקרי ב - Matlab. כדי להכניס מטריצה פשוט כותבים : כדי להכניס מטריצה פשוט כותבים : – [l=[3 7 11 5 - וקטור - שורה בן 4 אברים – x=0:0.01:1 - וקטור 1x101 אברים – [m=[2;66;11;9 - וקטור - עמודה – [ A=[3 4 5; 4 7 9; 2 6 7 - מטריצה 3x3 – [B=[m m;m m - הרכבת מטריצה מוקטורים – (A=B(3:5, 4:7 - הוצאת תת - מטריצה – ([A=B(:,[1 3 2 4 - החלפת מקום של שני עמודות

5 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 5 פעולות עם מטריצות יצירת מטריצות ייחודיות : (zeros(3,5), ones(6,2 יצירת מטריצות ייחודיות : (zeros(3,5), ones(6,2 פקודות על מטריצות, וקטורים ואברים בודדים :+,-,*,/,\,^ פקודות על מטריצות, וקטורים ואברים בודדים :+,-,*,/,\,^ a^2 או a+b או A*x-y פקודות על אברים מתאימים במטריצות ( כמו במערכים ): פקודות על אברים מתאימים במטריצות ( כמו במערכים ): a./b או a.^2 או a.*b פונקציות : (sqrt(x), sin(y), exp(a+ib), besselj(k,z פונקציות : (sqrt(x), sin(y), exp(a+ib), besselj(k,z

6 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 6 Visualization and Graphics plot(x,y), plot(x,sin(x)), plot(sin(2*x),cos(3*x)), semilogy(x,exp(x),x,gamma(x)) plot(x,y), plot(x,sin(x)), plot(sin(2*x),cos(3*x)), semilogy(x,exp(x),x,gamma(x)) figure and figure(k) figure and figure(k) hold on, hold off, hold hold on, hold off, hold mesh(x,y,z), mesh(z), meshc(z) mesh(x,y,z), mesh(z), meshc(z) contour(z) contour(z) subplot(3,1,2) subplot(3,1,2) axis([0 22 3 7]), axis([0 22 3 7]), axis([min(x) max(x) -1 1]) axis([min(x) max(x) -1 1])

7 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 7 Sinc דו - ממדי ( דוגמה ) a=-9:.2:9; a=-9:.2:9; [x y] = meshgrid(a); [x y] = meshgrid(a); R = sqrt(x.^2+y.^2)+eps; R = sqrt(x.^2+y.^2)+eps; Z = sin(R)./R; Z = sin(R)./R; mesh(a,a,Z) mesh(a,a,Z)או mesh(x,y,Z) mesh(x,y,Z) title(‘Sinc(x^2+y^2)’) title(‘Sinc(x^2+y^2)’)

8 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 8 בקרת הזרימה פקודת if: פקודת if: if (A > B) if (A > B)‘greater’ elseif (A< B) ‘smaller’ elseif (A == B) ‘equal’ else ‘Unexpected situation’ ‘Unexpected situation’end if isunix if isunix‘unix’end if res(n,2) ~= 0 if res(n,2) ~= 0‘odd’else‘even’end

9 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 9 פקודת switch switch (rem(n,4) ==0)+ (rem(n,2)==0) case 0 ‘odd’ case 1 ‘single even’ case 2 ‘double even’ otherwise error(‘This is impossible’) end רק case אחד מתבצע !

10 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 10 פקודת for לולאה פשוטה : לולאה פשוטה : for n=1:4 subplot(2,2,n)plot(a(:,1),a(:,n+1))title(sprintf(‘n=%d’,n+1)end

11 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 11 פקודת for לולאה מקוננת : לולאה מקוננת : for i=1:25 for j=1:2:41 M=sin(i^2+j^3);endend

12 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 12 פקודות while a = 4; fa=sin(a); b = 2; fb = sin(b); while a - b > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend

13 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 13 פקודות while ו break a = 4; fa=sin(a); b = 2; fb = sin(b); while a - b > 5 * eps x = (a+b)/2; fx = sin(x); if fx == 0 break else if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend

14 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 14 פונקציות ב -Matlab function x= solve(a,b) fa=sin(a); fb = sin(b); while abs(a - b) > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend נייצר קובץ solve.m המכיל :

15 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 15 פונקציות ב -Matlab function x= solve(a,b) fa=sin(a); fb = sin(b); while abs(a - b) > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend נייצר קובץ solve.m המכיל :

16 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 16 פונקציות ב -Matlab function [x,fx]= solve(a,b) fa=sin(a); fb = sin(b); while abs(a - b) > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend נייצר קובץ solve.m המכיל :

17 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 17 פונקציות ב -Matlab function [x,fx]= solve(a,b) fa=sin(a); fb = sin(b); while abs(a - b) > 5 * eps x = (a+b)/2; fx = sin(x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend נייצר קובץ solve.m המכיל :

18 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 18 פונקציות ב -Matlab function [x,fx]= solve(a,b,f) fa=feval(f,a); fb = feval(f,b); while abs(a - b) > 5 * eps x = (a+b)/2; fx = feval(f,x); if sign(fx) == sign(fa) a = x; fa=fx; else b = x; fb = fx; endend נייצר קובץ solve.m המכיל :

19 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 19 M-filesM-files בד ” כ לא נוח לעבוד בצורה אינטראקטיבית בלבד בד ” כ לא נוח לעבוד בצורה אינטראקטיבית בלבד – מאבדים את כל מה שנעשה בין session ל - session – לא ניתן לעבוד בעורך (editor) המועדף כדי להפעיל קובץ my_m_file.m פשוט כותבים ב -Matlab את השם my_m_file וזה עובד... כדי להפעיל קובץ my_m_file.m פשוט כותבים ב -Matlab את השם my_m_file וזה עובד... פקודות שימושיות : פקודות שימושיות : – load Mydata.dat - טוענת את תוכן הקובץ Mydata.dat למשתנה Mydata – ( י eval(‘Command - מבצעת את ה -”Command” ב -Matlab – what - מחזירה את השמות של M-files ב current directory – who and whos - מחזירות את שמות המשתנים המוגדרים כעת – (s=sprintf(‘Mydata%d’,i - זהה לאותה פקודה ב -C

20 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 20 ייצוג תמונה ו -Matlab 95 102 94 102 95 98 102 99 103 105 110 95 102 94 102 95 98 102 99 103 105 110 94 99 94 101 100 98 100 101 101 107 104 94 99 94 101 100 98 100 101 101 107 104 97 86 83 97 96 98 104 96 100 102 102 97 86 83 97 96 98 104 96 100 102 102 105 91 85 93 89 98 92 95 98 100 102 105 91 85 93 89 98 92 95 98 100 102 106 105 99 90 93 96 84 88 93 89 89 106 105 99 90 93 96 84 88 93 89 89 98 94 102 99 81 87 86 84 90 91 88 98 94 102 99 81 87 86 84 90 91 88 101 104 87 82 90 84 86 87 86 95 102 101 104 87 82 90 84 86 87 86 95 102 99 102 90 74 92 101 87 74 77 83 100 99 102 90 74 92 101 87 74 77 83 100 92 95 102 100 92 96 110 93 72 71 83 92 95 102 100 92 96 110 93 72 71 83 101 87 103 101 105 88 76 94 93 71 69 101 87 103 101 105 88 76 94 93 71 69 105 99 105 104 111 101 84 59 78 102 72 105 99 105 104 111 101 84 59 78 102 72

21 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 21 ייצוג תמונה ב -Matlab כמו קודם נייצר (Z=sinc(R כמו קודם נייצר (Z=sinc(R

22 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 22 ייצוג תמונה ב -Matlab נתיחס ל -Z בתור תמונה (image(100*Z נתיחס ל -Z בתור תמונה (image(100*Z

23 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 23 ייצוג תמונה ב -Matlab נפעיל פקודה שכוללת את הנרמול ל -Z : (imagesc(Z נפעיל פקודה שכוללת את הנרמול ל -Z : (imagesc(Z

24 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 24 ייצוג תמונה ב -Matlab אפשר להגדיל גם את Z: אפשר להגדיל גם את Z:

25 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 25 פקודות נוספות <print -depsc2 <filename - הדפסת תמונה או איור <print -depsc2 <filename - הדפסת תמונה או איור (im2double(img), im2uint8(img - הופך תמונה (im2double(img), im2uint8(img - הופך תמונה (‘X,map]=imread(‘file] - לקרוא תמונה מקובץ (‘X,map]=imread(‘file] - לקרוא תמונה מקובץ (imwrite(X,map,’file’,fmt - רשום תמונה לקובץ (imwrite(X,map,’file’,fmt - רשום תמונה לקובץ (imshow(img,n - להציג תמונה ב n רמות אפור (imshow(img,n - להציג תמונה ב n רמות אפור

26 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 26 חומר מתקדם - תכנות ב -C ל - Matlab וכעת נרצה לבנות פונקציה myfunc שנוכל לקרוא לה מתוך Matlab: וכעת נרצה לבנות פונקציה myfunc שנוכל לקרוא לה מתוך Matlab: [x, y]=myfunc(a,b,c) לשם כך נרשום קובץ myfunc.c ובו פונקציה : לשם כך נרשום קובץ myfunc.c ובו פונקציה : נקמפל אותו mex myfunc.c ונפעיל... נקמפל אותו mex myfunc.c ונפעיל... #include #include void mexFunction(int nlhs,mxArray *plhs[], int nrhs, constmxArray *prhs[]) int nrhs, constmxArray *prhs[]){ mexPrintf("Number of input arguments %d\n", nrhs); mexPrintf("Number of input arguments %d\n", nrhs); mexPrintf("Number of output arguments %d\n", nlhs); mexPrintf("Number of output arguments %d\n", nlhs);}

27 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 27 קבלת מידע נוסף על הנתונים ([mxGetNumberOfDimensions(phrs[i- מספר ממדים במערך [phrs[i ([mxGetNumberOfDimensions(phrs[i- מספר ממדים במערך [phrs[i ([mxGetDimensions(phrs[i- ממדים של מערך [phrs[i ([mxGetDimensions(phrs[i- ממדים של מערך [phrs[i ([mxGetM(phrs[i ו ([mxGetN(phrs[i - ממדים של מטריצה דו - ממדית ([mxGetM(phrs[i ו ([mxGetN(phrs[i - ממדים של מטריצה דו - ממדית ([void *mxGetData(phrs[i- מצביע להתחלה של נתונים במערך ( של Matlab) ([void *mxGetData(phrs[i- מצביע להתחלה של נתונים במערך ( של Matlab) ([mxIsInt8(...),mxIsComplex(...),mxIsDouble(phrs[i- בדיקות ([mxIsInt8(...),mxIsComplex(...),mxIsDouble(phrs[i- בדיקות אין ב -Matlab שום בדיקה של נכונות הנתונים המועברים לתוכניות חיצוניות. כל הבדיקות על האחראיות הבלעדית של מתכנת הפונקציה. #include #include void mexFunction(int nlhs,mxArray *plhs[], int nrhs, constmxArray *prhs[]) int nrhs, constmxArray *prhs[]) { …} חשוב מאוד

28 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 28 נייצר משהו משלנו... יצירת מטריצת Matlab: יצירת מטריצת Matlab: יצירת מערך בממד כלשהו : יצירת מערך בממד כלשהו : אפילו אם כמות משתני יציאה היא אפס, ניתן לכתוב ל - [phls[0, ערכו יישמר במשתנה ans בעת חזרה מפונקציה אפילו אם כמות משתני יציאה היא אפס, ניתן לכתוב ל - [phls[0, ערכו יישמר במשתנה ans בעת חזרה מפונקציה plhs[i] = mxCreateDoubleMatrix(rows, cols, mxCOMPLEX); data_real = mxGetPr(plhs[i]); /* already (double *) */ data_img = mxGetPi(plhs[i]); int dims[]={rows,cols,8,9,11} plhs[i] = mxCreateNumericArray(num_dims, dims, mxINT16_CLASS, mxREAL); data = (short *) mxGetPr(plhs[i]); /* was (double *) */

29 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 29 פונקציות אחרות (...)mxFree(...),mxRealloc(...),mxCalloc(...),mxMalloc- להבדיל משימוש בפונקציות סטנדרטיות של C הפונקציות האלו עובדות עם מנהל זיכרון של Matlab, ולמשל, מפנות זיכרון בסיום של הרצת הפונקציה. (...)mxFree(...),mxRealloc(...),mxCalloc(...),mxMalloc- להבדיל משימוש בפונקציות סטנדרטיות של C הפונקציות האלו עובדות עם מנהל זיכרון של Matlab, ולמשל, מפנות זיכרון בסיום של הרצת הפונקציה. (…)mxDestroyArray- מפנה זיכרון (…)mxDestroyArray- מפנה זיכרון (…)mxMakeArrayPersistent- אוסר פנוי המערך בסיום הפונקציה. (…)mxMakeArrayPersistent- אוסר פנוי המערך בסיום הפונקציה. (...)mxSetM(...),mxSetDimensions(...),mxSetData- שינוי בנתונים (...)mxSetM(...),mxSetDimensions(...),mxSetData- שינוי בנתונים (“mxSetName(mxArray *,”name - לתת \ לשנות שם נרשם במערך (“mxSetName(mxArray *,”name - לתת \ לשנות שם נרשם במערך (“mexPrintf(“msg - במקום (“printf(”msg (“mexPrintf(“msg - במקום (“printf(”msg (“mexWarnMsgTxt(“msg - במקום (“fprintf(stderr,”msg (“mexWarnMsgTxt(“msg - במקום (“fprintf(stderr,”msg (“mexErrMsgTxt(“msg - גורם גם לסיום התוכנית. (“mexErrMsgTxt(“msg - גורם גם לסיום התוכנית.

30 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 30 קריאה לפונקציות Matlab מתוכנית נייצר פונקציה mysin זהה לפונקציה sin הקיימת ב Matlab. לשם כך נרשום בקובץ mysin.c: נייצר פונקציה mysin זהה לפונקציה sin הקיימת ב Matlab. לשם כך נרשום בקובץ mysin.c: #include #include void mexFunction(int nlhs,mxArray *plhs[], int nrhs, constmxArray *prhs[]) int nrhs, constmxArray *prhs[]){ mexCallMATLAB(nlhs,plhs,nrhs,prhs,”sin”); mexCallMATLAB(nlhs,plhs,nrhs,prhs,”sin”);}

31 © א ’ ברנגולץ עיבוד תמונות ואותות במחשב 31 טיפול בעצמים הקיימים מחוץ לתוכנית (“mxArray *mexGetArray(“matrix_name”, “workspace- להוציא מערך בשם “matrix_name” מסביבת עבודה (base, caller, global) (“mxArray *mexGetArray(“matrix_name”, “workspace- להוציא מערך בשם “matrix_name” מסביבת עבודה (base, caller, global) (“mexPutArray(mxArray *, “workspace - להעביר לסביבת עבודה (“mexPutArray(mxArray *, “workspace - להעביר לסביבת עבודה (“mexEvalString(“Command to execute - לבצע פקודה ב -Matlab (“mexEvalString(“Command to execute - לבצע פקודה ב -Matlab (“mxArray *mexGet(figure,”property - (“mxArray *mexGet(figure,”property - (* mexSet(figure,”property”, mxArray - (* mexSet(figure,”property”, mxArray - טיפול באיורים


Download ppt "אלכסנדר ברנגולץ דואר אלקטרוני: פישבך 346, טל : 4619 פישבך 346, טל : 4619 שעות קבלה : ב ’ 18:30-19:30 אלכסנדר ברנגולץ דואר אלקטרוני:"

Similar presentations


Ads by Google