מבוא לעיבוד תמונה 1 תרגול מספר 1 מבוא לעיבוד תמונה
2 העבודה הבסיסית ב Matlab - Matlab היא סביבה אינטראקטיבית לחישוב מדעי והנדסי, ויזואליזציה ותכנון אלגוריתמים. איך למצוא מידע נוסף: פקודות help, helpwin, helpdesk, demo מתוך סביבת ה-Matlab באינטרנט:
מבוא לעיבוד תמונה 3 מטריצות ב- Matlab מטריצות מלבניות הן מבנה הנתונים העיקרי. כדי לבנות מטריצה פשוט כותבים: a=[0.2,7,11,5] - וקטור-שורה (אופרטור, שרשור לאורך שורה) x=5:2:11 - וקטור ]5,7,9,11[=x (אופרטורa:b:c ) m=[2.1;66;11;9] עמודה וקטור A=[3 4 5; 4 7 9; 2 6 7] - 3X3 מטריצה הרכבת מטריצה מתת מטריצותB=[a b;c d] העתקת תת מטריצה A=B(3:5, 4:7) הוצאת עמודות מסוימות מהמטריצה B A=B(:,[ ]) A=B ’ - (transpose) שחלוף מטריצה
מבוא לעיבוד תמונה 4 פעולות עם מטריצות יצירת מטריצות ייחודיות: (zeros(3,5), rand(5,1) ones(6,2),eye (6,2 פקודות על מטריצות: +,-,*(כפל מטריצי),/(חילוק מטריצי),^ דוגמאות:A^2, a+b, A*x-y פקודות על איברים מתאימים במטריצות element wise : a./b, a.^2, a.*b הפעלת פונקציות:(sqrt(x), sin(y), exp(a+b), result=isempty(a [v,d] = eig(x) S=sum(A) %S is a row vector of the columns sums of A S=sum(A,2) %S is a column vector of the rows sums of A S=sum(sum(A)) %sum of matrix A [NumRows, NumColumns]=size(M)
מבוא לעיבוד תמונה 5 Visualization and Graphics plot(x,y), plot(x,sin(x)) %plot 1-D function figure, figure(k)%open a new figure hold on, hold off mesh(x_ax,y_ax,z_mat)%view surface contour(z_mat) %view z as top. map subplot(3,1,2) %several plots in figure axis([xmin xmax ymin ymax]) title( ‘ figure title ’ ) %add title to figure
מבוא לעיבוד תמונה 6 Sinc דו-ממדי (דוגמה) a=-9:0.2:9; [x,y] = meshgrid(a); R = sqrt(x.^2+y.^2)+eps; Z = sin(R)./R; mesh(a,a,Z) או mesh(x,y,Z) title( ‘ Sinc(sqrt(x^2+y^2)) ’ )
מבוא לעיבוד תמונה 7 M-files בד”כ לא נוח לעבוד בצורה אינטראקטיבית בלבד מאבדים את כל מה שנעשה בין session ל-session. ניתן לעבוד בעורך (editor) המועדף או בעורך של Matlab ע”י edit. כדי להפעיל my_m_file.m script פשוט כותבים בMatlab את השם my_m_file וזה מריץ את הפקודות סדרתית בסביבה הגלובלית. הגדרה של פונקציות: גלובליות - כל פונקציה בקובץ ניפרד בעל אותו שם. לוקליות - לאחר הפונקציה הראשית מגדירים פנקציות נוספות בהן משתמשים.
מבוא לעיבוד תמונה 8 פונקציות ב- Matlab function [c,d,e]= pyt(a,b) % returns the hypotenuse in a right angle % triangle according to Pythagoras theorem. % c is the hypotenuse, % d and e are the two sharp angles c=sqrt(a.^2+b.^2); d=atan(b/a); e=pi/2-d; נייצר קובץ pyt.m המכיל : נייצר קובץ pyt.m המכיל :
מבוא לעיבוד תמונה 9 ספריות החיפוש של Matlab חיפוש הקבצים מבוצע בכל הספריות המופיעות ב- CD וב- path. ניתן לכתוב cd או path על-מנת לראות את תוכנם. ניתן לכתוב: cd d:\mydir על מנת לשנות את ספריית העבודה הנוכחית. ניתן לכתוב: path(path, ’ d:\mydir ’ ) על-מנת להוסיף את d:\mydir ל- path (לא נשמר ביציאה מ- Matlab). ניתן להשתמש גם ב- Path browser.
מבוא לעיבוד תמונה 10 שמירת workspace הפקודה whos מציגה את המשתנים שבזיכרון. הפקודה save file_name שומרת משתנים אלה בקובץ file_name.mat וניתן לשחזר משתנים אלה לתוך הזיכרון ע"י load file_name. הפקודה clear a מוחקת את משתנה a מהזכרון. הפקודה clear מוחקת את כל המשתנים שבזיכרון.
מבוא לעיבוד תמונה 11 בקרת הזרימה פקודת if: if (A > B), statement; elseif (A< B), statement; elseif ~A, statement; else, statement; end if i==1, statement; end if res(n,2) ~= 0, statement; else, statement; end
מבוא לעיבוד תמונה 12 פקודת switch switch (rem(n,3) ==0) & (rem(n,2)==0) case 0 disp('n is not dividable by 6') case 1 disp('n is dividable by 6') otherwise error('This is impossible.') end אין גלישה כמו ב C
מבוא לעיבוד תמונה 13 פקודת for לולאה פשוטה: for n=1:1:4, subplot(2,2,n) plot(a(:,1),a(:,n+1)) title(num2str(n)) end
מבוא לעיבוד תמונה 14 פקודת 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; break; else b = x; fb = fx; end
מבוא לעיבוד תמונה 15 פונקצית find ותנאים לוגיים תנאים לוגיים==,, (not equal)~=,(not)~ find(a==3) מחזירה אינדקסים ב a לאיברים שמקיימים את התנאי הלוגי. הפונקציה מחזירה אינדקס יחיד במטריצה (שרץ לאורך העמודות) או זוג אינדקסים (y,x) (תלוי במספר פרמטרי החזרה) a=[1 2 3;4 5 6;7 8 9] a = » z=find(a>7) z = 6 9 » [y,x]=find(a>7) y = 3 x = 2 3
מבוא לעיבוד תמונה 16 ייצוג תמונה ב- Matlab
מבוא לעיבוד תמונה 17 ייצוג תמונה ב- Matlab כמו קודם נצייר את Z=sinc(R)ע“י.mesh Z היא מטריצה המוצגת כאן כמשטח.
מבוא לעיבוד תמונה 18 ייצוג תמונה ב- Matlab נתייחס ל-Z (הגובה) בתור תמונה imshow(Z,[]) הבהירות של הפיקסל (x,y) בתמונה מתאימה לגובה Z(x,y).
מבוא לעיבוד תמונה 19 ייצוג תמונה ב- Matlab אפשר להגדיל גם את Z ע"י zoom on וסימון ע"י עכבר. אפשר גם בלחצן בחלון הגרפי.
מבוא לעיבוד תמונה 20 סוגי תמונות Indexed – מטריצה של ערכים [1-P] שהם אינדקסים למפת הצבעים (colormap). Intensity – מטריצה של רמות אפור [0-255]המייצגות את הטווח הדינמי של הערכים. Binary – ערכים לוגים ממופים: 0 – שחור, 1 – לבן. RGB – מטריצה תלת ממדי של ערכי צבע. בכל רמה הטווח הדינמי ממופה. [X,map]=imread(‘file’); %Indexed I=imread(‘pout.tif’); %intensity imwrite(I,‘file.fmt’, ‘fmt’); המרה בין תמונות: gray2ind,ind2gray, rgb2ind, ind2rgb, rgb2gray, im2bw
מבוא לעיבוד תמונה 21 פקודות נוספות print -djpeg filename – הדפסת figure לקובץ filename.jpg im2double(img), im2uint8(img) – מעביר תמונה בין טיפוס uint8 (8 ביט) ו.double - אי אפשר לבצע את כל הפעולות אריתמטיות על uint8. פעולות גאומטריות: a=imcrop(img)- לחתוך תת תמונה ע“י סימון עם העכבר. imresize(img,[10 10], ’ method ’ )לשנות גודל תמונה לגודל 10X10. Imrotate(img,angle, ’ method ’ ) סיבוב בזוית.