Thursday, 13 November 2014

Kalman filter dengan opencv

berikut ini implementasi kalman filter menggunakan open cv, selamat mencoba
-----------------------------------------------------------------------------------------------
hasilnya


-----------------------------------------------------------------------------------------------
#include "opencv2/video/tracking.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
using namespace cv;

static inline Point calcPoint(Point2f center, double R, double angle)
{
    return center + Point2f((float)cos(angle), (float)-sin(angle))*(float)R;
}

static void help()
{
   printf( "\nExamle of c calls to OpenCV's Kalman filter.\n"
"   Tracking of rotating point.\n"
"   Rotation speed is constant.\n"
"   Both state and measurements vectors are 1D (a point angle),\n"
"   Measurement is the real point angle + gaussian noise.\n"
"   The real and the estimated points are connected with yellow line segment,\n"
"   the real and the measured points are connected with red line segment.\n"
"   (if Kalman filter works correctly,\n"
"    the yellow segment should be shorter than the red one).\n"
            "\n"
"   Pressing any key (except ESC) will reset the tracking with a different speed.\n"
"   Pressing ESC will stop the program.\n"
            );
}

int main(int, char**)
{
    help();
    Mat img(500, 500, CV_8UC3);
    KalmanFilter KF(2, 1, 0);
    Mat state(2, 1, CV_32F); /* (phi, delta_phi) */
    Mat processNoise(2, 1, CV_32F);
    Mat measurement = Mat::zeros(1, 1, CV_32F);
    char code = (char)-1;

    for(;;)
    {
        randn( state, Scalar::all(0), Scalar::all(0.1) );
        KF.transitionMatrix = *(Mat_<float>(2, 2) << 1, 1, 0, 1);

        setIdentity(KF.measurementMatrix);
        setIdentity(KF.processNoiseCov, Scalar::all(1e-5));
        setIdentity(KF.measurementNoiseCov, Scalar::all(1e-1));
        setIdentity(KF.errorCovPost, Scalar::all(1));

        randn(KF.statePost, Scalar::all(0), Scalar::all(0.1));

        for(;;)
        {
            Point2f center(img.cols*0.5f, img.rows*0.5f);
            float R = img.cols/3.f;
            double stateAngle = state.at<float>(0);
            Point statePt = calcPoint(center, R, stateAngle);

            Mat prediction = KF.predict();
            double predictAngle = prediction.at<float>(0);
            Point predictPt = calcPoint(center, R, predictAngle);
 
            randn( measurement, Scalar::all(0), Scalar::all(KF.measurementNoiseCov.at<float>(0)));
 
            // generate measurement
            measurement += KF.measurementMatrix*state;

            double measAngle = measurement.at<float>(0);
            Point measPt = calcPoint(center, R, measAngle);

             // plot points
            #define drawCross( center, color, d )                                 \
            line( img, Point( center.x - d, center.y - d ),                \
                               Point( center.x + d, center.y + d ), color, 1, CV_AA, 0); \
            line( img, Point( center.x + d, center.y - d ),                \
                              Point( center.x - d, center.y + d ), color, 1, CV_AA, 0 )

            img = Scalar::all(0);
            drawCross( statePt, Scalar(255,255,255), 3 );
            drawCross( measPt, Scalar(0,0,255), 3 );
            drawCross( predictPt, Scalar(0,255,0), 3 );
            line( img, statePt, measPt, Scalar(0,0,255), 3, CV_AA, 0 );
            line( img, statePt, predictPt, Scalar(0,255,255), 3, CV_AA, 0 );

            if(theRNG().uniform(0,4) != 0)
                KF.correct(measurement);
 
            randn( processNoise, Scalar(0), Scalar::all(sqrt(KF.processNoiseCov.at<float>(0, 0))));
            state = KF.transitionMatrix*state + processNoise;
 
            imshow( "Kalman", img );
            code = (char)waitKey(100);
 
            if( code > 0 )
                break;
        }
         if( code == 27 || code == 'q' || code == 'Q' )
           break;
    }

   return 0;
}

Wednesday, 12 November 2014

Cluster Menggunakan metode K-means dengan opencv

kali ini mencoba melakukan cluster menggunakan metode k-means. cluster sendiri bertujuan untuk mengngelompokan dari suatu data yang memiliki kemiripan fitur antar setiap data, banyak implemntasi dari cluster ini yaitu pada Inteleggent transportationn system dll, berikut hasil dan source codenya....selamat mencoba (ika butuh penjelasan lebih lanjut silahkan hub via email).....
--------------------------------------------------------------------------------------------------
hasilnya (silahkan perbesar)
--------------------------------------------------------------------------------------------------
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include <iostream>

using namespace cv;
using namespace std;

// static void help()
// {
//     cout << "\nThis program demonstrates kmeans clustering.\n"
//             "It generates an image with random points, then assigns a random number of cluster\n"
//             "centers and uses kmeans to move those cluster centers to their representitive location\n"
//             "Call\n"
//             "./kmeans\n" << endl;
// }

int main( int /*argc*/, char** /*argv*/ )
{
    const int MAX_CLUSTERS = 5;
    Scalar colorTab[] =
    {
        Scalar(0, 0, 255),
        Scalar(0,255,0),
        Scalar(255,100,100),
       

HSV, Gray, Biner, original

Kali ini mencoba image asli, di convert ke grey, diconvert ke biner, diconvert ke HSV....selamat mencoba


--------------------------------------------------------------------------------------------------------------------

#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;

int main()
{
 IplImage *img = cvLoadImage("lenna.png");
 IplImage *hsv = cvCreateImage(cvGetSize(img), 8, 3);
 IplImage *gray = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
 IplImage *biner = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
 cvCvtColor(img, hsv, CV_RGB2HSV);
 cvCvtColor(img, gray, CV_RGB2GRAY);
 cvThreshold(gray, biner, 100, 255, CV_THRESH_BINARY);
 // print rgb values of first pixel
 int r = (int)img->imageData[0];
 int g = (int)img->imageData[1];
 int b = (int)img->imageData[2];

Tuesday, 28 October 2014

konfigurasi opencv 2.4.9 pada visual studio 2012


1. Download VS 2012 (vc11)
2. Download Opencv (2.4.9)
3. Extract Opencv
4. (visual Studio) Buat Win32(C++) Console Application
5. (Opencv + Visual stuio)  Klik kanan menu project --> Propertis
6. (Opencv + Visual stuio)  Pilih Configuration Manager --> Tambahkan x64 jika 64bit, jika 32bit sdh secara default

Saturday, 25 October 2014

Smoothing image with Homogenus, Gausian, Median, Bilateral filter opencv

kali ini mencoba filter dengan Homogenus, Gausian, Median, Bilateral filter opencv...selamat mencoba
----------------------------------------------------------------------------------------------------hasilnya



----------------------------------------------------------------------------------------------------
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace std;
using namespace cv;

/// Global Variables
int DELAY_CAPTION = 1500;
int DELAY_BLUR = 100;
int MAX_KERNEL_LENGTH = 31;

Mat src; Mat dst;
char window_name[] = "Filter Demo 1";


/// Function headers
int display_caption( char* caption );
int display_dst( int delay );

/**
 * function main
 */
 int main( int argc, char** argv )
 {
   namedWindow( window_name, CV_WINDOW_AUTOSIZE );


Discrete Fourier Transform DFT image opencv (spectrum magnitude)

kali ini mencoba Discrete Fourier Transform DFT opencv (spectrum magnitude)....selamat mencoba....dan berikut ini sourcecodenya
-------------------------------------------------------------------------------------------------------------
hasilnya


-------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char ** argv)
{
    const char* filename = argc >=2 ? argv[1] : "foto.jpg";
IplImage *img = cvLoadImage("foto.jpg");
    cvNamedWindow("Image asli", CV_WINDOW_AUTOSIZE);
cvShowImage("Image asli",img);
    Mat I = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);

    if( I.empty())
        return -1;

    Mat padded;                            //expand input image to optimal size
    int m = getOptimalDFTSize( I.rows );
    int n = getOptimalDFTSize( I.cols ); // on the border add zero values
    copyMakeBorder(I, padded, 0, m - I.rows, 0, n - I.cols, BORDER_CONSTANT, Scalar::all(0));
 

Menggambar dengan OpenCV

berikut ini ada sourcecode untuk menggambar dengan library open cv......selamat mencoba
-------------------------------------------------------------------------------------------------------------
hasilnya
-------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#define w 400

using namespace cv;

/// Function headers
void MyEllipse( Mat img, double angle );
void MyFilledCircle( Mat img, Point center );
void MyPolygon( Mat img );
void MyLine( Mat img, Point start, Point end );

int main( void ){
  /// Windows names
  char atom_window[] = "Drawing 1: Atom";
  char rook_window[] = "Drawing 2: Rook";
 

Image blending opencv

kali ini mencoba image blending dengan opencv seperti berikut (syarat ukuran image1 dan image2 sama)
-----------------------------------------------------------------------------------------------------
hasilnya
------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace cv;

int main( int argc, char** argv )
{
 double alpha = 0.5; double beta; double input;

 Mat src1, src2, dst;

 /// Ask the user enter alpha
 std::cout<<" Simple Linear Blender "<<std::endl;
 std::cout<<"-----------------------"<<std::endl;
 std::cout<<"* Enter alpha [0-1]: ";
 std::cin>>input;

 /// We use the alpha provided by the user if it is between 0 and 1
 if( input >= 0.0 && input <= 1.0 )
   { alpha = input; }

 /// Read image ( same size, same type )
 src1 = imread("foto.jpg");

Wednesday, 10 September 2014

panduan instalasi dan konfigurasi opencv pada visual studio 2012

kesempatan kali ini akan menjelaskan tentang instalasi dan konfigurasi opencv pada visual studio 2012. opencv sendi ialah kependekan dari open computer vision, opencv sendiri banyak digunakan oleh pengembang2 perangkat lunak dan para ilmuan yang menggunakan pengolahan citra atau image processing. dengan opencv sendiri banyak sekali membantu dalam pengolahan citra. tidak hanya pada operating system(OS) windows saja kita juga dapat menggunakan pada OS Linux, MAC OS, dan android.

perlu diketahui opencv yang saya gunakan ialah versi 2.4.9. Operating system yang saya gunakan windows 8 32bit (dapat juga pada winxp,win7,dll) yang perlu diketahui 32bit(86) atau 64 bit karena akan berpengaruh. visual studio yang digunakan visual studio 2012 atau versi 11, dapat juga pada VS2013 atau versi 12, harap berhati2 saat intalasi pada versi yang nanti akan digunakan.

berikut ini adalah cara dan proses intalasi dan konfigurasi opencv.
1. Download VS 2012 (vc11)
2. Download Opencv (2.4.9)
3. Extract Opencv

Tuesday, 9 September 2014

Prosedur pembuatan aplikasi yang baik

Kali ini saya akan berbagi mengenai tahapan dalam pembuatan perangkat lunak atau software, dengan panduan ini diharapkan developer dapat meminimal lisir hal2 yang tidak inginkan, panduan ini di sadur dari SWEBOK v3 standar IEEE. tulisan ini didasari oleh saya sendiri yang kurang baik dalam proses pembuatan software, kurang baik ini antaralain asal memenuhi permintaan user dan asal jadi tanpa memperhatikan aspek standar minimum yg baik dan benar. dibawah ini merupakan alur secara umum dalam pembuatan perangkat lunak atau sering dikenal dengan SDLC (software developer life cycle).

Ada 5 tahapan penting dalam pembuatan software yaitu :

1. Requirement : dimana developer menganalisa kebutuhan atau permintaan dari user/customer.
2. Design : developer mulai merancang permintaan user.
3. Implementation : developer mulai memprogram software tersebut.
4. Testing : tahap pengujian software yang telah jadi baik masih alpha atau pun beta.
5. Maintenance:   tahapan dimana melakukan perbaikan-perbaikan dari hasil testing ataupun bug yang diperoleh.

Berdasakan penelitian biaya yang paling banyak menghabiskan dana adalah pada tahapan maintenance, hal ini dikarenakan banyak keinginan dari user yang tidak terpenuhi atau tercapai.

Selanjutnya akan digambarkan tahapan-tahapan dalam setiap SDLC.

1. REQUIREMENT
1.1 SR Fundamental
1.2 SR Process

 1.3 SR Elicitation
1.4 SR Analysis
1.5 SR Specification
1.6 SR Validation
1.7 Practical Consideration

untuk prose pada penjelasan tahapan akan disajikan pada bagian lain....

tahanp proses yang kedua ialah design, beberapa tahapan proses design di sajikkan pada gambar dibawah :

2. DESIGN
2.1 SD Fundamental
2.2 Key Issue in SD
2.3 Software and Architecture
2.4 User Interface Design
2.5 SD Quality Analysis and Evolution
2.6 SD Notations
2.7 SD Strategy and Method
3. Implementation
3.1
4. Testing

5. Maintenance


5.1 SM Fundamental
5.2 Key issues in SM
5.3 Maintenance Process

5.4 Techniques for Maintenance
 

Tuesday, 15 April 2014

interpolasi quadatric/newton interpolasi orde 2 metode numerik

hasilnya
----------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
float x0,x,x1,x2,fx0,fx,fx1,fx2,b0,b1,b2;
printf("program untuk quadatric interpolasi\n");
printf("masukan nilai x0 : \n");
scanf("%f",&x0);
printf("masukan nilai x1 : \n");
scanf("%f",&x1);
printf("masukan nilai x2 : \n");
scanf("%f",&x2);
printf("masukan nilai x : \n");
scanf("%f",&x);


divided interpolasi /newton interpolasi orde 3 metode numerik

hasilnya
-----------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main()
{
float x0,x,x1,x2,x3,fx0,fx,fx1,fx2,fx3,b0,b1,b2,b3,fx1x0,fx2x1,fx3x2,fx2x1x0,fx3x2x1,fx3x2x1x0;
printf("program untuk diveded interpolasi\n");
printf("masukan nilai x0 : \n");
scanf("%f",&x0);
printf("masukan nilai x1 : \n");
scanf("%f",&x1);
printf("masukan nilai x2 : \n");
scanf("%f",&x2);
printf("masukan nilai x3 : \n");
scanf("%f",&x3);
printf("masukan nilai x : \n");
scanf("%f",&x);


interpolasi linier/ newton interpolasi orde 1 metode numerik

hasilnya

--------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main()
{
float x0,x,x1,fx0,fx,fx1;
printf("program untuk liner interpolasi\n");
printf("masukan nilai x0 : \n");
scanf("%f",&x0);
printf("masukan nilai x1 : \n");
scanf("%f",&x1);
printf("masukan nilai x : \n");
scanf("%f",&x);

printf("masukan nilai f(x0) : \n");
scanf("%f",&fx0);
printf("masukan nilai f(x1) : \n");
scanf("%f",&fx1);

fx=(((fx1-fx0)*(x-x0))/(x1-x0))+fx0;
printf("hasil====\n");
printf("x0=%f   |   f(x0)=%f\n",x0,fx0);
printf("x1=%f   |   f(x1)=%f\n",x1,fx1);
printf("x =%f   |   f(x0)=%f\n",x,fx);



system("pause");
return 0;
}

hasilnya


langrange metode numerik pemrograman c/c++

hasilnya

-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main()
{
float x0,x,x1,x2,x3,fx0,fx1,fx2,f1x,f2x,f3x;
printf("program untuk lagrange interpolasi\n");
printf("masukan nilai x0 : \n");
scanf("%f",&x0);
printf("masukan nilai x1 : \n");
scanf("%f",&x1);
printf("masukan nilai x2 : \n");
scanf("%f",&x2);
printf("masukan nilai x : \n");
scanf("%f",&x);

printf("masukan nilai f(x0) : \n");
scanf("%f",&fx0);
printf("masukan nilai f(x1) : \n");
scanf("%f",&fx1);
printf("masukan nilai f(x2) : \n");
scanf("%f",&fx2);

f1x=(((x-x1)/(x0-x1))*fx0) + (((x-x0)/(x1-x0))*fx1);
f2x=((((x-x1)*(x-x2))/((x0-x1)*(x0-x2)))*fx0) + ((((x-x0)*(x-x2))/((x1-x0)*(x1-x2)))*fx1) + ((((x-x0)*(x-x1))/((x2-x0)*(x2-x1)))*fx2);
// f3x=((((x-x1)*(x-x2)*(x-x3))/((x0-x1)*(x0-x2)*(x0-x3)))*fx0) + ((((x-x0)*(x-x2)*(x-x3))/((x1-x0)*(x1-x2)*(x1-x3)))*fx1) + ((((x-x0)*(x-x1)*(x-x3))/((x2-x0)*(x2-x1)*(x2-x3)))*fx2) + ((((x-x0)*(x-x1)*(x-x2))/((x3-x0)*(x3-x1)*(x3-x2)))*fx3);


printf("hasil====\n");
printf("x0=%f\t|     f(x0)=%f\n",x0,fx0);
printf("x1=%f\t|     f(x1)=%f\n",x1,fx1);
printf("x2=%f\t|     f(x2)=%f\n",x2,fx2);
printf("x =%f\t|     f(x) =??\n",x);
printf("f1x=%f\n",f1x);
printf("f2x=%f\n",f2x);
//printf("f3x=%f",f3x);

system("pause");
return 0;
}


hasilnya


josephus algorithm / josephus problem, pemrograman c/c++

hasilnya......
---------------------------------------------------------------------------------------------------------------
/*
Nama Program : Josepus Problem
Deskripsi Program : aplikasi di gunakan untuk pemilihan ketua kelas, dimana user menginputkan nama-nama calon ketua kelas,
yang selanjutkan akan dipilih menggunakan algoritma josepus, selain nama-nama calon ketua kelas user juga
memberikan masukan interval yang digunakan unutk menghapus/mengurangi calon ketua kelas.user dapat memilih
akan memulai interval dari salah satu calon yang telah diinputkan.
Disclaimer :
Versi : Versi 1.0.0
Author : Tegar Palyus Fiqar 1213200034
*/

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct node
{
struct node *next;//alamat penyimpanan ke node selanjutnya.
char nama[20];//menyimpan nama2 ketua kelas, max 20 karakter.
}*start;//awalan dari list

typedef struct node *nodepointer;//typedata yang digunakan.

void tambah(char namanama[])//digunakan untuk menabah node pada list.
{
nodepointer tmp=(struct node *)malloc(sizeof(struct node));//mendeklasikan dan mengalokasi memory untuk node baru.
nodepointer pindah;
pindah=start;//awal untuk memulai.
if(tmp==NULL)
{
printf("maaf terlalu banyak");
return;//jika memory yang dialokasikan tidak cukup
}
while ((pindah->next)!=NULL)
{
pindah=pindah->next;//proses "pindah" node dari awal hingga akhir.
}
strcpy(tmp->nama,namanama);//mengkopi nama kedalam var nama-nama
tmp->next=NULL;
pindah->next=tmp;
}

int main()
{
char pilihan[20];
start=(nodepointer)malloc(sizeof(struct node));//mengalokasikan memory yang akan digunakan
printf("\t\tPemilihan ketua kelas menggunakan josepus \n\n\n");
printf("masukan nama calon ketua kelas : (maksimum 20 karakter)\n");//memasukan nama yang pertama
printf("\t");
scanf("%s",start->nama);
start->next=NULL;
printf("\nsilahkan tambah nama ketua kelas atau jika ingin diakhiri masukan ""stop"" \n");// memasukan nama yang kedua
printf("\t");
scanf("%s",pilihan);
while (strcmp(pilihan,"stop")!=0)//syarat untuk berhinti input nama ketua kelas
{
tambah(pilihan);
printf("\nsilahkan tambah nama ketua kelas atau jika ingin diakhiri masukan ""stop"" \n");// memasukan nama yang selanjutnya
printf("\t");
scanf("%s",pilihan);
}
nodepointer pindah=start;
printf("\nYang menjadi calon-calon ketua kelas dengan circular linkedlist adalah :\n\n");
printf("|");
printf(" %s ",pindah->nama);//menampilkan nama2 calon ketua kelas yang pertama.
printf(" %d ",pindah->nama);
printf(" %x ",pindah->nama);
printf("|");
printf("--->");
while ((pindah->next)!=NULL)
{
pindah=pindah->next;
printf("|");
printf(" %s ",pindah->nama);//menampilkan nama2 calon ketua kelas yang kedua dan seterusnya.
printf(" %d ",pindah->nama);
printf(" %x ",pindah->nama);
printf("|");
printf("--->");
}
pindah->next=start;//membuat circular linkedlist
pindah=start;
printf("|");
printf(" %s ",pindah->nama);
printf(" %d ",pindah->nama);
printf(" %x ",pindah->nama);
printf("|");
int hitung;//variabel yang akan digunakan untuk banyaknya interval.
char namaawal[20];//variable yang digunakn sebagai nama awalan yg akan dipilih.
printf("\n\nmasukan interval yang akan di hapus : \n");
printf("\t");
scanf("%d",&hitung);
printf("masukan mulai dari siapa perhitungan intervalnya : \n");
printf("\t");
scanf("%s",&namaawal);
int counter;
counter=0;
while (strcmp(pindah->nama,namaawal)!=0)
{
pindah=pindah->next;
}
int i;
i=1;
while (pindah->next!=pindah)//syarat dalam menentukan akhir dari ketua kelas.
//jika syarat pindah->next!=pindah, maka masih ada beberapa calon,
//akan looping hingga pindah->next==pindah, maka hanya tersisah 1 ketua kelas.
{
counter++;
//if(counter==hitung)// menghapus next node.
if(counter==hitung-1)
{
nodepointer tmp=pindah->next;
pindah->next=tmp->next;
printf("\nyang tidak terpilih menjadi ketua kelas ke-%d adalah ""%s"" %d",i,tmp->nama,tmp->nama);
free(tmp);//hingga ruang kosong pada memory
counter=0;
i++;
}
pindah=pindah->next;
}
printf("\nyang menjadi ketua kelas adalah ""%s"" %d\n\n",pindah->nama,pindah->nama);
system("pause");

}

hasilnya......

metode numerik LU decomposition menggunakan bahasa pemrograman c/c++

hasilnya
-------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int main()
{
printf ("program untuk LU Decomposition\n\n");
int i,j,n,k,m,o,c;
float a[10][10],x[10],b[10],u[10][10],l[10][10],f[10][10],f32,d[10],q,w,e,r,t,y;
printf("masukan banyak persamaan yang diinginkan: ");
scanf("%d",&n);
printf("\nmasukan nilai2 koefisien matriks nya : \n\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("Baris[%d],Kolom[%d] = ",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}
printf("\nmasukan nilai2 matriks B : \n\n");
for(i=1;i<2;i++)
{
for(j=1;j<=n;j++)
{
printf("nilai B [%d] = ",j);
scanf("%f",&b[j]);
}
printf("\n");
}
//cetak
printf("matrik A :\n");
for(i=1;i<=n;i++)
{
printf("|");
for(j=1;j<=n;j++)
{
printf("   %f   ",a[i][j]);
}
printf("|");
printf("\t|x%d|   =",i);
printf("\n");
}

metode numerik gaus seidel error ditentuakan user.menggunakan bahasa pemrograman c/c++

hasilnya
---------------------------------------------------------------------------------------------------------
include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#define X1(x2,x3) ((b[1] + ((-1)*a[1][2]*(x2)) + ((-1)*a[1][3]*(x3)))/a[1][1])
#define X2(x1,x3) ((b[2] + ((-1)*a[2][1]*(x1)) + ((-1)*a[2][3]*(x3)))/a[2][2])
#define X3(x1,x2) ((b[3] + ((-1)*a[3][1]*(x1)) + ((-1)*a[3][2]*(x2)))/a[3][3])

int main()
{
int i,j,n,k;
double x1=0,x2=0,x3=0;
float a[10][10],b[10],y1,y2,y3,inerror,error;
printf("\tprogram untuk gaus-seidel\n\n");
printf("masukan banyak matrik yang digunakan : ");
scanf("%d",&n);
printf("\nmasukan nilai matriknya : \n");
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("niali a[%d][%d]= ",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}
printf("masukan nialai konstanta : \n");
for(i=1;i<=1;i++)
{
for(j=1;j<=n;j++)
{
printf("nilai b[%d]= ",j);
scanf("%f",&b[j]);
}
printf("\n");
}

metode numerik gaus seidel error < 0.0001menggunakan bahasa pemrograman c/c++

hasilnya
----------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#define ESP 0.0001
#define X1(x2,x3) ((b[1] + ((-1)*a[1][2]*(x2)) + ((-1)*a[1][3]*(x3)))/a[1][1])
#define X2(x1,x3) ((b[2] + ((-1)*a[2][1]*(x1)) + ((-1)*a[2][3]*(x3)))/a[2][2])
#define X3(x1,x2) ((b[3] + ((-1)*a[3][1]*(x1)) + ((-1)*a[3][2]*(x2)))/a[3][3])

int main()
{
int i,j,n,k;
double x1=0,x2=0,x3=0;
float a[10][10],b[10],y1,y2,y3;
printf("\tprogram untuk gaus-seidel\n\n");
printf("masukan banyak matrik yang digunakan : ");
scanf("%d",&n);
printf("\nmasukan nilai matriknya : \n");
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("niali a[%d][%d]= ",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}

Sunday, 13 April 2014

pemrograman bahasa c menggunakan array untuk membalikan karakter/ string

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
// function prototype declarations
int length(char a[20]);
void main()
{
int count=0,i;
int len; // length of the string
char c;
char x[20]; // array of characters. string
// get a character
printf("\n Enter a word and press <enter>\n");
c=getchar();
while ( c!='\n') // ‘\n’ is end of line character i.e. pressing enter key
{
x[count]=c;
count++;
c=getchar();
}
// we have reached end of line. Append ‘\0’ to the string
x[count]= '\0';
len = count;
// Now display the string you have just read
printf("\n String inputted : %s ", x);
printf("\n space allocated to single char : %d byte", sizeof(char));
printf("\n Memory space allocated to string x[] : %d ", sizeof(x));
printf("\n No of characters in the string x [] : %d ", length (x));
// now reverse the string
printf("\n string X reversed.\n");
for ( i=len-1;i>=0;i--)
printf("%c",x[i]);
printf("\n");
system("pause");
}

int length(char a[]) /*function definition*/
{
int i=0;
while(a[i]!='\0') /*when the character is not null*/
i++;
return i;
}/*end of function length*/

hasilnya

belajar perograman array bahasa c

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int i,n; //number of ements of array x
int x[]={80,90,100,50,65,70};
n= sizeof(x)/sizeof(int);
printf("\n size of data type <int>%d ", sizeof(int));
printf("\n Memory space allocated to x[6] : %d ", sizeof(x));
printf("\n no of elements in array x = %d",n);
// %u displays the address in unsigned decimal integer
// %x displays the address in hexa with 0x omitted.
printf("\n array elements\t:\taddress ");
printf("\naddress in unsigned decimal integer");
for (i=0;i<n; i++)
printf("\n%d\t:\t%u\t:\t%x", x[i],&x[i],&x[i]);
printf("\n");
system("pause");
}

hasilnya

Saturday, 12 April 2014

edge detection menggunakan canny opencv

berikut ini program untuk edge detection menggunakan canny dari camera webcam menggunakan library opencv....selamat mencoba
----------------------------------------------------------------------------------------------------------
hasil
------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;


void main()
{
int key = 0;
CvCapture *capture = cvCaptureFromCAM (0);
//keluar pke keyboard ‘q’
while( key !='q' )
{
IplImage *frame = cvQueryFrame(capture);

gray scale webcam opencv

berikut ini program untuk gray scale camera webcam menggunakan library opencv....selamat mencoba
------------------------------------------------------------------------------------------------------------
hasil

------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;


void main()
{
int key = 0;
CvCapture *capture = cvCaptureFromCAM (0);
//keluar pke keyboard ‘q’
while( key !='q' )
{
IplImage *frame = cvQueryFrame(capture);

capture webcam opencv

berikut ini program untuk capture camera webcam menggunakan library opencv....selamat mencoba

------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;


void main()
{
int key = 0;
CvCapture *capture = cvCaptureFromCAM (0);
//keluar pke keyboard ‘q’
while( key !='q' )
{
IplImage *frame = cvQueryFrame(capture);
if( !frame ) break;
cvShowImage( "colour", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
key = cvWaitKey( 0 );
}
// cvDestroyWindow( “Example2″ );
cvReleaseCapture( &capture );
//return 0;
}
------------------------------------------------------------------------------------------------------------
hasil

camera webcam open cv

berikut ini program untuk test camera webcam menggunakan library opencv....selamat mencoba

------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;

int main() {
  CvCapture *capturee = 0;
  IplImage *frame = 0;
  int key = 0;
  capturee = cvCaptureFromCAM(0);
  if (!capturee) {
    cout << "Capture Error !!\n";
    return 1;
  }
  cvNamedWindow("Tes Camera OpenCV", CV_WINDOW_AUTOSIZE);
  while(key != 27) {
    frame = cvQueryFrame(capturee);
    if (!frame) break;
    cvShowImage("Tes Camera OpenCV", frame);
    key = cvWaitKey(1);
  }
  cvDestroyWindow("Tes Camera OpenCV");
  cvReleaseCapture(&capturee);
  return 0;
 }
------------------------------------------------------------------------------------------------------------
hasil

error image opencv

berikut ini program untuk error image menggunakan library opencv....selamat mencoba
------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;

int main()
{
IplImage *img = cvLoadImage("lena.bmp");
    cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
cvShowImage("Image:",img);
 cvErode(img,img,0,2); cvNamedWindow("error0:", CV_WINDOW_AUTOSIZE); cvShowImage("error0:",img);
    cvWaitKey();
    cvDestroyWindow("Image:");
    cvReleaseImage(&img);
return 0;
}
-----------------------------------------------------------------------------------------------------------
hasil

Invert Image open cv

berikut ini program untuk invert image menggunakan library opencv....selamat mencoba
-----------------------------------------------------------------------------------------------------------
hasil
------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;

int main()
{
IplImage *img = cvLoadImage("lena.bmp");
    cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
cvShowImage("Image:",img);
cvNot(img,img); cvNamedWindow("inverted:", CV_WINDOW_AUTOSIZE); cvShowImage("inverted:",img); 
    cvWaitKey();
    cvDestroyWindow("Image:");
    cvReleaseImage(&img);
return 0;
}
-----------------------------------------------------------------------------------------------------------
hasil


Dilatasi Image Open cv

Berikut ini program untuk dilatasi image  menggunakan library opencv....selamat mencoba
------------------------------------------------------------------------------------------------------------
hasil nya "image" adalah citra asli, "dilastasi" adalah citra hasil dilatasi

------------------------------------------------------------------------------------------------------------
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>

using namespace std;
using namespace cv;

int main()
{
IplImage *img = cvLoadImage("cancer.jpg");