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 = %d\n",x,y,z);
printf("Hello Geoinformatics\n\n\n");
printf("My name is Jariya Jongkam\n\n\n");
printf("Doraemon");
3
กรอกโคดทตองการหา int x,y,z;
int คอ ก าหนดตวแปร x = 20;
y = 2;
z = x + y;
printf("%d + %d = %d\n",x,y,z);
printf("Hello Geoinformatics\n\n\n");
printf("My name is Jariya Jongkam\n\n\n");
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
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
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 คอการตงชอไฟลนนๆ
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 ปรบแกคภาพ
Top Related