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

Computer programming

  • Upload
    jariyaa

  • View
    350

  • Download
    1

Embed Size (px)

Citation preview

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 = %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

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 การตดขอบพนทซอนทบของภาพทปรบแก