วันศุกร์ที่ 11 กันยายน พ.ศ. 2552

Install Subclipse ใน eclipse ganymede

1. ใช้ synaptic หรือ sudo apt-get install แพ็กเกจนี้--> libnb-svnclientadapter-java
2. เปิด eclipse ไปที่ Help->Software Updates->(Tab)Available Software->Add Site เติมชื่อเว็บไซต์ดังนี้ http://subclipse.tigris.org/update_1.6.x/
Note: ชื่อเว็บไซต์ตอน Add site จะแตกต่างกันขึ้นอยู่กับเวอร์ชั่นของ eclipse ที่ใช้ตรวจสอบดูว่าควรจะใช้ update site URL อะไรที่เว็บ subclipse
3. Add site เสร็จก็ คลิกเลือกเพื่อ install ดังนี้
คลิกปุ่ม install
4. เมื่อการติดตั้งพร้อมก็คลิก Next , accept ละก็ Finish ได้เลย

วันเสาร์ที่ 5 กันยายน พ.ศ. 2552

Memo : Hack SURF code in openCV

Reference from example(find_obj.cpp) in openCV , there are steps as following:

1. Load source image and destination image with cvLoadImage(filename,CV_LOAD_

IMAGE_GRAYSCALE)

2. Data type cvSURFParams is used to do something? (Need more documentation)

3. Function cvExtractSURF is used to extract SURF feature points and descriptors for both source and destination images. By calling cvExtractSURF, it will give us info about  key points(x and y location) in image and descriptor of each point. These info are kept in CvSeq data type where objectKeyPoints is used to keep location of key points and  objectDescriptors is used to keep descriptor of each key point.

4. Function findPairs have iteration based on number of descriptor of sourc image. For each descriptor of source image is compared with every descriptor of destination image. Vector ptPairs is used to keep index of  correspondence descriptors. ptPairs kept vector in pair of  source descriptor index and destination descriptor index. (i.e. (1st src descriptor index, index of similar destination descriptor,  2nd src descriptor index, index of similar destination descriptor, 3rd src descriptor index, index of similar destination descriptor,......, nth src descriptor index, index of similar destination descriptor)) 

Precisely, even index of ptPairs will point to source objectKeyPoints and odd index of ptPairs will point to destination  imageKeyPoints. Now , you will get point correspondences between two image. 

วันศุกร์ที่ 4 กันยายน พ.ศ. 2552

Installation openCV on Ubuntu 9.04

วันนี้ทำการลง openCV ใหม่หลังจากลงอุบุนตุใหม่ ประกอบกับจำไม่ได้ว่า
ครั้งก่อนลงไปแล้วไม่ได้จดวิธีลงไว้ ลงอีกครั้งเลยขอจดไว้ก่อน เผื่อคราวหน้า
ลงอุบุนตุใหม่จะได้ไม่มานั่งงมอีก

อ้างอิงการลง openCV บน Ubuntu 9.04 จาก

http://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:install:ubuntu


(Thanks อ.แมท(Dr.Matthew@AIT)for very useful installation guide)
ซึ่งมีขั้นตอนดังนี้

1. ใช้ synaptic ติดตั้ง libgstreamer0.10-dev และ libdc1394-13-dev
2. ดาวน์โหลด opencv 1.1.0 ได้จาก openCV wiki
3. แตกไฟล์ opencv-1.1pre1.tar.gz โดยใช้คำสั่ง tar -xvfz opencv-1.1pre1.tar.gz
4. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง(ให้เหมือนอันนี้เลยนะ เครื่องหมาย=พิมพ์ให้ติดprefix)
./configure --prefix=${HOME}/opencv --without-xine --without-quicktime --with-gstreamer --with-1394libs --with-v4l
5. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง
make
6. เมื่อ make เสร็จ ก็พิมพ์
make install
เพื่อติดตั้ง opencv ได้เลยโดย opencv จะไปติดตั้งอยู่ที่ /home/jednipat/opencv ตามไดเรคทอรี่ที่ระบุไว้ตอนรัน ./configure
7. พิมพ์
export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

เมื่อ make install เสร็จ ก็ลองมารัน example ที่ opnecv ให้มาโดยคอมไพล์ดังนี้
g++ -o outputname yourfilename.c -I /home/jednipat/opencv/include/opencv/ -lhighgui -L /home/jednipat/opencv/lib/

กรณีของผมคอมไพล์ผ่านแต่พอรันแล้ว เจอ error ดังนี้ (เนื่องจากผมลืมทำข้อ 7)

error while loading shared libraries: libhighgui.so.2: cannot open
shared object file: No such file or directory


เลยค้นวิธีแก้ได้มาจากบล็อกของ dsin (พี่พง) สาเหตุเป็นเพราะว่ายังไม่ได้ export LD_LIBRARY_PATH ซึ่งก็ทำได้ดังนี้
export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

ที่นี้คิดว่าน่าจะรันได้ตามปกติ ลองคอมไพล์และรัน example ดูอีกที คอมไพล์ผ่าน
แต่พอรันปุ๊ป เจอกับ

OpenCV ERROR: Unspecified error (The function is not implemented.
Rebuild the library with Windows, GTK+ 2.x or Carbon support)
in function cvNamedWindow, window.cpp(71)
Terminating the application...
Segmentation fault

อ๊ากก... ค้นไปค้นมาอีกก็ได้คำแนะนำจากเว็บนี้ < - - คลิก คอมเมนต์สุดท้ายบอกไว้ว่าสาเหตุมาจากตอนรัน ./configure และ make ไม่มี gtk+ lib dev ไม่มีเขาแนะนำให้ remove openCV ออกก่อน แล้วไปลง libgtk2.0-dev (เข้า synaptic package management แล้ว search คำว่า libgtk2.0-dev ละก็ mark for installation - > apply )

เมื่อลง libgtk2.0-dev เสร็จให้ uninstall openCV ก่อนโดยพิมพ์ make uninstall
ในไดเรคทอรี่ opencv-1.1.0 จากนั้นเพื่อความชัวร์ควรจะ restart เครื่องก่อน
(ผมไม่รีสตาร์ทเครื่อง make ใหม่ก็เจอปัญหาเดิม เลยลอง รีสตาร์ทเครื่อง แล้วทำใหม่)

แล้วทำการ ./configure , make , make install อีกที

1> ./configure blablabla..
2> make
3> make install
4> export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

จากนั้นไปยัง directory /home/jednipat/opencv-1.1.0/samples/c
แล้วลองคอมไพล์ไฟล์ใด ๆ ผมเลือกไฟล์ตัวอย่างการใช้งาน SURF descriptor
ชื่อไฟล์ว่า find_obj.cpp คอมไพล์ด้วยคำสั่งดังนี้

g++ find_obj.cpp -o test -I /home/jednipat/opencv/include/opencv/ -lhighgui
-L /home/jednipat/opencv/lib/

จากนั้นรัน ./test เพื่อดูผลลัพธ์ของโปรแกรม

เย้... สำเร็จ..