SlideShare a Scribd company logo
1 of 36
Download to read offline
1
กด Ctrl N เพื่อที่จะสร้างหน้าใหม่ในการทางาน
2
การใช้งานของภาษา C ต้องมี การกาหนดฟังก์ชันหลักการเขียนภาษา C
คือ
void main()
{
………..
}
#include <stdio.h>
void main()
{
}
1
2
#include <stdio.h>
เป็นคาสั่ง include ใช้สาหรับรวมเอา
ไฟล์ส่วนหัว หรือ Header file เข้ามา
ในโปรแกรม เพื่อให้เราเรียกใช้
ฟังก์ชั่นต่างๆ ในภาษา C
3
int x,y,z;
x = 20;
y = 2;
z = x + y;
printf("%d + %d = %dn",x,y,z);
printf("Hello Geoinformaticsnnn");
printf("My name is Jariya Jongkamnnn");
printf("Doraemon");
3
กรอกโค้ดที่ต้องการหา int x,y,z;
int คือ กาหนดตัวแปร x = 20;
y = 2;
z = x + y;
printf("%d + %d = %dn",x,y,z);
printf("Hello Geoinformaticsnnn");
printf("My name is Jariya Jongkamnnn");
printf("Doraemon");
4
จากนั้นกด f11 เพื่อที่จะแสดงหน้าจอ สีดาขึ้นมา
ชื่อโปรแกรม หาค่าผลบวกของเลขจานวนเต็ม 2 จานวน
ตัวแปรที่ใช้ x เก็บค่าจานวนเต็มที่ 1 วิธีการแก้ปัญหาใช้สมการ sum = x + y
y เก็บค่าจานวนเต็มที่ 2 เพื่อให้รู้ค่าของตัวแปรที่เรากาหนดว่า x = 20;
sum เก็บค่าผลบวกของจานวนเต็มทั้ง 2 จานวน y = 2;
ชนิดของข้อมูล x, y, sum เป็นข้อมูลชนิดเลขจานวนเต็ม (integer) x + y= 22
4
5
#include "stdio.h"
void main()
{ ขั้นตอนแรกของการใช้ภาษา C
}
1
2
int num1, num2, sum;
ขั้นตอนการประกาศตัวแปร int num1, num2, sum;
6
int num1, num2, sum; กรอกโค้ดที่ต้องการหา
printf("please insert to number1:");
scanf("%d",&num1);
printf("please insert to number2:");
scanf("%d",&num2);
sum = num1 * num2;
printf("%d x %d = %d",num1,num2,sum);
กด f11 เพื่อแสดงค่า
ผลลัพธ์ของข้อมูลที่
ต้องการหา
3
4
ขั้นตอนการแสดงผลในการหาผลคูณ
แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด
num 1=5
num2=2
sum = num1 * num2; หรือ 5 x 2 = 10
7
int ce, sum; กรอกโค้ดที่ต้องการหา
printf("please insert to C.E.:");
scanf("%d",&ce);
sum = ce + 543;
printf("C.E. convert to B.D. is:%d",sum);
กด f11 เพื่อแสดงค่าผลลัพธ์
ของข้อมูลที่
1
2
ผลรับที่ได้จากการหาค่าของ โจทย์จงแปลง C.E.(ค.ศ) เป็น B.D (พ.ศ)
8
แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด
โจทย์area = 0.5 * (w1 + w2) *h;
w1 = 5
w2 = 3
h = 4
area = 0.5 * (w1 + w2) *h; หรือ 0.5 x ( w1 + w2 ) x 4 = 16
float w1,w2,h,area;
printf("please insert to w1:");
scanf("%f",&w1);
printf("please insert to w2:");
scanf("%f",&w2);
printf("please insert to heigh:");
scanf("%f",&h);
area = 0.5 * (w1 + w2) *h;
printf("result area is to %f",area);
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
9
รูปที่ 1
char A = 'a';
A = A + 15;
printf("A result is %c",A);
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z
เช่น char A = 'a';
A = A + 15;
โดยเริ่มนับตั้งแต่ A จนถึงตัวที่ 15 ผลลัพธ์ที่ได้คือ P
10
รูปที่ 2
char B = 'b';
B = B + 20;
printf("B result is %c",B);
กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
1
2
การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z
เช่น char B = 'b';
B = B + 15;
โดยเริ่มนับตั้งแต่ B จนถึงตัวที่ 20 ผลลัพธ์ที่ได้คือ
V
11
โปรแกรมสอบถามอายุมากกว่าหรือเท่ากับ60ปีให้บอกว่าแก่ แต่ถ้าน้อยกว่า 60ปี ให้บอกว่าหน้าอ่อน
If และ else
• If เป็นคาสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สาหรับผลการเปรียบที่เป็นเท็จ เราจะใช้else ในการ
ตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทาตรงกันข้ามกับ if
• ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน 60 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่
1. วิเคราะห์โจทย์
กาหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age
2. ใช้ if (age >= 60) และใช้else ถ้าอายุยังไม่ถึง 60 ปี
int age;
printf("How old are you?:");
scanf("%d",&age);
if(age >= 60)
{
printf("You are old!!!!n");
}
else
{
printf("You are young(*_*)n");
}
printf("good bye (^/^)");
return 0;
}
1
2
กด f11 เพื่อแสดงค่าผลลัพธ์ของ
12
โปรแกรมการใช้ภาษา C คานวณหาเกรด
• else if ((score >=65) && (score <=69))
• printf("Grade C+");
• else if((score >=60) &&(score <= 64))
• printf("Grade C");
• else if ((score >=55) && (score <= 59))
• printf("Grade D+");
• else if ((score >=50) && (score <= 54))
• printf("Grade D");
• else
• printf("Grade F!!!!");
• return 0;
• int score;
• printf("Please input your score:");
• scanf("%d",&score);
• if((score >=80) && (score<=100))
• printf("Grade A");
• else if ((score >=75) && (score <=79))
• printf("Grade B+");
• else if ((score >=70) && (score <=74))
• printf("Grade B");
กด F11เพื่อจะแสดงผลว่าเราจะได้เกรด
อะไร
13
การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ
การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม
การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ
การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม่
14
• คาสั่ง for นี้ใช้ในกรณีเราต้องการทาซ้าโดยทราบจานวนครั้งที่แน่นอน เช่น ถ้าต้องการทาซ้า 20 ครั้ง , 30 ครั้ง , 40 ครั้ง
เรามักจะใช้for
• การใช้for เราต้องกาหนดจานวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคาสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทา
หน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจานวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้
ครบตามจานวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ
หลักการใช้for
15
การใช้ while กับ do while
การใช้while จะแตกต่างกับ do while จะมีลักษณะการใช้งานคล้ายๆ กันแต่แตกต่างกันตรงที่ว่า
while จะมีการตรวจสอบเงื่อนไขก่อน ถึงจะเริ่มทาในครั้งแรก และยังจะตรวจสอบเงื่อนไขสาหรับตอบต่อๆ ไปอีกด้วย
แต่ do while จะเริ่มทาทางานตามคาสั่งก่อน 1 ครั้ง จากนั้นถึงจะตรวจสอบเงื่อนไงสาหรับรอบต่อ ๆไป
while (condition) {
statement1;
statement2;
...
statementN;
}
รูปแบบการใช้งานของ while
จะเริ่มต้นด้วยการกาหนดเงื่อนไข ที่จะให้ทางานเป็น Loop ก่อนเสมอ
และภายใน statement ใน Loop ควรจะมี statement ที่ทาการเปลี่ยนแปลงค่าตัวแปรที่ใช้ตรวจสอบ
มิเช่นนั้น Loop อาจทางานไม่หยุด
การใช้ while กับ do while
16
ในตัวอย่างนี้ จะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10
เงื่อนไขที่ให้ loop ทางานคือ
ตราบใด ที่ ตัวแปร count น้อยกว่าหรือเท่ากับ 10 ให้ทางานต่อไปเรื่อยๆ while (count <= 10)
โดยที่ ตัวแปร count จะมีค่าเริ่มต้นเท่ากับ 1
และภายใน Loop จะมีการเปลี่ยนแปลงค่าของตัวแปร count คือ ทุกๆ รอบการทางาน
ตัวแปร count จะมีค่าเพิ่มขึ้นมา 1 count++
การใช้while (count <= 10)
17
ข้อแตกต่างของ do while จาก while คือ do while จะเริ่มทางานครั้งแรกโดยไม่ตรวจสอบเงื่อนไขเลย
แต่จะเริ่มตรวจสอบเงื่อนไขสาหรับรอบครั้งถัดไป
do {
statement1;
statement2;
...
statementN;
} while (condition);
รูปแบบการใช้งาน จะแตกต่างจาก while ตรงที่ว่า คาสั่ง while (condition) จะย้ายจากบรรทัดบนสุดไปอยู่บรรทัดท้ายสุด
สิ่งที่เปลี่ยนแปลงไปคือ ใช้do while
เข้ามาแทน while
18
การหาค่าโดยกาหนด a=5 , b=7 c= a*b=35
19
• ทดลองสร้าง row vector ที่มีสมาชิกประกอบด้วย 1,2,3,4,5 และกาหนดค่าให้ตัวแปร x
>>x = [1 2 3 4 5]
X =
1 2 3 4 5
ใช้เครื่องหมาย = สาหรับกาหนดค่าจากทางด้านขวามือไปที่ตัวแปรทางซ้ายมือเป็นชนิดเวกเตอร์ โดยใช้เครื่องหมาย bracket [] ซึ่ง
ภายใน bracket จะระบุสมาชิก 5 จานวน แบ่งแยกออกจากกันด้วยเครื่องหมาย ช่องว่าง Space หรืออาจใช้comma , เช่นเดียวกับ
ทางคณิตศาสตร์ทั่วไป
>>x = [1 2 3 4 5]
X =
1 2 3 4 5
ผลลัพธ์ที่เราได้มีทั้งหมด 5 จานวน
1
2
20
• เวกเตอร์อีกลักษณะหนึ่งคือ Column vector จะสร้างคล้ายๆกันแต่เครื่องหมายที่จะแยกสมาชิกออกจากกันจะเปลี่ยนไปใช้
เครื่องหมาย semicolon ; แทน หรือทาการสร้าง row vector ก่อนแล้วทาการ transpose ด้วยเครื่องหมาย ‘ เช่น
>> y = [4;5;6;7;8]
Y =
4
5
6
7
8
หรือ y = [ 4 5 6 7 8]
>> y’
>> y = [4;5;6;7;8]
Y =
4
5
6
7
8
>> y = [4;5;6;7;8] ผลลัพธ์ออกมาจะเป็นแนวตั้งถ้าเติม
เครื่องหมายนี้ปิดท้าย จะเป็นการหยุดเพื่อหาค่าตัวแปร
1
2
21
ต้องการหาค่าโดยเพิ่มขึ้นทีละ 3 เช่น [ 0 : 3 : 20 ] โดยแสดงกราฟ
กราฟแบบเส้น
>> x = [ 0 : 3 : 20 ]
แบบเส้น
กาหนด >> plot (x
จุดสิ้นสุด 20ระยะห่างระหว่างช่วง 3เริ่มนับที่ 0
>> x = [ 0 : 3 : 20 ]
3
4
22
กราฟแบบเส้นปะไข่ปลา
>> plot(x,'--bs')
กราฟแบบวงกลม
>> plot(x,'b--o')
5
6
23
การสร้างโปรแกรมWebcam
กราฟเส้นสีฟ้า
>> plot(x,'c--*')
7
24
การเลือก GUIDE Application Options
• การเลือก GUIDE Application Options เมื่อเราต้องการจะใช้GUIDE นั้น ครั้งแรก บน MATLAB COMMAND
WONDOW ที่prompt เราสั่ง
» guide
จากนั้น Layout Editor จะปรากฏขึ้น ซึ่งมีลักษณะดังรูป
25
คลิก Select เพื่อวาดตาราง
1
3
คลิกเลือก Titie
แล้วพิมพ์ข้อข้อตามที่ต้องการ
4
หัวข้อที่ปรับแก้
5
ดับเบิลคลิก Panel จะขึ้นเป็นตาราง
2
26
คลิก Select เพื่อวาดตาลางที่ 2
6
คลิก Toggle Button เพื่อสร้างช่องแสดง
ผลลัพธ์และช่องสาหรับปุ่มเครื่องคิดเลข
7
พิมพ์guibe แล้ว enter >> กด File >> Preferences >> ติกชช่อง
แรก >> กด ok
ดับเบิลคลิก Panel จะขึ้นเป็นตาราง Title พิมพ์เครื่องคิดเลข
Tag คือการตั้งชื่อไฟล์นั้นๆ
27
ใช้new script คือการ
เขียนคาสั่งทีเดียว
จะขึ้นหน้าต่างใหม่แบบนี้
1
2
28
• ขั้นตอนแรกเป็นการอ่านไฟล์คู่ภาพที่จะนามาทา 3D โดยที่เรากาหนดได้แก่
• l1 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางด้านซ้ายมือ
• l2 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางขวามืv
• rgb2gray เป็นฟังก์ชันที่แปลงจากภาพสีให้เป็นค่าระดับสีเทาเพื่อง่ายต่อการหาจุดที่น่าสนใจในขั้นตอนต่อไป
• imread เป็นฟังก์ชันไว้อ่านไฟล์ภาพต่างๆ เช่น .jpg, .TIFF, .PNG, . BMP
ตัวอย่าง :
L1 = rgb2gray(imread('left.jpg'));
L2 = rgb2gray(imread('right.jpg'));
%read image and transform gray
L1 = rgb2gray(imread('left.jpg'));
L2 = rgb2gray(imread('right.jpg'));
3
ขั้นตอนที่ 1 เขียนให้อ่านไฟล์คู่ภาพ
29
ฟังก์ชัน imshowpair เป็นการแสดงแบบคู่ภาพพร้อมกัน
ซึ่งประกอบด้วย(ค่าตัวแปร1, ค่าตัวแปรที่2 )
imshowpair(L1,L2,'montage');
title('L1(left);L2(right)');
figure;
imshowpair(L1,L2,'ColorChannel','red-cyan');
title('Composite Image (Red - Left Image, Cyan – Right Image)');
เปลี่ยนภาพเทา เป็น
แดง-ฟ้าอ่อน
ตรง Titerจะพิมพ์ตัว
เล็กหรือตัวพิมพ์ใหญ่
ก็ได้ hold on;
ให้ภาพอยู่ในเฟรม
เดียวกัน
4
30
ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
เลือกจุดที่น่าสนใจในคู่ภาพของแต่ละภาพ ซึ่ง blobs1 และ blobs2 เป็นชื่อตัวแปรของแต่ละภาพ ซึ่งจะเก็บค่าตามที่
ฟังก์ชัน detectSURFFeatures เป็นฟังก์ชันตรวจจับพื้นที่ที่มีลักษณะคล้ายกันของทั้ง 2 ภาพ โดยแสดงออกมาเป็นวงกลมใช้
ฟังก์ชัน 'MetricThreshold', 2000 เช่นนี้
blobs1 = detectSURFFeatures(L1,'MetricThreshold',2000);
blobs2 = detectSURFFeatures(L2,'MetricThreshold',2000);
5
ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
31
ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
การค้นหาตาแหแน่งของจุดที่เหมือนกันของแต่ละภาพ
matchedPoints1 = validBlobs1(indexPairs(:,1),:);
matchedPoints2 = validBlobs2(indexPairs(:,2),:);
ใช้ค่าความแตกต่างสัมบูรณ์ sum of absolute differences (SAD) ในการกาหนดเป็นตัวชี้ของการจับคู่ของเส้น
indexPairs = matchFeatures(features1, features2, 'Metric','SAD','MatchThreshold', 5)
ใช้ฟังก์ชัน extracFeatures และ matchFeatures ในการหาจุดสมมติที่ตรงกัน ในแต่ละblob ตามขั้นตอนที่แล้ว
[features1, validBlobs1] = extractFeatures(I1, blobs1);
[features2, validBlobs2] = extractFeatures(I2, blobs2);
6
7
8
ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
32
แสดงการจับคู่ของจุดที่เหมือนกันบนภาพผสมของคู่ภาพ
figure;
showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2);
แสดงสัญลักษณ์
legend('Putatively matched points in L1', 'Putatively matched points in L2');
9
10
00
33
ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
ความถูกต้องของการจับคู่ของจุดต้องเป็นที่ยอมรับของ epipolar constraints หมายความว่า จุดของคู่ภาพต้องเอน
ลงบนเส้น epipolar ที่กาหนดไว้โดยเป็นจุดที่ตรงกันจริงๆ ซึ่งจะใช้การฟังก์ชัน estimateFundamentalMatrix ในการ
วิเคราะห์
[fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(matchedPoints1, matchedPoints2,'Method',
'RANSAC','NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99);
if status ~= 0 || is EpipoleInImage(fMatrix', size(L1))|| is EpipoleInImage(fMatrix', size(L2))
erro(['Either not enought matching points were found']);
end
inlierPoints1 = matchedPoints1(epipolarInliers, :);
inlierPoints2 = matchedPoints2(epipolarInliers, :);
figure;
showMatchedFeatures(L1, L2, inlierPoints1, inlierPoints2);
legend('Inlier points in L1', 'Inlier points in L2');
11
ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
34
ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
ภาพที่ได้
ใช้ฟังก์ชัน estimateUncalibratedRectification ในการวิเคราะห์การแปลงปรับแก้
การปรับแก้ภาพโดยในการแปลงเส้นโครงของ tform1 และ tform2 และแสดงการผสมสีของภาพที่ปรับแก้
12
13
ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
35
ภาพที่ได้
36
ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้
Irectified = cvexTransformImagePair(I1, tform1, I2, tform2);
figure;
imshow(Irectified);
title('Rectified Stereo Images (Red - Left Image, Cyan - Right Image)');
14
ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้

More Related Content

What's hot

ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้นputthita
 
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-25552 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555อภิญญา คำเหลือ
 
2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซีmansuang1978
 
โปรแกรม Matlap
โปรแกรม Matlapโปรแกรม Matlap
โปรแกรม Matlapminkky04
 
หน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามหน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามkruthanyaporn
 
นางสาว นันทิยา แก้วตา 58170108 02
นางสาว นันทิยา แก้วตา 58170108  02นางสาว นันทิยา แก้วตา 58170108  02
นางสาว นันทิยา แก้วตา 58170108 02Wasan Larreng
 

What's hot (18)

3.5 การแสดงผลและการรับข้อมูล
3.5 การแสดงผลและการรับข้อมูล3.5 การแสดงผลและการรับข้อมูล
3.5 การแสดงผลและการรับข้อมูล
 
Lesson2
Lesson2Lesson2
Lesson2
 
Week8
Week8Week8
Week8
 
207
207207
207
 
Week6
Week6Week6
Week6
 
แนวคิดในการเขียนโปรแกรม
แนวคิดในการเขียนโปรแกรมแนวคิดในการเขียนโปรแกรม
แนวคิดในการเขียนโปรแกรม
 
ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้น
 
Unit8
Unit8Unit8
Unit8
 
1 test
1  test1  test
1 test
 
3.6 การเขียนโปรแกรมคำนวณ
3.6 การเขียนโปรแกรมคำนวณ3.6 การเขียนโปรแกรมคำนวณ
3.6 การเขียนโปรแกรมคำนวณ
 
ตัวอย่างโปรแกรมลงBlog
ตัวอย่างโปรแกรมลงBlogตัวอย่างโปรแกรมลงBlog
ตัวอย่างโปรแกรมลงBlog
 
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-25552 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
2 การรับข้อมูลและการแสดงผลข้อมูล 8-10-2555
 
4 4
4 44 4
4 4
 
งานPPT
งานPPTงานPPT
งานPPT
 
2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี
 
โปรแกรม Matlap
โปรแกรม Matlapโปรแกรม Matlap
โปรแกรม Matlap
 
หน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถามหน่วยที่ 4 การสร้างแบบสอบถาม
หน่วยที่ 4 การสร้างแบบสอบถาม
 
นางสาว นันทิยา แก้วตา 58170108 02
นางสาว นันทิยา แก้วตา 58170108  02นางสาว นันทิยา แก้วตา 58170108  02
นางสาว นันทิยา แก้วตา 58170108 02
 

Viewers also liked

Horizonte institucional
Horizonte institucionalHorizonte institucional
Horizonte institucionaluriel.jimenez
 
26 de noviembre
26 de noviembre26 de noviembre
26 de noviembreadjnt1979
 
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...Ken Dinnadge
 
10 Tips For improving Traffic and Conversions on your Drupal Site
10 Tips For improving Traffic and Conversions on your Drupal Site10 Tips For improving Traffic and Conversions on your Drupal Site
10 Tips For improving Traffic and Conversions on your Drupal SiteAcquia
 
Di bacco modulo 16 (slideshare 1)
Di bacco   modulo 16 (slideshare 1)Di bacco   modulo 16 (slideshare 1)
Di bacco modulo 16 (slideshare 1)Di Bacco Domenico
 
Egor Popretinskiy
Egor PopretinskiyEgor Popretinskiy
Egor Popretinskiyprosvsports
 
輪胎專業知識教戰手則
輪胎專業知識教戰手則輪胎專業知識教戰手則
輪胎專業知識教戰手則blacktyre
 
Minimal invasive cardiothoracic surgery2
Minimal invasive cardiothoracic surgery2Minimal invasive cardiothoracic surgery2
Minimal invasive cardiothoracic surgery2escts2012
 
Cannabis y derivados
Cannabis y derivadosCannabis y derivados
Cannabis y derivadosarlantz
 
Estructura de remuneraciones y beneficios en el régimen laboral público 276 ...
Estructura de remuneraciones y beneficios en el régimen laboral público 276  ...Estructura de remuneraciones y beneficios en el régimen laboral público 276  ...
Estructura de remuneraciones y beneficios en el régimen laboral público 276 ...Corporación Hiram Servicios Legales
 
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...Corporación Hiram Servicios Legales
 

Viewers also liked (16)

AVDSW_2015
AVDSW_2015AVDSW_2015
AVDSW_2015
 
Horizonte institucional
Horizonte institucionalHorizonte institucional
Horizonte institucional
 
26 de noviembre
26 de noviembre26 de noviembre
26 de noviembre
 
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...
1stDRAFT LIGHTHOUSE Sep-October 2011 CaroTrans Article Automechankia RBA Auct...
 
Shameek
ShameekShameek
Shameek
 
10 Tips For improving Traffic and Conversions on your Drupal Site
10 Tips For improving Traffic and Conversions on your Drupal Site10 Tips For improving Traffic and Conversions on your Drupal Site
10 Tips For improving Traffic and Conversions on your Drupal Site
 
Dickens david copperfield
Dickens david copperfieldDickens david copperfield
Dickens david copperfield
 
Di bacco modulo 16 (slideshare 1)
Di bacco   modulo 16 (slideshare 1)Di bacco   modulo 16 (slideshare 1)
Di bacco modulo 16 (slideshare 1)
 
Egor Popretinskiy
Egor PopretinskiyEgor Popretinskiy
Egor Popretinskiy
 
輪胎專業知識教戰手則
輪胎專業知識教戰手則輪胎專業知識教戰手則
輪胎專業知識教戰手則
 
Minimal invasive cardiothoracic surgery2
Minimal invasive cardiothoracic surgery2Minimal invasive cardiothoracic surgery2
Minimal invasive cardiothoracic surgery2
 
Biodb 2011-05
Biodb 2011-05Biodb 2011-05
Biodb 2011-05
 
Cannabis y derivados
Cannabis y derivadosCannabis y derivados
Cannabis y derivados
 
Cómo proceder frente a los abusos bancarios
Cómo proceder frente a los abusos bancariosCómo proceder frente a los abusos bancarios
Cómo proceder frente a los abusos bancarios
 
Estructura de remuneraciones y beneficios en el régimen laboral público 276 ...
Estructura de remuneraciones y beneficios en el régimen laboral público 276  ...Estructura de remuneraciones y beneficios en el régimen laboral público 276  ...
Estructura de remuneraciones y beneficios en el régimen laboral público 276 ...
 
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...
DESCRIPCIÓN DE LA NEGOCIACIÓN COLECTIVA EN EL SECTOR PÚBLICO (PERÚ) - AUTOR: ...
 

Similar to Computer programming

การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานNookky Anapat
 
C Programming
C ProgrammingC Programming
C ProgrammingWarawut
 
การแสดงผลและการรับข้อมูล
การแสดงผลและการรับข้อมูลการแสดงผลและการรับข้อมูล
การแสดงผลและการรับข้อมูลkorn27122540
 
นางสาวกัญญารัตน์ คิดในทางดี
นางสาวกัญญารัตน์ คิดในทางดีนางสาวกัญญารัตน์ คิดในทางดี
นางสาวกัญญารัตน์ คิดในทางดีPhitsinee Mymintz
 
Doc 40720.914467592650
Doc 40720.914467592650Doc 40720.914467592650
Doc 40720.914467592650Jakkree Eiei
 
capture 59170107 group 2
capture 59170107 group 2capture 59170107 group 2
capture 59170107 group 2Thamon Monwan
 
ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้นApinyaphorn
 
3.ประเภทของข้อมูลและตัวดำเนินการ
3.ประเภทของข้อมูลและตัวดำเนินการ3.ประเภทของข้อมูลและตัวดำเนินการ
3.ประเภทของข้อมูลและตัวดำเนินการmansuang1978
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 

Similar to Computer programming (20)

คอมโปรเฟรม
คอมโปรเฟรมคอมโปรเฟรม
คอมโปรเฟรม
 
C language
C languageC language
C language
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
 
12
1212
12
 
C slide
C slideC slide
C slide
 
C Programming
C ProgrammingC Programming
C Programming
 
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอนโครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
 
การแสดงผลและการรับข้อมูล
การแสดงผลและการรับข้อมูลการแสดงผลและการรับข้อมูล
การแสดงผลและการรับข้อมูล
 
05 Loops
05  Loops05  Loops
05 Loops
 
นางสาวกัญญารัตน์ คิดในทางดี
นางสาวกัญญารัตน์ คิดในทางดีนางสาวกัญญารัตน์ คิดในทางดี
นางสาวกัญญารัตน์ คิดในทางดี
 
Doc 40720.914467592650
Doc 40720.914467592650Doc 40720.914467592650
Doc 40720.914467592650
 
capture 59170107 group 2
capture 59170107 group 2capture 59170107 group 2
capture 59170107 group 2
 
ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้น
 
Introduction toc
Introduction tocIntroduction toc
Introduction toc
 
3.ประเภทของข้อมูลและตัวดำเนินการ
3.ประเภทของข้อมูลและตัวดำเนินการ3.ประเภทของข้อมูลและตัวดำเนินการ
3.ประเภทของข้อมูลและตัวดำเนินการ
 
ภาษาซีเบื้องต้น
ภาษาซีเบื้องต้นภาษาซีเบื้องต้น
ภาษาซีเบื้องต้น
 
Chapter 05 Loop
Chapter 05 LoopChapter 05 Loop
Chapter 05 Loop
 
Chapter 05 Loop
Chapter 05 LoopChapter 05 Loop
Chapter 05 Loop
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
 

Computer programming

  • 1. 1 กด Ctrl N เพื่อที่จะสร้างหน้าใหม่ในการทางาน
  • 2. 2 การใช้งานของภาษา C ต้องมี การกาหนดฟังก์ชันหลักการเขียนภาษา C คือ void main() { ……….. } #include <stdio.h> void main() { } 1 2 #include <stdio.h> เป็นคาสั่ง include ใช้สาหรับรวมเอา ไฟล์ส่วนหัว หรือ Header file เข้ามา ในโปรแกรม เพื่อให้เราเรียกใช้ ฟังก์ชั่นต่างๆ ในภาษา C
  • 3. 3 int x,y,z; x = 20; y = 2; z = x + y; printf("%d + %d = %dn",x,y,z); printf("Hello Geoinformaticsnnn"); printf("My name is Jariya Jongkamnnn"); printf("Doraemon"); 3 กรอกโค้ดที่ต้องการหา int x,y,z; int คือ กาหนดตัวแปร x = 20; y = 2; z = x + y; printf("%d + %d = %dn",x,y,z); printf("Hello Geoinformaticsnnn"); printf("My name is Jariya Jongkamnnn"); printf("Doraemon");
  • 4. 4 จากนั้นกด f11 เพื่อที่จะแสดงหน้าจอ สีดาขึ้นมา ชื่อโปรแกรม หาค่าผลบวกของเลขจานวนเต็ม 2 จานวน ตัวแปรที่ใช้ x เก็บค่าจานวนเต็มที่ 1 วิธีการแก้ปัญหาใช้สมการ sum = x + y y เก็บค่าจานวนเต็มที่ 2 เพื่อให้รู้ค่าของตัวแปรที่เรากาหนดว่า x = 20; sum เก็บค่าผลบวกของจานวนเต็มทั้ง 2 จานวน y = 2; ชนิดของข้อมูล x, y, sum เป็นข้อมูลชนิดเลขจานวนเต็ม (integer) x + y= 22 4
  • 5. 5 #include "stdio.h" void main() { ขั้นตอนแรกของการใช้ภาษา C } 1 2 int num1, num2, sum; ขั้นตอนการประกาศตัวแปร int num1, num2, sum;
  • 6. 6 int num1, num2, sum; กรอกโค้ดที่ต้องการหา printf("please insert to number1:"); scanf("%d",&num1); printf("please insert to number2:"); scanf("%d",&num2); sum = num1 * num2; printf("%d x %d = %d",num1,num2,sum); กด f11 เพื่อแสดงค่า ผลลัพธ์ของข้อมูลที่ ต้องการหา 3 4 ขั้นตอนการแสดงผลในการหาผลคูณ แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด num 1=5 num2=2 sum = num1 * num2; หรือ 5 x 2 = 10
  • 7. 7 int ce, sum; กรอกโค้ดที่ต้องการหา printf("please insert to C.E.:"); scanf("%d",&ce); sum = ce + 543; printf("C.E. convert to B.D. is:%d",sum); กด f11 เพื่อแสดงค่าผลลัพธ์ ของข้อมูลที่ 1 2 ผลรับที่ได้จากการหาค่าของ โจทย์จงแปลง C.E.(ค.ศ) เป็น B.D (พ.ศ)
  • 8. 8 แสดงค่าผลลัพธ์ที่ต้องการหาของโค้ดนี้คือการกาหนด โจทย์area = 0.5 * (w1 + w2) *h; w1 = 5 w2 = 3 h = 4 area = 0.5 * (w1 + w2) *h; หรือ 0.5 x ( w1 + w2 ) x 4 = 16 float w1,w2,h,area; printf("please insert to w1:"); scanf("%f",&w1); printf("please insert to w2:"); scanf("%f",&w2); printf("please insert to heigh:"); scanf("%f",&h); area = 0.5 * (w1 + w2) *h; printf("result area is to %f",area); 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่
  • 9. 9 รูปที่ 1 char A = 'a'; A = A + 15; printf("A result is %c",A); 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่ การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z เช่น char A = 'a'; A = A + 15; โดยเริ่มนับตั้งแต่ A จนถึงตัวที่ 15 ผลลัพธ์ที่ได้คือ P
  • 10. 10 รูปที่ 2 char B = 'b'; B = B + 20; printf("B result is %c",B); กด f11 เพื่อแสดงค่าผลลัพธ์ของข้อมูลที่ 1 2 การกาหนดตัวแปรโดยการหาค่าตัวอักษรภาษาอังกฤษ A-Z เช่น char B = 'b'; B = B + 15; โดยเริ่มนับตั้งแต่ B จนถึงตัวที่ 20 ผลลัพธ์ที่ได้คือ V
  • 11. 11 โปรแกรมสอบถามอายุมากกว่าหรือเท่ากับ60ปีให้บอกว่าแก่ แต่ถ้าน้อยกว่า 60ปี ให้บอกว่าหน้าอ่อน If และ else • If เป็นคาสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สาหรับผลการเปรียบที่เป็นเท็จ เราจะใช้else ในการ ตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทาตรงกันข้ามกับ if • ถ้าต้องการให้ผู้ใช้โปรแกรมของเรากรอก อายุ โดยอายุที่กรอกต้องมากกว่าหรือเท่ากัน 60 ปี ถ้าไม่ถึงให้แสดงว่ายังไม่แก่ 1. วิเคราะห์โจทย์ กาหนดชนิดตัวแปรเป็น และตั้งชื่อตัวแปรว่า age 2. ใช้ if (age >= 60) และใช้else ถ้าอายุยังไม่ถึง 60 ปี int age; printf("How old are you?:"); scanf("%d",&age); if(age >= 60) { printf("You are old!!!!n"); } else { printf("You are young(*_*)n"); } printf("good bye (^/^)"); return 0; } 1 2 กด f11 เพื่อแสดงค่าผลลัพธ์ของ
  • 12. 12 โปรแกรมการใช้ภาษา C คานวณหาเกรด • else if ((score >=65) && (score <=69)) • printf("Grade C+"); • else if((score >=60) &&(score <= 64)) • printf("Grade C"); • else if ((score >=55) && (score <= 59)) • printf("Grade D+"); • else if ((score >=50) && (score <= 54)) • printf("Grade D"); • else • printf("Grade F!!!!"); • return 0; • int score; • printf("Please input your score:"); • scanf("%d",&score); • if((score >=80) && (score<=100)) • printf("Grade A"); • else if ((score >=75) && (score <=79)) • printf("Grade B+"); • else if ((score >=70) && (score <=74)) • printf("Grade B"); กด F11เพื่อจะแสดงผลว่าเราจะได้เกรด อะไร
  • 13. 13 การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม การใช้โปรแกรมคานวณหาสูตรคูณแม่ 2 โดยใช้ภาษา C ในการคานวณ การใช้ภาษา c ค้นหาว่ามีพี่ชายหรือไม่
  • 14. 14 • คาสั่ง for นี้ใช้ในกรณีเราต้องการทาซ้าโดยทราบจานวนครั้งที่แน่นอน เช่น ถ้าต้องการทาซ้า 20 ครั้ง , 30 ครั้ง , 40 ครั้ง เรามักจะใช้for • การใช้for เราต้องกาหนดจานวนครั้งลงไปว่าจะวนกี่ครั้งซึ่งในการวนด้วยคาสั่ง for นี้จะต้องสร้างตัวแปรขึ้นมาเพื่อทา หน้าที่เป็น “ตัวนับ” (Counter) ซึ่งโดยส่วนมากจะใช้รูปแบบเลขจานวนเต็ม integer เพราะจะเป็นตัวที่คอยบอกว่าตอนนี้ ครบตามจานวนแล้วหรือยัง ถ้ายังก็วนต่อไปเรื่อยๆ หลักการใช้for
  • 15. 15 การใช้ while กับ do while การใช้while จะแตกต่างกับ do while จะมีลักษณะการใช้งานคล้ายๆ กันแต่แตกต่างกันตรงที่ว่า while จะมีการตรวจสอบเงื่อนไขก่อน ถึงจะเริ่มทาในครั้งแรก และยังจะตรวจสอบเงื่อนไขสาหรับตอบต่อๆ ไปอีกด้วย แต่ do while จะเริ่มทาทางานตามคาสั่งก่อน 1 ครั้ง จากนั้นถึงจะตรวจสอบเงื่อนไงสาหรับรอบต่อ ๆไป while (condition) { statement1; statement2; ... statementN; } รูปแบบการใช้งานของ while จะเริ่มต้นด้วยการกาหนดเงื่อนไข ที่จะให้ทางานเป็น Loop ก่อนเสมอ และภายใน statement ใน Loop ควรจะมี statement ที่ทาการเปลี่ยนแปลงค่าตัวแปรที่ใช้ตรวจสอบ มิเช่นนั้น Loop อาจทางานไม่หยุด การใช้ while กับ do while
  • 16. 16 ในตัวอย่างนี้ จะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10 เงื่อนไขที่ให้ loop ทางานคือ ตราบใด ที่ ตัวแปร count น้อยกว่าหรือเท่ากับ 10 ให้ทางานต่อไปเรื่อยๆ while (count <= 10) โดยที่ ตัวแปร count จะมีค่าเริ่มต้นเท่ากับ 1 และภายใน Loop จะมีการเปลี่ยนแปลงค่าของตัวแปร count คือ ทุกๆ รอบการทางาน ตัวแปร count จะมีค่าเพิ่มขึ้นมา 1 count++ การใช้while (count <= 10)
  • 17. 17 ข้อแตกต่างของ do while จาก while คือ do while จะเริ่มทางานครั้งแรกโดยไม่ตรวจสอบเงื่อนไขเลย แต่จะเริ่มตรวจสอบเงื่อนไขสาหรับรอบครั้งถัดไป do { statement1; statement2; ... statementN; } while (condition); รูปแบบการใช้งาน จะแตกต่างจาก while ตรงที่ว่า คาสั่ง while (condition) จะย้ายจากบรรทัดบนสุดไปอยู่บรรทัดท้ายสุด สิ่งที่เปลี่ยนแปลงไปคือ ใช้do while เข้ามาแทน while
  • 19. 19 • ทดลองสร้าง row vector ที่มีสมาชิกประกอบด้วย 1,2,3,4,5 และกาหนดค่าให้ตัวแปร x >>x = [1 2 3 4 5] X = 1 2 3 4 5 ใช้เครื่องหมาย = สาหรับกาหนดค่าจากทางด้านขวามือไปที่ตัวแปรทางซ้ายมือเป็นชนิดเวกเตอร์ โดยใช้เครื่องหมาย bracket [] ซึ่ง ภายใน bracket จะระบุสมาชิก 5 จานวน แบ่งแยกออกจากกันด้วยเครื่องหมาย ช่องว่าง Space หรืออาจใช้comma , เช่นเดียวกับ ทางคณิตศาสตร์ทั่วไป >>x = [1 2 3 4 5] X = 1 2 3 4 5 ผลลัพธ์ที่เราได้มีทั้งหมด 5 จานวน 1 2
  • 20. 20 • เวกเตอร์อีกลักษณะหนึ่งคือ Column vector จะสร้างคล้ายๆกันแต่เครื่องหมายที่จะแยกสมาชิกออกจากกันจะเปลี่ยนไปใช้ เครื่องหมาย semicolon ; แทน หรือทาการสร้าง row vector ก่อนแล้วทาการ transpose ด้วยเครื่องหมาย ‘ เช่น >> y = [4;5;6;7;8] Y = 4 5 6 7 8 หรือ y = [ 4 5 6 7 8] >> y’ >> y = [4;5;6;7;8] Y = 4 5 6 7 8 >> y = [4;5;6;7;8] ผลลัพธ์ออกมาจะเป็นแนวตั้งถ้าเติม เครื่องหมายนี้ปิดท้าย จะเป็นการหยุดเพื่อหาค่าตัวแปร 1 2
  • 21. 21 ต้องการหาค่าโดยเพิ่มขึ้นทีละ 3 เช่น [ 0 : 3 : 20 ] โดยแสดงกราฟ กราฟแบบเส้น >> x = [ 0 : 3 : 20 ] แบบเส้น กาหนด >> plot (x จุดสิ้นสุด 20ระยะห่างระหว่างช่วง 3เริ่มนับที่ 0 >> x = [ 0 : 3 : 20 ] 3 4
  • 24. 24 การเลือก GUIDE Application Options • การเลือก GUIDE Application Options เมื่อเราต้องการจะใช้GUIDE นั้น ครั้งแรก บน MATLAB COMMAND WONDOW ที่prompt เราสั่ง » guide จากนั้น Layout Editor จะปรากฏขึ้น ซึ่งมีลักษณะดังรูป
  • 25. 25 คลิก Select เพื่อวาดตาราง 1 3 คลิกเลือก Titie แล้วพิมพ์ข้อข้อตามที่ต้องการ 4 หัวข้อที่ปรับแก้ 5 ดับเบิลคลิก Panel จะขึ้นเป็นตาราง 2
  • 26. 26 คลิก Select เพื่อวาดตาลางที่ 2 6 คลิก Toggle Button เพื่อสร้างช่องแสดง ผลลัพธ์และช่องสาหรับปุ่มเครื่องคิดเลข 7 พิมพ์guibe แล้ว enter >> กด File >> Preferences >> ติกชช่อง แรก >> กด ok ดับเบิลคลิก Panel จะขึ้นเป็นตาราง Title พิมพ์เครื่องคิดเลข Tag คือการตั้งชื่อไฟล์นั้นๆ
  • 28. 28 • ขั้นตอนแรกเป็นการอ่านไฟล์คู่ภาพที่จะนามาทา 3D โดยที่เรากาหนดได้แก่ • l1 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางด้านซ้ายมือ • l2 เป็นค่าตัวแปรที่อ่านไฟล์แล้วเก็บค่าภาพทางขวามืv • rgb2gray เป็นฟังก์ชันที่แปลงจากภาพสีให้เป็นค่าระดับสีเทาเพื่อง่ายต่อการหาจุดที่น่าสนใจในขั้นตอนต่อไป • imread เป็นฟังก์ชันไว้อ่านไฟล์ภาพต่างๆ เช่น .jpg, .TIFF, .PNG, . BMP ตัวอย่าง : L1 = rgb2gray(imread('left.jpg')); L2 = rgb2gray(imread('right.jpg')); %read image and transform gray L1 = rgb2gray(imread('left.jpg')); L2 = rgb2gray(imread('right.jpg')); 3 ขั้นตอนที่ 1 เขียนให้อ่านไฟล์คู่ภาพ
  • 29. 29 ฟังก์ชัน imshowpair เป็นการแสดงแบบคู่ภาพพร้อมกัน ซึ่งประกอบด้วย(ค่าตัวแปร1, ค่าตัวแปรที่2 ) imshowpair(L1,L2,'montage'); title('L1(left);L2(right)'); figure; imshowpair(L1,L2,'ColorChannel','red-cyan'); title('Composite Image (Red - Left Image, Cyan – Right Image)'); เปลี่ยนภาพเทา เป็น แดง-ฟ้าอ่อน ตรง Titerจะพิมพ์ตัว เล็กหรือตัวพิมพ์ใหญ่ ก็ได้ hold on; ให้ภาพอยู่ในเฟรม เดียวกัน 4
  • 30. 30 ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ เลือกจุดที่น่าสนใจในคู่ภาพของแต่ละภาพ ซึ่ง blobs1 และ blobs2 เป็นชื่อตัวแปรของแต่ละภาพ ซึ่งจะเก็บค่าตามที่ ฟังก์ชัน detectSURFFeatures เป็นฟังก์ชันตรวจจับพื้นที่ที่มีลักษณะคล้ายกันของทั้ง 2 ภาพ โดยแสดงออกมาเป็นวงกลมใช้ ฟังก์ชัน 'MetricThreshold', 2000 เช่นนี้ blobs1 = detectSURFFeatures(L1,'MetricThreshold',2000); blobs2 = detectSURFFeatures(L2,'MetricThreshold',2000); 5 ขั้นตอนที่ 2 เลือกจุดที่น่าสนใจในคู่ภาพ
  • 31. 31 ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน การค้นหาตาแหแน่งของจุดที่เหมือนกันของแต่ละภาพ matchedPoints1 = validBlobs1(indexPairs(:,1),:); matchedPoints2 = validBlobs2(indexPairs(:,2),:); ใช้ค่าความแตกต่างสัมบูรณ์ sum of absolute differences (SAD) ในการกาหนดเป็นตัวชี้ของการจับคู่ของเส้น indexPairs = matchFeatures(features1, features2, 'Metric','SAD','MatchThreshold', 5) ใช้ฟังก์ชัน extracFeatures และ matchFeatures ในการหาจุดสมมติที่ตรงกัน ในแต่ละblob ตามขั้นตอนที่แล้ว [features1, validBlobs1] = extractFeatures(I1, blobs1); [features2, validBlobs2] = extractFeatures(I2, blobs2); 6 7 8 ขั้นตอนที่ 3 หาจุดสมมติที่ตรงกัน
  • 32. 32 แสดงการจับคู่ของจุดที่เหมือนกันบนภาพผสมของคู่ภาพ figure; showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2); แสดงสัญลักษณ์ legend('Putatively matched points in L1', 'Putatively matched points in L2'); 9 10 00
  • 33. 33 ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint ความถูกต้องของการจับคู่ของจุดต้องเป็นที่ยอมรับของ epipolar constraints หมายความว่า จุดของคู่ภาพต้องเอน ลงบนเส้น epipolar ที่กาหนดไว้โดยเป็นจุดที่ตรงกันจริงๆ ซึ่งจะใช้การฟังก์ชัน estimateFundamentalMatrix ในการ วิเคราะห์ [fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(matchedPoints1, matchedPoints2,'Method', 'RANSAC','NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99); if status ~= 0 || is EpipoleInImage(fMatrix', size(L1))|| is EpipoleInImage(fMatrix', size(L2)) erro(['Either not enought matching points were found']); end inlierPoints1 = matchedPoints1(epipolarInliers, :); inlierPoints2 = matchedPoints2(epipolarInliers, :); figure; showMatchedFeatures(L1, L2, inlierPoints1, inlierPoints2); legend('Inlier points in L1', 'Inlier points in L2'); 11 ขั้นตอนที่ 4 ลบค่าผิดปกติโดยใช้Epipolar Constraint
  • 34. 34 ขั้นตอนที่ 5 ปรับแก้คู่ภาพ ภาพที่ได้ ใช้ฟังก์ชัน estimateUncalibratedRectification ในการวิเคราะห์การแปลงปรับแก้ การปรับแก้ภาพโดยในการแปลงเส้นโครงของ tform1 และ tform2 และแสดงการผสมสีของภาพที่ปรับแก้ 12 13 ขั้นตอนที่ 5 ปรับแก้คู่ภาพ
  • 36. 36 ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้ Irectified = cvexTransformImagePair(I1, tform1, I2, tform2); figure; imshow(Irectified); title('Rectified Stereo Images (Red - Left Image, Cyan - Right Image)'); 14 ขั้นตอนที่ 6 การตัดขอบพื้นที่ซ้อนทับของภาพที่ปรับแก้