מבוא לעיבוד תמונה
תרגול מספר 1
מבוא לעיבוד תמונה
1
העבודה הבסיסית בMatlab -
Matlabהיא סביבה אינטראקטיבית לחישוב מדעי
והנדסי ,ויזואליזציה ותכנון אלגוריתמים.
איך למצוא מידע נוסף:
פקודות help, helpwin, helpdesk, demoמתוך
סביבת הMatlab -
באינטרנט:
http://www.mathworks.com/support/
מבוא לעיבוד תמונה
2
מטריצות בMatlab -
מטריצות מלבניות הן מבנה הנתונים העיקרי.
כדי לבנות מטריצה פשוט כותבים:
] - a=[0.2,7,11,5וקטור-שורה (אופרטור ,שרשור לאורך שורה)
וקטור ]( x =[5,7,9,11אופרטור )a:b:cx=5:2:11
]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
הוצאת עמודות מסוימות מהמטריצה A=B(:,[1 3 2 4]) B
)A=B’ - (transposeשחלוף מטריצה
מבוא לעיבוד תמונה
3
פעולות עם מטריצות
zeros(3,5), rand(5,1) ones(6,2),eye (6,2( : יצירת מטריצות ייחודיות
^,)(חילוק מטריצי/,)*(כפל מטריצי,-,+ :פקודות על מטריצות
A*x-y , a+b , A^2 :דוגמאות
: element wise פקודות על איברים מתאימים במטריצות
a.*b , a.^2 , a./b
sqrt(x), sin(y), exp(a+b), result=isempty(a (:הפעלת פונקציות
[v,d] = eig(x)
4
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)
מבוא לעיבוד תמונה
Visualization and Graphics
5
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
מבוא לעיבוד תמונה
)ממדי (דוגמה- דו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)
או
6
mesh(x,y,Z)
title(‘Sinc(sqrt(x^2+y^2))’)
מבוא לעיבוד תמונה
M-files
בד”כ לא נוח לעבוד בצורה אינטראקטיבית בלבד
מאבדים את כל מה שנעשה בין sessionל.session -
ניתן לעבוד בעורך ) (editorהמועדף או בעורך של Matlabע”י .edit
כדי להפעיל my_m_file.m scriptפשוט כותבים ב Matlabאת
השם my_m_fileוזה מריץ את הפקודות סדרתית בסביבה
הגלובלית.
הגדרה של פונקציות:
גלובליות -כל פונקציה בקובץ ניפרד בעל אותו שם.
לוקליות -לאחר הפונקציה הראשית מגדירים פנקציות נוספות בהן
משתמשים.
מבוא לעיבוד תמונה
7
Matlab -פונקציות ב
: המכילpyt.m נייצר קובץ
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;
8
מבוא לעיבוד תמונה
ספריות החיפוש של Matlab
חיפוש הקבצים מבוצע בכל הספריות המופיעות בCD -
וב.path -
ניתן לכתוב cdאו pathעל-מנת לראות את תוכנם.
ניתן לכתוב cd d:\mydir :על מנת לשנות את ספריית
העבודה הנוכחית.
ניתן לכתוב path(path,’d:\mydir’) :על-מנת להוסיף
את d:\mydirל( path -לא נשמר ביציאה מ.)Matlab -
ניתן להשתמש גם ב.Path browser -
מבוא לעיבוד תמונה
9
שמירת workspace
הפקודה whosמציגה את המשתנים שבזיכרון.
הפקודה save file_nameשומרת משתנים אלה בקובץ
file_name.matוניתן לשחזר משתנים אלה לתוך
הזיכרון ע"י .load file_name
הפקודה clear aמוחקת את משתנה aמהזכרון.
הפקודה clearמוחקת את כל המשתנים שבזיכרון.
מבוא לעיבוד תמונה
10
בקרת הזרימה
if: פקודת
if i==1,
statement;
end
if res(n,2) ~= 0,
statement;
else,
statement;
end
11
if (A > B),
statement;
elseif (A< B),
statement;
elseif ~A,
statement;
else,
statement;
end
מבוא לעיבוד תמונה
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 אין גלישה כמו ב
12
מבוא לעיבוד תמונה
for פקודת
: לולאה פשוטה
for n=1:1:4,
subplot(2,2,n)
plot(a(:,1),a(:,n+1))
title(num2str(n))
end
13
מבוא לעיבוד תמונה
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
end
14
מבוא לעיבוד תמונה
פונקצית findותנאים לוגיים
תנאים לוגיים~)== , < , > , (not equal)~= ,(not
) find(a==3מחזירה אינדקסים ב aלאיברים שמקיימים את
התנאי הלוגי .הפונקציה מחזירה אינדקס יחיד במטריצה (שרץ לאורך
העמודות) או זוג אינדקסים )( (y,xתלוי במספר פרמטרי החזרה)
]a=[1 2 3;4 5 6;7 8 9
=a
1 2 3
4 5 6
7 8 9
)» z=find(a>7
=z
6
9
)» [y,x]=find(a>7
=y
3
3
=x
2
3
מבוא לעיבוד תמונה
15
ייצוג תמונה בMatlab -
95 102 94 102 95 98 102 99 103 105 110
94 99 94 101 100 98 100 101 101 107 104
97 86 83 97 96 98 104 96 100 102 102
105 91 85 93 89 98 92 95 98 100 102
106 105 99 90 93 96 84 88 93 89 89
98 94 102 99 81 87 86 84 90 91 88
101 104 87 82 90 84 86 87 86 95 102
99 102 90 74 92 101 87 74 77 83 100
92 95 102 100 92 96 110 93 72 71 83
101 87 103 101 105 88 76 94 93 71 69
105 99 105 104 111 101 84 59 78 102 72
מבוא לעיבוד תמונה
16
ייצוג תמונה בMatlab -
כמו קודם נצייר את ) Z=sinc(Rע“י .mesh
Zהיא מטריצה המוצגת כאן כמשטח.
מבוא לעיבוד תמונה
17
ייצוג תמונה בMatlab -
נתייחס ל( Z -הגובה) בתור תמונה )][imshow(Z,
הבהירות של הפיקסל ) (x,yבתמונה מתאימה לגובה
).Z(x,y
מבוא לעיבוד תמונה
18
ייצוג תמונה בMatlab -
אפשר להגדיל גם את Zע"י zoom onוסימון
ע"י עכבר.
אפשר גם בלחצן בחלון הגרפי.
מבוא לעיבוד תמונה
19
סוגי תמונות
– 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
מבוא לעיבוד תמונה
20
פקודות נוספות
– print -djpeg filenameהדפסת figureלקובץ filename.jpg
) –im2double(img), im2uint8(imgמעביר תמונה בין טיפוס 8( uint8
ביט) ו .double -אי אפשר לבצע את כל הפעולות אריתמטיות על . uint8
פעולות גאומטריות:
- a=imcrop(img) לחתוך תת תמונה ע“י סימון עם העכבר.
imresize(img,[10 10],’method’) לשנות גודל תמונה לגודל
.10X10
Imrotate(img,angle,’method’) סיבוב בזוית.
מבוא לעיבוד תמונה
21
© Copyright 2025