computer programming

36
1 กด Ctrl N เพื่อที่จะสร้างหน้าใหม่ในการทางาน

Upload: preaw-jariya

Post on 21-Jan-2017

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer  programming

1

กด Ctrl N เพอทจะสรางหนาใหมในการท างาน

Page 2: Computer  programming

2

การใชงานของภาษา C ตองม การก าหนดฟงกชนหลกการเขยนภาษา C

คอ

void main()

{

………..

}

#include <stdio.h>

void main()

{

}

1

2

#include <stdio.h>

เปนค าสง include ใชส าหรบรวมเอา

ไฟลสวนหว หรอ Header file เขามา

ในโปรแกรม เพอใหเราเรยกใช

ฟงกชนตางๆ ในภาษา C

Page 3: Computer  programming

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");

Page 4: Computer  programming

4

จากนนกด f11 เพอทจะแสดงหนาจอ สด าขนมา

ชอโปรแกรม หาคาผลบวกของเลขจ านวนเตม 2 จ านวน

ตวแปรทใช x เกบคาจ านวนเตมท 1 วธการแกปญหาใชสมการ sum = x + y

y เกบคาจ านวนเตมท 2 เพอใหรคาของตวแปรทเราก าหนดวา x = 20;

sum เกบคาผลบวกของจ านวนเตมทง 2 จ านวน y = 2;

ชนดของขอมล x, y, sum เปนขอมลชนดเลขจ านวนเตม (integer) x + y= 22

4

Page 5: Computer  programming

5

#include "stdio.h"

void main()

{ ขนตอนแรกของการใชภาษา C

}

1

2

int num1, num2, sum;

ขนตอนการประกาศตวแปร int num1, num2, sum;

Page 6: Computer  programming

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

Page 7: Computer  programming

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 (พ.ศ)

Page 8: Computer  programming

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 เพอแสดงคาผลลพธของขอมลท

Page 9: Computer  programming

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

Page 10: Computer  programming

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

Page 11: Computer  programming

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 เพอแสดงคาผลลพธของ

Page 12: Computer  programming

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เพอจะแสดงผลวาเราจะไดเกรด

อะไร

Page 13: Computer  programming

13

การใชโปรแกรมค านวณหาสตรคณแม 2 โดยใชภาษา C ในการค านวณ

การใชภาษา c คนหาวามพชายหรอไม

การใชโปรแกรมค านวณหาสตรคณแม 2 โดยใชภาษา C ในการค านวณ

การใชภาษา c คนหาวามพชายหรอไม

Page 14: Computer  programming

14

• ค าสง for นใชในกรณเราตองการท าซ าโดยทราบจ านวนครงทแนนอน เชน ถาตองการท าซ า 20 ครง , 30 ครง , 40 ครง

เรามกจะใช for

• การใช for เราตองก าหนดจ านวนครงลงไปวาจะวนกครงซงในการวนดวยค าสง for นจะตองสรางตวแปรขนมาเพอท า

หนาทเปน “ตวนบ” (Counter) ซงโดยสวนมากจะใชรปแบบเลขจ านวนเตม integer เพราะจะเปนตวทคอยบอกวาตอนน

ครบตามจ านวนแลวหรอยง ถายงกวนตอไปเรอยๆ

หลกการใช for

Page 15: Computer  programming

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

Page 16: Computer  programming

16

ในตวอยางน จะพมพตวเลขตงแต 1 ถง 10

เงอนไขทให loop ท างานคอ

ตราบใด ท ตวแปร count นอยกวาหรอเทากบ 10 ใหท างานตอไปเรอยๆ while (count <= 10)

โดยท ตวแปร count จะมคาเรมตนเทากบ 1

และภายใน Loop จะมการเปลยนแปลงคาของตวแปร count คอ ทกๆ รอบการท างาน

ตวแปร count จะมคาเพมขนมา 1 count++

การใชwhile (count <= 10)

Page 17: Computer  programming

17

ขอแตกตางของ do while จาก while คอ do while จะเรมท างานครงแรกโดยไมตรวจสอบเงอนไขเลย

แตจะเรมตรวจสอบเงอนไขส าหรบรอบครงถดไป

do {

statement1;

statement2;

...

statementN;

} while (condition);

รปแบบการใชงาน จะแตกตางจาก while ตรงทวา ค าสง while (condition) จะยายจากบรรทดบนสดไปอยบรรทดทายสด

สงทเปลยนแปลงไปคอ ใช do while

เขามาแทน while

Page 18: Computer  programming

18

การหาคาโดยก าหนด a=5 , b=7 c= a*b=35

Page 19: Computer  programming

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

Page 20: Computer  programming

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

Page 21: Computer  programming

21

ตองการหาคาโดยเพมขนทละ 3 เชน [ 0 : 3 : 20 ] โดยแสดงกราฟ

กราฟแบบเสน

>> x = [ 0 : 3 : 20 ]

แบบเสน

ก าหนด >> plot (x

จดสนสด 20 ระยะหางระหวางชวง 3 เรมนบท 0

>> x = [ 0 : 3 : 20 ]

3

4

Page 22: Computer  programming

22

กราฟแบบเสนปะไขปลา

>> plot(x,'--bs')

กราฟแบบวงกลม

>> plot(x,'b--o')

5

6

Page 23: Computer  programming

23

การสรางโปรแกรมWebcam

กราฟเสนสฟา

>> plot(x,'c--*')

7

Page 24: Computer  programming

24

การเลอก GUIDE Application Options

• การเลอก GUIDE Application Options เมอเราตองการจะใช GUIDE นน ครงแรก บน MATLAB COMMAND WONDOW ทprompt เราสง

» guide

จากนน Layout Editor จะปรากฏขน ซงมลกษณะดงรป

Page 25: Computer  programming

25

คลก Select เพอวาดตาราง

1

3

คลกเลอก Titie

แลวพมพขอขอตามทตองการ

4

หวขอทปรบแก

5

ดบเบลคลก Panel จะขนเปนตาราง

2

Page 26: Computer  programming

26

คลก Select เพอวาดตาลางท 2

6

คลก Toggle Button เพอสรางชองแสดง

ผลลพธและชองส าหรบป มเครองคดเลข

7

พมพ guibe แลว enter >> กด File >> Preferences >> ตกชชองแรก >> กด ok ดบเบลคลก Panel จะขนเปนตาราง Title พมพเครองคดเลข Tag คอการตงชอไฟลนนๆ

Page 27: Computer  programming

27

ใช new script คอการ

เขยนค าสงทเดยว

จะขนหนาตางใหมแบบน

1

2

Page 28: Computer  programming

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 เขยนใหอานไฟลคภาพ

Page 29: Computer  programming

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

Page 30: Computer  programming

30

ขนตอนท 2 เลอกจดทนาสนใจในคภาพ

เลอกจดทนาสนใจในคภาพของแตละภาพ ซง blobs1 และ blobs2 เปนชอตวแปรของแตละภาพ ซงจะเกบคาตามท

ฟงกชน detectSURFFeatures เปนฟงกชนตรวจจบพนททมลกษณะคลายกนของทง 2 ภาพ โดยแสดงออกมาเปนวงกลมใช

ฟงกชน 'MetricThreshold', 2000 เชนน

blobs1 = detectSURFFeatures(L1,'MetricThreshold',2000);

blobs2 = detectSURFFeatures(L2,'MetricThreshold',2000);

5

ขนตอนท 2 เลอกจดทนาสนใจในคภาพ

Page 31: Computer  programming

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 หาจดสมมตทตรงกน

Page 32: Computer  programming

32

แสดงการจบคของจดทเหมอนกนบนภาพผสมของคภาพ figure; showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2);

แสดงสญลกษณ legend('Putatively matched points in L1', 'Putatively matched points in L2');

9

10

00

Page 33: Computer  programming

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

Page 34: Computer  programming

34

ขนตอนท 5 ปรบแกคภาพ

ภาพทได

ใชฟงกชน estimateUncalibratedRectification ในการวเคราะหการแปลงปรบแก

การปรบแกภาพโดยในการแปลงเสนโครงของ tform1 และ tform2 และแสดงการผสมสของภาพทปรบแก

12

13

ขนตอนท 5 ปรบแกคภาพ

Page 35: Computer  programming

35

ภาพทได

Page 36: Computer  programming

36

ขนตอนท 6 การตดขอบพนทซอนทบของภาพทปรบแก

Irectified = cvexTransformImagePair(I1, tform1, I2, tform2); figure; imshow(Irectified); title('Rectified Stereo Images (Red - Left Image, Cyan - Right Image)');

14

ขนตอนท 6 การตดขอบพนทซอนทบของภาพทปรบแก