Friday, April 29, 2011

IV2010 paper is available to download now

This paper was accepted in IEEE Intelligent Vehicles Symposium (IV) 2010. Now I upload the preprint version to this site, so everyone can access it and comment on my work.

Guoliang Liu, Florentin Woergoetter, Irene Markelic. "Combining Statistical Hough Transform and Particle Filter for Robust Lane Detection and Tracking." IEEE Intelligent Vehicles Symposium, June 2010 (Oral)(pdf)

You can download it from my google site:
https://sites.google.com/site/guoliangliu2010/publications

A paper accepted in 2011 IEEE Workshop on Statistical Signal Processing (SSP2011)

I have the other paper accepted in 2011 IEEE Workshop on Statistical Signal Processing (SSP2011):

Guoliang Liu, Florentin Woergoetter, Irene Markelic. "Nonlinear Estimation Using Central Difference Information Filter." 2011 IEEE Workshop on Statistical Signal Processing , SSP2011. (Accepted)

The pdf file is available in my personal google site:
https://sites.google.com/site/guoliangliu2010/publications

One paper accepted in ICRA2011

The paper's detail is as follows:

Guoliang Liu, Florentin Woergoetter, Irene Markelic. " Lane Shape Estimation using Partitioned Particle Filter for Autonomous Driving." IEEE International Conference on Robotics and Automation 2011 (Accepted, Oral)(pdf)

The pdf and the source code of this paper are available in my personal site soon:
https://sites.google.com/site/guoliangliu2010/publications

This paper introduces a novel lane tracking method. The contributions in this paper are three folds:
First, multiple kernel density estimation method is used to infer the lane parameters.
Second, a partitioned particle filter is used for linear-parabolic lane shape estimation.
Third, we combine the partitioned particle filter and the multiple kernel density, and shows its robustness in challenge scenes.

Well, if you would join in ICRA 2011, which will be held in Shanghai of China next month, let's meet together.

Thursday, April 28, 2011

My personal website: google site

https://sites.google.com/site/guoliangliu2010/

A little bit shock by the New Ubuntu 11.04

Today a new message just show up: the new ubuntu 11.04 comes.
Then I choose update to the new version. I thought everything will be fine.
However, after long time update, the computer restart, but no screen be found.
After I check the log files of system and xserver, finally I figure out the reason is the installed NVIDIA driver doesn't compatible with this new ubuntu.
I download a new version of NVIDIA driver, which is (270.40).
Surprisingly, now it works......
The new desktop of ubuntu looks so simple and a little stupid.
I have to learn how to find the applications and the configure programs, etc..
There are no panel bar anymore, and everything seems be hided.
I don't like this style. I prefer everything can be easily found or seen.
So if you have the same feeling, just go to the "login screen" and select "ubuntu classic" as default session.
I like the classic....

CMUCAM3: HSV color space

There is a command [CS ], which is not in the CMUCAM manual.
This command can set the color space to HSV: [CS 1].
If you would like to use RGB, then simply use [CS 0].

The other similar command is [CR ], which only sets the color space to CrYCb.

Monday, April 18, 2011

CTAGS for source code analysis

Today I found it's nice to work with ctags, which is a source code analysis tool.
Although it doesn't have a nice front-end gui interface, ctags works nicely with vi and vi's brothers, e.g., vim, gvim.
The source navigator is also nice to try, but it looks much complicated when you just want to have a look at the classes or functions in your code. The other important thing is I am used to program in GVIM.
The way to use ctags is very simple, first go to your source directory, and type following command in your terminal:
ctags -R *
this command will generate a tags file which you can find in your source directory.
Next thing is using vi or gvim to open your source file, and move cursor to the keyword, e.g, class name, function name, etc., and use CTRL-] to get this keyword's source position. If you want to get backward, then use CTRL-T.

CTAGS is small and big enough for me.

Saturday, April 16, 2011

PKG-CONFIG with INTEL IPP

Intel® Integrated Performance Primitives Performance Library is used with OPENCV.
The pkg-config is a nice tool to compile your programs, because you don't need define a lot of libraries in the Makefile.
Here I made a pkg-config file for IPP, which can be copied to your local lib directory.
In general, you can put it in "/usr/local/lib/pkgconfigs".

First create a .pc file in above directory, here we give it a name: ipp.pc, then copy following contents to the file:
"
# Package Information for pkg-config

prefix=/opt/intel
exec_prefix=${prefix}/ipp
ipp_libdir=${exec_prefix}/lib/ia32
intel_libdir=${prefix}/lib/ia32
includedir=${exec_prefix}/include

Name: INTEL_IPP
Description: Intel Integrated Performance Primitives Performance Library
Version: 3.2
Libs: -L${ipp_libdir} -lippac -lippcc -lippch -lippcore -lippcv -lippdc -lippi -lippdi -lippj -lippm -lippr -lippsc -lipps -lippvc -lippvm -L${intel_libdir} -lcxaguard -limf -lintlc -liomp5 -liompprof5 -liompstubs5 -lirc -lomp_db -lpdbx -lsvml
Cflags: -I${includedir}
"
Where we assume the ipp is installed under the folder /opt.

Here is a example which introduce how to use it in the Makefile:

PKG=`pkg-config opencv ipp --cflags --libs`
Matrix.o: Matrix.cpp Matrix.h
gcc -g -c Matrix.cpp $(PKG)

Thursday, April 14, 2011

Give up on CUDA 4.0

The reason is simple:
The new NPP was embedded in the CUDA toolkit.
However, the functions, such as Canny functions are not inside of NPP anymore.
To compile the OpenCV, I have to use CUDA 3.2.
Really pity.
I wasted 6 hours....F..K

IPP works with OpenCV 2.0 : a solution

The libraries name of IPP has been changed since IPP 7.0, so the New Opencv can not be compiled with IPP.
The solution is to change the CMakeLists.txt in the OpenCV2.0's source file.
The following is what I did, where the IPP_PATH is defined as /opt/intel/ipp/lib/ia32 in the CMAKE:

############################### IPP ################################
set(IPP_FOUND)
set(OPENCV_LOADER_PATH)

if(UNIX)
if(APPLE)
set(OPENCV_LOADER_PATH DYLD_LIBRARY_PATH)
else()
set(OPENCV_LOADER_PATH LD_LIBRARY_PATH)
endif()
endif()

foreach(v "7.0" "6.1" "6.0" "5.3" "5.2" "5.1")
if(NOT IPP_FOUND)
if(WIN32)
find_path(IPP_PATH "ippi-${v}.dll"
PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}
DOC "The path to IPP dynamic libraries")
if(NOT IPP_PATH)
find_path(IPP_PATH "ippiem64t-${v}.dll"
PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}
DOC "The path to IPP dynamic libraries")
endif()
endif()
if(UNIX)
find_path(IPP_PATH "libippi${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"
PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}
DOC "The path to IPP dynamic libraries")
if(NOT IPP_PATH)
find_path(IPP_PATH "libippiem64t${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"
PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}
DOC "The path to IPP dynamic libraries")
endif()
endif()
if(IPP_PATH)
file(GLOB IPP_HDRS "${IPP_PATH}/../../../ipp/include")
if(IPP_HDRS)
set(IPP_FOUND TRUE)
endif()
endif()
endif()
endforeach()

message(STATUS "IPP detected: ${IPP_FOUND}")

if(WIN32 AND NOT MSVC)
set(IPP_FOUND)
endif()

set(USE_IPP ${IPP_FOUND} CACHE BOOL "Use IPP when available")

message(STATUS "IPP_FOUND: ${IPP_FOUND}")
message(STATUS "USE_IPP: ${USE_IPP}")
message(STATUS "USE_PATH: ${IPP_PATH}")


if(IPP_FOUND AND USE_IPP)
add_definitions(-DHAVE_IPP)
include_directories("${IPP_PATH}/../../../ipp/include")
link_directories("${IPP_PATH}/../../../ipp/lib/ia32")

file(GLOB em64t_files "${IPP_PATH}/../lib/*em64t*")
set(IPP_ARCH)
if(em64t_files)
set(IPP_ARCH "em64t")
endif()

set(A ${CMAKE_STATIC_LIBRARY_PREFIX})
set(B ${IPP_ARCH}${CMAKE_STATIC_LIBRARY_SUFFIX})
if(WIN32)
set(L l)
else()
set(L)
endif()
set(IPP_LIBS
${A}ippvm_l${B}
${A}ippcc_l${B}
${A}ippcv_l${B}
${A}ippi_l${B}
${A}ipps_l${B}
${A}ippcore_l${CMAKE_STATIC_LIBRARY_SUFFIX})
endif()

INstall CUDA toolkits under Ubuntu

Here is a wonderful link to introduce the steps.

http://wiki.accelereyes.com/wiki/index.php/Installing_CUDA_Under_Ubuntu_10.04

Today I had one error, that the NVIDIA_GPU_Computing_SDK can not find out the libXmu.
The solution for this issue is using following command in the terminal :
$ sudo ln -s /usr/lib/libXmu.so.6 /usr/lib/libXmu.so