Thursday, December 10, 2009

How to print nice figure on matlab

Here is an example that can print current figure to a eps file with DPI=300 .

figure;
print(gcf, '-depsc','-r300', figname);

"gcf" means the current figure. "-depsc" means save as eps color image. "-r300" means 300dpi, "figname" should be something like "name.eps"

Monday, December 7, 2009

Mimimum distance from point to a curve

1. Assume we already know the function of curve: y=f(x); Given a point p(x1,y1), calculate the minimum distance:

D=sqrt((x-x1)^2+(y-y1)^2);

D*=(x-x1)^2+(y-y1)^2;

substitute y by f(x);

D*=(x-x1)^2+(f(x)-y1)^2;

Compute the derivative of D* and set it to zero: D*'=0, then we can solve x; substitute x , we get minimum distance D*;

2. The other one is no function expression of curve. We need calculate all points.

Monday, November 16, 2009

Convert bib file to bbl file

I have a bibliography database file which was created by kbib. I want to use it on latex. In the tex file, I add

"
\bibliographystyle{plain}
\bibliography{bibfile}
"
just begin the end of documentation.

When I first compile the file, it told me it can not find reference .bbl file. So I use bibtex to build a .bbl file which can be used in latex.

$ bibtex filename.aux


here .aux was created by first run of latex. It automatically transfer data from bibfile.bib to filename.bbl by filename.aux.

It's great. Because you just need one database, then you can use it forever.

Thanks latex.

No bounding box.

! LaTeX Error: Cannot determine size of graphic
in ... (no BoundingBox).



Today I encounter this problem when I play with latex-beamer. The problem is that when I compile it I was using latex but not pdflatex...Because latex just can use .eps picture. The command pdflatex just accept .pdf, .png, except .eps.

After converting the image from png to eps, it works with latex. AFter converting eps to png, pdflatex also works.

Thursday, November 12, 2009

Smart search history command in linux bash

Well, many people knows the up key can search the similar command in matlab terminal. But in linux (Ubuntu), if you work on terminal and want to try this, then nothing happen. If you want it search command history automaticly, you need do:

edit \etc\inputrc
uncomment next part:

# alternate mappings for "page up" and "page down" to search the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward


Now you can use page up and down to search command history. Is that cool? eh.....

Saturday, November 7, 2009

Visual EKF_slam on volksrobot

The new dataset comes from our group's new lab. It still is a closed path. I used joystick control the robot. From the result, we can see, EKF slam is a powerful tool to correct the odometry error. In the end, it finally close the loop..

Left side of video is trajectory of robot, red line is odometry result. green line is fusion odometry with vision. Right side of video is feature tracking, green point is predicted point and red point is matched point.

Friday, October 30, 2009

A baby version of my bearing vision only EKF slam on our robot

It's the first version my EKF slam on this robot. The goal is fusion odometry with monocular vision. No ground truth, but from the video we can see the odometry can not close the loop and the slip make the trajectory can not be a circle. But the result from EKF_slam works here, it correct the angle of rotation when the robot have a sharp turn.


Lane detection, following and obstacle detection and avoidance

Here is our group's robot. The main work includes:

1. Lane detection
2. Lane following
3. obstacle detection
4. obstacle avoidance
5. Real time system

Anyway, it works now. Now I need do more work to challenge more complex situation and explore much more my own research and implement them on this volksrobot.

Wednesday, October 21, 2009

Setting nfs client to run server's program

System: Ubuntu
1. Install NFS client:
#sudo apt-get install portmap nfs-common
2. Mount the server files on laptop:
#sudo mkdir /nfs/matlab
#sudo mount server:/pub/matlab /nfs/matlab

Now it should work.
If you want to automount it, you need install autofs first:
1. Install autofs
# sudo apt-get install autofs
2. Add the following line at the end of /etc/auto.master:
/nfs /etc/auto.nfs
3. create a file /etc/auto.nfs and add following line( please make sure the dpi file doest include any file has same name with "matlab"):
matlab server:/pub/matlab
4. reload configure file:
$ sudo /etc/init.d/autofs reload
5. Check if it works:
$ls /nfs/matlab

vim-latexsuit

When I install it by apt-get on ubuntu, it doesn't work. Afterwards I download its source file and install it manually. Now it works.

But it uses evince as default dvi viewer and the output is quite bad. So I first change the default viewer by right click the icon of file and choose xdvi. It works just when I open the dvi file but not for gvim.

So I think I need set vim-latex's parameter. Finally I get it:
Open a .tex file and type "let g:Tex_ViewRule_dvi = 'xdvi'" . Now use the shortcut \lv of this suit, it show the file by xdvi.
I add this line to ./vim/ftplugin/tex.vim file. Now it works fine.

I also try the kdvi, but it can not work here. I still don't know the reason.

Thursday, September 24, 2009

print more numbers for "cout"

Normally for double data, the precision is quite high. But when you want to show some data like "123456789.12345", it just show you "1.2356e+09". From that, we see it just show you the data with 5 precision. In fact, it does not lose any data. This is for easy to see. If you want to show more, you can do:

#include

double a=123456789.12345;
int n=14;
cout << setprecision(n) << a << endl;


This time it shows you "123456789.12345".

Monday, August 10, 2009

Be careful to use cvGetSubRect, cvGetRow and cvGetCol

When you uses these three function or similar function which have cvGetXX part, you must be careful. It return the pointer to return matrix, if you change the value of return matrix, the mother of this submatrix will be changed too. For example:

float a[]={1,2,3,4};
CvMat A=cvMat(2,2,CV_32FC1);
CvMat* B=cvCreateMat(1,2,CV_32FC1);

cvGetRow(&A,B,0);

Of course, here B->data={1,2};
But if we do:

CV_MAT_ELEM(B,float,0,0)=100;

Then you can check the first element of matrix A or array a become 100!!

So Now we understand, these function return the pointer. It gives the first pointer of first row of A to B. But we already give a new space to B, this part of space is not used anymore because the pointer of B is not pointer to "CvMat* B=cvCreateMat(1,2,CV_32FC1);" anymore. We also can not release the B afterwards as it pointer the content of A.
So these three functions are for operation on mother matrix, but not for get content of A.

So the correct way to get a row from A is:
float a[]={1,2,3,4};
CvMat A=cvMat(2,2,CV_32FC1);
CvMat* B=cvCreateMat(1,2,CV_32FC1);

CvMat tmp;

cvGetRow(&A,tmp,0);
cvCopy(&tmp,B);

cvReleaseMat(&B);


Here we go.

Friday, August 7, 2009

How to use ffmpeg extract freams from video file

ffmpeg is a power tool.
Here is a method.

ffmpeg -i input.avi -r 10 -f image2 images%05d.png

Here input.avi is input video file.
10 is fps.
image2 is image format.
%05d means that it has five numbers behind images. eg.images99999.png

How to use svn to see difference between two version

The method is :

svn diff -r2:19

2 and 19 are version number. But first need update your working copy before you do it.

Tuesday, July 21, 2009

Input Chinese in Ubuntu(输入中文)

I follow the guidance of website "http://ubuntuforums.org/showthread.php?p=124214".
1. Install libraries:
* scim
* scim-chinese
* scim-config-socket
* scim-frontend-socket
* scim-gtk2-immodule
* scim-server-socket
* scim-tables-zh (option)
* xfonts-intl-chinese
* xfonts-intl-chinese-big
* ttf-arphic-gbsn00lp
* ttf-arphic-gkai00mp
* ttf-arphic-bkai00mp
* ttf-arphic-bsmi00lp


2, Open a terminal,
$gvim .xsession

Type
"
scim -d
export XMODIFIERS=@im=scim
export GTK_IM_MODULE=scim
gnome-session
"

Then save .xsession under your home direcotry.

$chomd +x .xsession



Restart X server by CTRL+ALT+BACKSPACE

Activate the chinese input by CTRL+SPACE.

Finally I got it. Very cool, just feel a little strange.

现在可以用中文咯。。。。。嘻嘻。。。




This method is dead in June, 2010.



But I find a solution:
$sudo apt-get install scim-qtimm im-switch scim-pinyin
$im-switch -z en_US -s scim

It works again......你看到了吧。。。死掉的SCIM又活回来了。。

Thursday, July 16, 2009

Take your work seriously

As,,,,
1. You are living on it.
2. Your boss pay for your work.
3. The only way to get successful feeling.


Don't let noise to let your work down.

Make clear to work and to life.

Friday, June 26, 2009

EKF or UKF?

For non linear system, the most important way to solve it is make it linear. The well known method is using Taylor formula. EKF is using Taylor formula to linear state equation and measure equation. And assuming the noise obey Gaussian.

But Taylor linear method is not the only way, the other way is using uncented transform to linearize the state equation and/or measure equation. It also assumes Gaussian noise.

Friday, June 19, 2009

get real disparity map from OpenCV function cvFindStereoCorrespondenceBM()

The function cvFindStereoCorrespondenceBM() can give you a disparity map, but it's not real disparity map which we used to reconstruct real 3D world.

I have checked the source code and find this function uses Bitwise operator to shift the real disparity value. For false matching points, it give a certain value which is left shifted version of 'mindisp-1', here mindisp is the minimum disparity value. In this function, it shift 4 bits, which means if mindisp=-64, then after shifted , it become -1040; Shifting 4 bits equal the value*2^4; Here -1040=(-64-1)*2^4;

As I don't exactly sure if it's same shift way for right matching points, so leave this question to the authors. But If I unshift all datas, I find all disparity value go to the right range, it seems for all the disparity, the author left shift 4 bits. If it's true, then we can get real disparity map by

disp_real=(disp_shifted/2^4)+1

Visit the Multi-channel data for Opencv Image and Matrix data

According the data structure of IplImage and CvMat, assuming we have a matrix M[m*n*c], which m is row's number, n is column number, c is channel' number. If the data type is float, then we can get the value of M(i,j,k):

M(i,j)=M.data.fl[i*n*c+j*c+k];

for double, short or uchar data:
M(i,j)=M.data.db[i*n*c+j*c+k];
M(i,j)=M.data.s[i*n*c+j*c+k];
M(i,j)=M.data.ptr[i*n*c+j*c+k];

If M is a IplImage data type, then we have:
M(i,j)=M->imagedata[i*n*c+j*c+k];

Thursday, June 11, 2009

Check disk Usage by "du"

For example:

$ du -s -m *

Here -s means dont show children folder. -m means show in MB

Dual IP on one internet card

For Ubuntu do :
$ cd /etc/network/
$ sudo vi interfaces

Then add follow line in:
If your 1st ip config is:

iface eth0 inet static
address 172.xxx.xxx.xxx
netmask 255.255.xxx.xxx
...
auto eth0

Now add 2th ip :

iface eth0:1 inet static
address 192.xxx.xxx.xxx
netmask 255.255.xxx.xxx
auto eth0:1


do:
#sudo /etc/init.d/networking restart

Wednesday, June 10, 2009

How to resize opencv image window

AS I need transfer the image to client computer by vnc, so bigger size image will be very slow. So I need resize it. But when you want to resize the window, you need make sure define the window like:

cvNamedWindow("winname",0);
cvResizeWindow("winname",200,200);

Then you also can resize the window manually.

But if you want window fit the image size automatically then you should :

cvNamedWindow("winname",CV_WINDOW_AUTOSIZE);

Then you are not allowed to resize it anymore. So be careful here.

Tuesday, June 9, 2009

Connect to headless desktop by TightVNC

My teamer is using s-video to connect laptop with TV. But for headless desktop, I think the work should be same: configure Xorg.conf file.
My laptop is lucky as the graphic card is Intel985, so ubuntu does nothing to transfer desktop of my laptop to TV, although the resolution is not good.

But my desktop is unfortunately has a Nvidea Graphcard. So if I use s-video which means I need configure Xorg.conf file, that 's now I want.
So I prefer use VNC or NX. Ubuntu already includes a X11vnc which is vino. That can work perfect if you login the X11 window of server. But our headless computer can not do that. So I choose TightVnc which seems can work with headless computer.

First,
1, install tightvncserver on headless computer and install vncviewer in my laptop.
2, use "ssh host@serverip" to connect server. run "vncserver :1". Then you need type password which you will need them to login later. Finally "exit".
3, On local machine, we run "vncviewer serverip :1", then type the password. Now you will get a window and a shell.


By the way, if you want to change the password, just run "vncpasswd" in the server machine through ssh.
If you want to kill the server then do "vncserver -kill :1"


Many guys said NX is better than VNC as it's faster. But for me, it's too complicate and VNC is fast enough.
If you want to use NX, then check here:
http://ubuntuforums.org/showthread.php?t=467219

Thursday, June 4, 2009

Friday, May 15, 2009

Scientist: Four golden lessons

Scientist: Four golden lessons
Steven Weinberg1

When I received my undergraduate degree — about a hundred years ago — the physics literature seemed to me a vast, unexplored ocean, every part of which I had to chart before beginning any research of my own. How could I do anything without knowing everything that had already been done? Fortunately, in my first year of graduate school, I had the good luck to fall into the hands of senior physicists who insisted, over my anxious objections, that I must start doing research, and pick up what I needed to know as I went along. It was sink or swim. To my surprise, I found that this works. I managed to get a quick PhD — though when I got it I knew almost nothing about physics. But I did learn one big thing: that no one knows everything, and you don't have to.

Another lesson to be learned, to continue using my oceanographic metaphor, is that while you are swimming and not sinking you should aim for rough water. When I was teaching at the Massachusetts Institute of Technology in the late 1960s, a student told me that he wanted to go into general relativity rather than the area I was working on, elementary particle physics, because the principles of the former were well known, while the latter seemed like a mess to him. It struck me that he had just given a perfectly good reason for doing the opposite. Particle physics was an area where creative work could still be done. It really was a mess in the 1960s, but since that time the work of many theoretical and experimental physicists has been able to sort it out, and put everything (well, almost everything) together in a beautiful theory known as the standard model. My advice is to go for the messes — that's where the action is.

My third piece of advice is probably the hardest to take. It is to forgive yourself for wasting time. Students are only asked to solve problems that their professors (unless unusually cruel) know to be solvable. In addition, it doesn't matter if the problems are scientifically important — they have to be solved to pass the course. But in the real world, it's very hard to know which problems are important, and you never know whether at a given moment in history a problem is solvable. At the beginning of the twentieth century, several leading physicists, including Lorentz and Abraham, were trying to work out a theory of the electron. This was partly in order to understand why all attempts to detect effects of Earth's motion through the ether had failed. We now know that they were working on the wrong problem. At that time, no one could have developed a successful theory of the electron, because quantum mechanics had not yet been discovered. It took the genius of Albert Einstein in 1905 to realize that the right problem on which to work was the effect of motion on measurements of space and time. This led him to the special theory of relativity. As you will never be sure which are the right problems to work on, most of the time that you spend in the laboratory or at your desk will be wasted. If you want to be creative, then you will have to get used to spending most of your time not being creative, to being becalmed on the ocean of scientific knowledge.

Finally, learn something about the history of science, or at a minimum the history of your own branch of science. The least important reason for this is that the history may actually be of some use to you in your own scientific work. For instance, now and then scientists are hampered by believing one of the over-simplified models of science that have been proposed by philosophers from Francis Bacon to Thomas Kuhn and Karl Popper. The best antidote to the philosophy of science is a knowledge of the history of science.

More importantly, the history of science can make your work seem more worthwhile to you. As a scientist, you're probably not going to get rich. Your friends and relatives probably won't understand what you're doing. And if you work in a field like elementary particle physics, you won't even have the satisfaction of doing something that is immediately useful. But you can get great satisfaction by recognizing that your work in science is a part of history.

Look back 100 years, to 1903. How important is it now who was Prime Minister of Great Britain in 1903, or President of the United States? What stands out as really important is that at McGill University, Ernest Rutherford and Frederick Soddy were working out the nature of radioactivity. This work (of course!) had practical applications, but much more important were its cultural implications. The understanding of radioactivity allowed physicists to explain how the Sun and Earth's cores could still be hot after millions of years. In this way, it removed the last scientific objection to what many geologists and paleontologists thought was the great age of the Earth and the Sun. After this, Christians and Jews either had to give up belief in the literal truth of the Bible or resign themselves to intellectual irrelevance. This was just one step in a sequence of steps from Galileo through Newton and Darwin to the present that, time after time, has weakened the hold of religious dogmatism. Reading any newspaper nowadays is enough to show you that this work is not yet complete. But it is civilizing work, of which scientists are able to feel proud.

What makes a good PhD student

What makes a good PhD student?Georgia Chenevix-Trench1

Some tips for PhD students.

Doing a PhD should be fun and rewarding, because you can spend all your working time discovering things and pursuing ideas — and getting paid for it, without any administrative responsibilities. Those who stick with a career in science do so because, despite the relatively poor pay, long hours and lack of security, it is all we want to do.

Unfortunately most new PhD students are ill-prepared, and as a consequence very few will fulfil their aspirations to be independent scientists. The main reasons for this are the 'grade creep' inherent at most universities, making it difficult to identify the really talented first-class graduates from the rest, and the pressure on universities to graduate as many PhD students as possible. The consequence is that we enrol far too many of them without telling them clearly what doing a doctorate should entail. We therefore set ourselves, and the students, on a path of frustration and disappointment.

So what should we be telling prospective PhD students?


Choose a supervisor whose work you admire and who is well supported by grants and departmental infrastructure.
Take responsibility for your project.
Work hard — long days all week and part of most weekends. If research is your passion this should be easy, and if it isn't, you are probably in the wrong field. Note who goes home with a full briefcase to work on at the end of the day. This is a cause of success, not a consequence.
Take some weekends off, and decent holidays, so you don't burn out.
Read the literature in your immediate area, both current and past, and around it. You can't possibly make an original contribution to the literature unless you know what is already there.
Plan your days and weeks carefully to dovetail experiments so that you have a minimum amount of downtime.
Keep a good lab book and write it up every day.
Be creative. Think about what you are doing and why, and look for better ways to go. Don't see your PhD as just a road map laid out by your supervisor.
Develop good writing skills: they will make your scientific career immeasurably easier.
To be successful you must be at least four of the following: smart, motivated, creative, hard-working, skilful and lucky. You can't depend on luck, so you had better focus on the others!

Thursday, May 14, 2009

SCI EI 收录

SCI Impact Factor Search:
http://www.heavyoil.cn/if.aspx
SCI indexed journal list:
http://att.newsmth.net/att.php?p.686.107372.376.xls

common journal with SCI indexed:
PATTERN RECOGN 0031-3203 7498 2.019
IEEE T PATTERN ANAL 0162-8828 16492 3.579
PATTERN RECOGN LETT 0167-8655 2748 0.853
PATTERN ANAL APPL 1433-7541 246 0.515
INT J PATTERN RECOGN 0218-0014 533

0.374

Inter. Conf. Science Indexed(SCI)------------------------------------------By R.R.Ji
顶级
1. IJCAI: International Joint Conference on AI (each other year)
2. AAAI: American Association for AI National Conference (Because the IJCAI conference is being held in North America in 2009, no AAAI conference will be held that year.)
3. COLT: Conference on Learning Theory
4. ICNN/IJCNN: Intl (Joint) Conference on Neural Networks
5. CVPR: IEEE Conf on Comp Vision and Pattern Recognition
6. ICCV: International Conference on Computer Vision
7. ECCV: European Conference on Computer Vision
8. DCC: Data Compression Conference
9. ACM-SIGGRAPH
10. ACM-MM: ACM Multimedia Conference
11. ACM SIGCOM: ACM Conf on Communication Architectures, Protocols & Apps
12. ACM SIGMETRICS
13. ACM SIGMOD: ACM SIGMOD Conf on Management of Data
14. ACM SIGIR: ACM Conference on Information Retrieval
15. IEEE INFOCOM: conference on computer communications
16. IEEE ICC: International conference on communications
17. GLOBECOM:IEEE Global communication conference
18. ACM RECOMB: Int. Conference on Research in Computational Molecular Biology
19. ACM SIGKDD: Knowledge Discovery in Database
20. ICML: International Conference on Machine Learning
21. ISMB: International Society for Computational Biology - Intelligent Systems for Molecular Biology
22. ECCB: European Bioinformatics Institute - the European Conference on Computational Biology
一级 模式识别,计算机视觉、图像处理,多媒体技术,人机交互
23. IEEE ICIP: International conference on Image Processing (4 pages)
24. IEEE ICASSP: International Conference on Acoustics, Speech and Signal Processing
25. IEEE ICMI: International Conference on Multimodal Interface
26. IEEE ICME: International Conference on Multimedia and Expo
27. FGR: Face & Gesture Recognition
28. ICPR: International Conference on Pattern Recognition
29. PCM: Pacific-Rim Conference on Multimedia
30. ACCV: Asian Conference on Computer Vision
31. IWDW: digital watermarking
多媒体计算方向
32. IEEE ICIP: International conference on Image Processing
33. VCIP: Visual Communication and Image Processing
34. IEEE ICME: International Conference on Multimedia and Expo
35. PCM: Pacific-Rim Conference on Multimedia
36. IEEE ICASSP: International Conference on Acoustics, Speech and Signal Processing
37. ICPR: International Conference on Pattern Recognition
38. ICIG: International Conference on Image and Graphics
机器学习
39. IEEE ICDM: International Conference on Data Mining
40. NIPS: Neural Information Processing Systems
41. IEEE WI - International Conference on Web Intelligence
42. CIKM International Conference on Information and Knowledge Management
43. IEEE ICDL: International Conference on Digital Library

相关国内一级/核心期刊
[1] 计算机学报(中、英文版)
[2] 计算机科学与技术学报(英文版) Journal of Computer Science and Technology(JCST)
[3] 软件学报
[4] 电子学报
[5] 自动化学报
[6] 通讯学报
[7] 中国图象图形学报
[8] 计算机辅助设计与图形学学报
[9] 计算机研究与发展

A类英文学术刊物

(ref:http://netlab.szpku.edu.cn/paper.htm)


A类英文学术刊物
刊物全称 刊物简称 发行周期 影响因子
ACM Computing Surveys 季 4.13
Journal of the ACM JACM 双月 2.917
Communications of ACM CACM 月 1.509
IEEE Transactions on Computers TC 月 1.426
ACM Transactions on Computer Systems TOCS 季 1.409
IEEE Computer 月 1.289
Journal of Computer and System Sciences JCSS 1.252
Computational Linguistics 季 1.8
Machine Learning 双月 2.654
Bioinformatics 季 4.894
ACM Transactions on Information systems 季 5.059
IEEE Transactions on Parallel and Distributed Systems TPDS 月 1.246
IEEE Transactions on Mobile Computing TMC 季 2.55
IEEE Transactions on Communications 季 1.208
IEEE/ACM Transactions on Networking TON 双月
ACM Transactions on Graphics TOG 季 4.081
IEEE Transactions on Visualization and Computer Graphics TVCG 双月 1.794
Computer-Aided Design CAD 月 1.446
ACM Transactions on Database Systems TODS 季 2.143
VLDB Journal VLDBJ 季 3.289
IEEE Transactions on Knowledge & Data Engineering TKDE 月 2.063
Journal of Data Mining & Knowledge Discovery JKDD 双月 2.295
Data and Knowledge Engineering DKE 月 1.367
ACM Transactions on Software Engineering and Methodology TOSEM 季 1.636
ACM Transactions on Programming Languages and Systems TOPLAS 季 1.102
Journal of Cryptology 2.833
Computational Complexity 1.125
Quantum Information and Computing 2.105
International journal of computer vision IJCV 月 6.085
IEEE Transactions on Audio, Speech and Language Processing 双月 1.006
Artificial Intelligence AI 月刊 2.271
IEEE Transactions on Evolutionary Computation EC 月刊 3.77
IEEE Transactions on Neural Networks NN 月刊 2.62
IEEE Transactions on Robotics 月刊 1.292
IEEE Transactions on Fuzzy Systems TFS 月刊 1.803
IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI 月刊 4.306
Neural Computation NC 月刊 2.229
Journal of Machine Learning Research JMLR 2.255
Pattern Recognition PR 月刊 1.822
IEEE Transactions on Circuits And Systems For Video Technology T-CSVT 月刊 1.743
IEEE Transactions on Image Processing IEEE T-IP 月刊 2.715



A类学术会议
会议全称 简称 SCI EI
Annual Meeting of the ACL (Association of Computational Linguistics) ACL
American Association for AI National Conference AAAI
International Joint Conference on AI IJCAI
Knowledge Discovery and Data Mining SIGKDD
Special Interest Group on Information Retrieval SIGIR
International Symposium on Computer Architecture ISCA 是
International Symposium on Microarchitecture MICRO 是
International Conference on Parallel Arch and Compil Tech PACT 是
Symposium on High-Perf Comp Architecture HPCA 是
Symposium on OS Design and Implementation OSDI 是
Architectural Support for Prog Lang and OS ASPLOS 是
Real Time Systems Symposium RTSS 是
USENIX Annual Technical Conf USENIX 是 否
ACM Symposium on Principles of Distributed Computing PODC 否 是
Int. Conf. on Distributed Computing Systems ICDCS 否 是
Annual International Conference on Mobile Computing and Networking MobiCom 是 是
ACM Conference on Comm Architectures Protocols & Apps SIGCOMM X
Symposium on Parallel Algms and Architecture SPAA X
USENIX Symposium on Networked Systems Design and Implementation NSDI
ACM Siggraph X
EUROGraphics X
ACM-SIGRAPH Interactive 3D Graphics and games I3D
IEEE Visualization X
ACM SIGMOD Conference on Management of Data/Principles of DB Systems AIGMOD/PODS
Very Large Data Bases VLDB
IEEE International Conference on Data Engineering ICDE
Extending DB Technology EDBT X
International Conference on Software Engineering ICSE X
ACM Symposium on the Foundations of Software Engineering FSE X
OO Programming Systems Languages and Applications OOPSLA X X
Programming Language Design and Implementation PLDI
Principles of Programming Languages POPL
International Symposium on Software Testing and Analysis ISSTA
European Conference on Object-Oriented Programming ECOOP X
International Conference on Automated Software Engineering ASE
IEEE Symposium on Security and Privacy S&P X
ACM Conference on Computer and Communications Security CCS
International Cryptology Conference Crypto X
European Cryptology Conference Eurocrypt X
International Conference on the Theory and Application of Cryptology and Information Security Asiacrypt X
IEEE Symposium on Logic in Computer Science LICS Y
Computer Aided Verification CAV Y
Conference on Automated Deduction CADE Y
Logical Foundations of Computer Science LFCS
Formal Methods World Congress FM
Bio-Inspired Computing: Theory and Applications Y
International Meeting on DNA Based Computers Y
International Symposium on Artificial Life and Robotics Y
Genetic Programming
International Workshop on DNA Based Computers
ACM Symposium on the Theory of Computing STOC Y
IEEE Annual Symposium on Foundations of Computer Science FOCS Y
SIAM/ACM Annual Symposium on Discrete Algorithms SODA Y
IEEE Symposium on Computational Complexity CC
International Conference on Computer Vision ICCV 是
IEEE Conference on Computer Vision and Pattern Recognition CVPR 是
European Conference on Computer Vision ECCV 是 是
Annual Conference of the European Association for Computer Graphics EG 是 是
Interspeech(ICSLP-Eurospeech) 是
International Conference on Computational Liguistics COLING 是
The Conference on Empirical Methods in Natural Language Processing EMNLP 是
World Congress on Computational Intelligence (IJCNN Fuzzy IEEE IEEE CEC) WCCI 是 是
Advances in Neural Information Processing Systems NIPS 是 是
International Conference on Artificial Intelligence and Pattern Recognition AIPR 是 是
International Conference on Pattern Recognition ICPR 是
International Conference on Advances in Pattern Recognition ICAPR 是
International Conference on Machine Learning ICML 是 是
International Conference on Autonomous Agents ICAA 是
European Conference on Machine Learning ECML 是
ACM Multimedia Conference ACM-MM 是
IEEE Conference on Comp Vision and Pattern Recognition CVPR 是
International Conference on Computer Vision ICCV 是
European Conference on Computer Vision ECCV 是
Data Compression Conference DCC 是

Conference rank

(from http://www.ntu.edu.sg/home/assourav/crank.htm)

Computer Science Conference Rankings
Some conferences accept multiple categories of papers. The rankings below
are for the most prestigious category of paper at a given conference. All
other categories should be treated as "unranked".

AREA: Databases


Rank 1:


SIGMOD: ACM SIGMOD Conf on Management of Data
PODS: ACM SIGMOD Conf on Principles of DB Systems
VLDB: Very Large Data Bases
ICDE: Intl Conf on Data Engineering
ICDT: Intl Conf on Database Theory


Rank 2:

SSD: Intl Symp on Large Spatial Databases
DEXA: Database and Expert System Applications
FODO: Intl Conf on Foundation on Data Organization
EDBT: Extending DB Technology
DOOD: Deductive and Object-Oriented Databases
DASFAA: Database Systems for Advanced Applications
CIKM: Intl. Conf on Information and Knowledge Management
SSDBM: Intl Conf on Scientific and Statistical DB Mgmt
CoopIS - Conference on Cooperative Information Systems
ER - Intl Conf on Conceptual Modeling (ER)



Rank 3:


COMAD: Intl Conf on Management of Data
BNCOD: British National Conference on Databases
ADC: Australasian Database Conference
ADBIS: Symposium on Advances in DB and Information Systems
DaWaK - Data Warehousing and Knowledge Discovery
RIDE Workshop
IFIP-DS: IFIP-DS Conference
IFIP-DBSEC - IFIP Workshop on Database Security
NGDB: Intl Symp on Next Generation DB Systems and Apps
ADTI: Intl Symp on Advanced DB Technologies and Integration
FEWFDB: Far East Workshop on Future DB Systems
MDM - Int. Conf. on Mobile Data Access/Management (MDA/MDM)
ICDM - IEEE International Conference on Data Mining
VDB - Visual Database Systems
IDEAS - International Database Engineering and Application Symposium

Others:


ARTDB - Active and Real-Time Database Systems
CODAS: Intl Symp on Cooperative DB Systems for Adv Apps
DBPL - Workshop on Database Programming Languages
EFIS/EFDBS - Engineering Federated Information (Database) Systems
KRDB - Knowledge Representation Meets Databases
NDB - National Database Conference (China)
NLDB - Applications of Natural Language to Data Bases
FQAS - Flexible Query-Answering Systems
IDC(W) - International Database Conference (HK CS)
RTDB - Workshop on Real-Time Databases
SBBD: Brazilian Symposium on Databases
WebDB - International Workshop on the Web and Databases
WAIM: Interational Conference on Web Age Information Management
DASWIS - Data Semantics in Web Information Systems
DMDW - Design and Management of Data Warehouses
DOLAP - International Workshop on Data Warehousing and OLAP
DMKD - Workshop on Research Issues in Data Mining and Knowledge Discovery

KDEX - Knowledge and Data Engineering Exchange Workshop
NRDM - Workshop on Network-Related Data Management
MobiDE - Workshop on Data Engineering for Wireless and Mobile Access
MDDS - Mobility in Databases and Distributed Systems
MEWS - Mining for Enhanced Web Search
TAKMA - Theory and Applications of Knowledge MAnagement
WIDM: International Workshop on Web Information and Data Management
W2GIS - International Workshop on Web and Wireless Geographical Information
Systems
CDB - Constraint Databases and Applications
DTVE - Workshop on Database Technology for Virtual Enterprises
IWDOM - International Workshop on Distributed Object Management
OODBS - Workshop on Object-Oriented Database Systems
PDIS: Parallel and Distributed Information Systems


AREA: Artificial Intelligence and Related Subjects


Rank 1:


AAAI: American Association for AI National Conference
CVPR: IEEE Conf on Comp Vision and Pattern Recognition
IJCAI: Intl Joint Conf on AI
ICCV: Intl Conf on Computer Vision
ICML: Intl Conf on Machine Learning
KDD: Knowledge Discovery and Data Mining
KR: Intl Conf on Principles of KR & Reasoning
NIPS: Neural Information Processing Systems
UAI: Conference on Uncertainty in AI
AAMAS: Intl Conf on Autonomous Agents and Multi-Agent Systems (past: ICAA
)
ACL: Annual Meeting of the ACL (Association of Computational Linguistics)


Rank 2:


NAACL: North American Chapter of the ACL
AID: Intl Conf on AI in Design
AI-ED: World Conference on AI in Education
CAIP: Inttl Conf on Comp. Analysis of Images and Patterns
CSSAC: Cognitive Science Society Annual Conference
ECCV: European Conference on Computer Vision
EAI: European Conf on AI
EML: European Conf on Machine Learning
GECCO: Genetic and Evolutionary Computation Conference (used to be GP)
IAAI: Innovative Applications in AI
ICIP: Intl Conf on Image Processing
ICNN/IJCNN: Intl (Joint) Conference on Neural Networks
ICPR: Intl Conf on Pattern Recognition
ICDAR: International Conference on Document Analysis and Recognition
ICTAI: IEEE conference on Tools with AI
AMAI: Artificial Intelligence and Maths
DAS: International Workshop on Document Analysis Systems
WACV: IEEE Workshop on Apps of Computer Vision
COLING: International Conference on Computational Liguistics
EMNLP: Empirical Methods in Natural Language Processing
EACL: Annual Meeting of European Association Computational Lingustics
CoNLL: Conference on Natural Language Learning
DocEng: ACM Symposium on Document Engineering
IEEE/WIC International Joint Conf on Web Intelligence and Intelligent Agent
Technology



Rank 3:


PRICAI: Pacific Rim Intl Conf on AI
AAI: Australian National Conf on AI
ACCV: Asian Conference on Computer Vision
AI*IA: Congress of the Italian Assoc for AI
ANNIE: Artificial Neural Networks in Engineering
ANZIIS: Australian/NZ Conf on Intelligent Inf. Systems
CAIA: Conf on AI for Applications
CAAI: Canadian Artificial Intelligence Conference
ASADM: Chicago ASA Data Mining Conf: A Hard Look at DM
EPIA: Portuguese Conference on Artificial Intelligence
FCKAML: French Conf on Know. Acquisition & Machine Learning
ICANN: International Conf on Artificial Neural Networks
ICCB: International Conference on Case-Based Reasoning
ICGA: International Conference on Genetic Algorithms
ICONIP: Intl Conf on Neural Information Processing
IEA/AIE: Intl Conf on Ind. & Eng. Apps of AI & Expert Sys
ICMS: International Conference on Multiagent Systems
ICPS: International conference on Planning Systems
IWANN: Intl Work-Conf on Art & Natural Neural Networks
PACES: Pacific Asian Conference on Expert Systems
SCAI: Scandinavian Conference on Artifical Intelligence
SPICIS: Singapore Intl Conf on Intelligent System
PAKDD: Pacific-Asia Conf on Know. Discovery & Data Mining
SMC: IEEE Intl Conf on Systems, Man and Cybernetics
PAKDDM: Practical App of Knowledge Discovery & Data Mining
WCNN: The World Congress on Neural Networks
WCES: World Congress on Expert Systems
ASC: Intl Conf on AI and Soft Computing
PACLIC: Pacific Asia Conference on Language, Information and Computation
ICCC: International Conference on Chinese Computing
ICADL: International Conference on Asian Digital Libraries
RANLP: Recent Advances in Natural Language Processing
NLPRS: Natural Language Pacific Rim Symposium
Meta-Heuristics International Conference


Rank 3:

ICRA: IEEE Intl Conf on Robotics and Automation
NNSP: Neural Networks for Signal Processing
ICASSP: IEEE Intl Conf on Acoustics, Speech and SP
GCCCE: Global Chinese Conference on Computers in Education
ICAI: Intl Conf on Artificial Intelligence
AEN: IASTED Intl Conf on AI, Exp Sys & Neural Networks
WMSCI: World Multiconfs on Sys, Cybernetics & Informatics
LREC: Language Resources and Evaluation Conference
AIMSA: Artificial Intelligence: Methodology, Systems, Applications
AISC: Artificial Intelligence and Symbolic Computation
CIA: Cooperative Information Agents
International Conference on Computational Intelligence for Modelling, Control
and Automation
Pattern Matching
ECAL: European Conference on Artificial Life
EKAW: Knowledge Acquisition, Modeling and Management
EMMCVPR: Energy Minimization Methods in Computer Vision and Pattern Recognition

EuroGP: European Conference on Genetic Programming
FoIKS: Foundations of Information and Knowledge Systems
IAWTIC: International Conference on Intelligent Agents, Web Technologies
and Internet Commerce
ICAIL: International Conference on Artificial Intelligence and Law
SMIS: International Syposium on Methodologies for Intelligent Systems
IS&N: Intelligence and Services in Networks
JELIA: Logics in Artificial Intelligence
KI: German Conference on Artificial Intelligence
KRDB: Knowledge Representation Meets Databases
MAAMAW: Modelling Autonomous Agents in a Multi-Agent World
NC: ICSC Symposium on Neural Computation
PKDD: Principles of Data Mining and Knowledge Discovery
SBIA: Brazilian Symposium on Artificial Intelligence
Scale-Space: Scale-Space Theories in Computer Vision
XPS: Knowledge-Based Systems
I2CS: Innovative Internet Computing Systems
TARK: Theoretical Aspects of Rationality and Knowledge Meeting
MKM: International Workshop on Mathematical Knowledge Management
ACIVS: International Conference on Advanced Concepts For Intelligent Vision
Systems
ATAL: Agent Theories, Architectures, and Languages
LACL: International Conference on Logical Aspects of Computational Linguistics




AREA: Hardware and Architecture

Rank 1:


ASPLOS: Architectural Support for Prog Lang and OS
ISCA: ACM/IEEE Symp on Computer Architecture
ICCAD: Intl Conf on Computer-Aided Design
DAC: Design Automation Conf
MICRO: Intl Symp on Microarchitecture
HPCA: IEEE Symp on High-Perf Comp Architecture


Rank 2:

FCCM: IEEE Symposium on Field Programmable Custom Computing Machines
SUPER: ACM/IEEE Supercomputing Conference
ICS: Intl Conf on Supercomputing
ISSCC: IEEE Intl Solid-State Circuits Conf
HCS: Hot Chips Symp
VLSI: IEEE Symp VLSI Circuits
CODES+ISSS: Intl Conf on Hardware/Software Codesign & System Synthesis
DATE: IEEE/ACM Design, Automation & Test in Europe Conference
FPL: Field-Programmable Logic and Applications
CASES: International Conference on Compilers, Architecture, and Synthesis
for Embedded Systems


Rank 3:


ICA3PP: Algs and Archs for Parall Proc
EuroMICRO: New Frontiers of Information Technology
ACS: Australian Supercomputing Conf
ISC: Information Security Conference


Unranked:

Advanced Research in VLSI
International Symposium on System Synthesis
International Symposium on Computer Design
International Symposium on Circuits and Systems
Asia Pacific Design Automation Conference
International Symposium on Physical Design
International Conference on VLSI Design
CANPC: Communication, Architecture, and Applications for Network-Based Parallel
Computing
CHARME: Conference on Correct Hardware Design and Verification Methods
CHES: Cryptographic Hardware and Embedded Systems
NDSS: Network and Distributed System Security Symposium
NOSA: Nordic Symposium on Software Architecture
ACAC: Australasian Computer Architecture Conference
CSCC: WSES/IEEE world multiconference on Circuits, Systems, Communications
& Computers
ICN: IEEE International Conference on Networking Topology in Computer Science
Conference



AREA: Applications and Media


Rank 1:


I3DG: ACM-SIGRAPH Interactive 3D Graphics
SIGGRAPH: ACM SIGGRAPH Conference
ACM-MM: ACM Multimedia Conference
DCC: Data Compression Conf
SIGMETRICS: ACM Conf on Meas. & Modelling of Comp Sys
SIGIR: ACM SIGIR Conf on Information Retrieval
PECCS: IFIP Intl Conf on Perf Eval of Comp \& Comm Sys
WWW: World-Wide Web Conference


Rank 2:


IEEE Visualization
EUROGRAPH: European Graphics Conference
CGI: Computer Graphics International
CANIM: Computer Animation
PG: Pacific Graphics
ICME: Intl Conf on MMedia & Expo
NOSSDAV: Network and OS Support for Digital A/V
PADS: ACM/IEEE/SCS Workshop on Parallel \& Dist Simulation
WSC: Winter Simulation Conference
ASS: IEEE Annual Simulation Symposium
MASCOTS: Symp Model Analysis \& Sim of Comp \& Telecom Sys
PT: Perf Tools - Intl Conf on Model Tech \& Tools for CPE
NetStore: Network Storage Symposium
MMCN: ACM/SPIE Multimedia Computing and Networking
JCDL: Joint Conference on Digital Libraries


Rank 3:


ACM-HPC: ACM Hypertext Conf
MMM: Multimedia Modelling
DSS: Distributed Simulation Symposium
SCSC: Summer Computer Simulation Conference
WCSS: World Congress on Systems Simulation
ESS: European Simulation Symposium
ESM: European Simulation Multiconference
HPCN: High-Performance Computing and Networking
Geometry Modeling and Processing
WISE
DS-RT: Distributed Simulation and Real-time Applications
IEEE Intl Wshop on Dist Int Simul and Real-Time Applications
ECIR: European Colloquium on Information Retrieval
Ed-Media
IMSA: Intl Conf on Internet and MMedia Sys

Un-ranked:


DVAT: IS\&T/SPIE Conf on Dig Video Compression Alg \& Tech
MME: IEEE Intl Conf. on Multimedia in Education
ICMSO: Intl Conf on Modelling, Simulation and Optimisation
ICMS: IASTED Intl Conf on Modelling and Simulation
COTIM: Conference on Telecommunications and Information Markets
DOA: International Symposium on Distributed Objects and Applications
ECMAST: European Conference on Multimedia Applications, Services and Techniques

GIS: Workshop on Advances in Geographic Information Systems
IDA: Intelligent Data Analysis
IDMS: Interactive Distributed Multimedia Systems and Telecommunication Services

IUI: Intelligent User Interfaces
MIS: Workshop on Multimedia Information Systems
WECWIS: Workshop on Advanced Issues of E-Commerce and Web/based Information
Systems
WIDM: Web Information and Data Management
WOWMOM: Workshop on Wireless Mobile Multimedia
WSCG: International Conference in Central Europe on Computer Graphics and
Visualization
LDTA: Workshop on Language Descriptions, Tools and Applications
IPDPSWPIM: International Workshop on Parallel and Distributed Computing Issues
in Wireless Networks and Mobile Computing
IWST: International Workshop on Scheduling and Telecommunications
APDCM: Workshop on Advances in Parallel and Distributed Computational Models

CIMA: International ICSC Congress on Computational Intelligence: Methods
and Applications
FLA: Fuzzy Logic and Applications Meeting
ICACSD: International Conference on Application of Concurrency to System
Design
ICATPN: International conference on application and theory of Petri nets
AICCSA: ACS International Conference on Computer Systems and Applications

CAGD: International Symposium of Computer Aided Geometric Design
Spanish Symposium on Pattern Recognition and Image Analysis
International Workshop on Cluster Infrastructure for Web Server and E-Commerce
Applications
WSES ISA: Information Science And Applications Conference
CHT: International Symposium on Advances in Computational Heat Transfer
IMACS: International Conference on Applications of Computer Algebra
VIPromCom: International Symposium on Video Processing and Multimedia Communications

PDMPR: International Workshop on Parallel and Distributed Multimedia Processing
& Retrieval
International Symposium On Computational And Applied Pdes
PDCAT: International Conference on Parallel and Distributed Computing, Applications
, and Techniques
Biennial Computational Techniques and Applications Conference
Symposium on Advanced Computing in Financial Markets
WCCE: World Conference on Computers in Education
ITCOM: SPIE's International Symposium on The Convergence of Information Technologies
and Communications
Conference on Commercial Applications for High-Performance Computing
MSA: Metacomputing Systems and Applications Workshop
WPMC : International Symposium on Wireless Personal Multimedia Communications

WSC: Online World Conference on Soft Computing in Industrial Applications

HERCMA: Hellenic European Research on Computer Mathematics and its Applications

PARA: Workshop on Applied Parallel Computing
International Computer Science Conference: Active Media Technology
IW-MMDBMS - Int. Workshop on Multi-Media Data Base Management Systems

AREA: System Technology


Rank 1:


SIGCOMM: ACM Conf on Comm Architectures, Protocols & Apps
INFOCOM: Annual Joint Conf IEEE Comp & Comm Soc
SPAA: Symp on Parallel Algms and Architecture
PODC: ACM Symp on Principles of Distributed Computing
PPoPP: Principles and Practice of Parallel Programming
RTSS: Real Time Systems Symp
SOSP: ACM SIGOPS Symp on OS Principles
SOSDI: Usenix Symp on OS Design and Implementation
CCS: ACM Conf on Comp and Communications Security
IEEE Symposium on Security and Privacy
MOBICOM: ACM Intl Conf on Mobile Computing and Networking
USENIX Conf on Internet Tech and Sys
ICNP: Intl Conf on Network Protocols
PACT: Intl Conf on Parallel Arch and Compil Tech
RTAS: IEEE Real-Time and Embedded Technology and Applications Symposium
ICDCS: IEEE Intl Conf on Distributed Comp Systems


Rank 2:


CC: Compiler Construction
IPDPS: Intl Parallel and Dist Processing Symp
IC3N: Intl Conf on Comp Comm and Networks
ICPP: Intl Conf on Parallel Processing
SRDS: Symp on Reliable Distributed Systems
MPPOI: Massively Par Proc Using Opt Interconns
ASAP: Intl Conf on Apps for Specific Array Processors
Euro-Par: European Conf. on Parallel Computing
Fast Software Encryption
Usenix Security Symposium
European Symposium on Research in Computer Security
WCW: Web Caching Workshop
LCN: IEEE Annual Conference on Local Computer Networks
IPCCC: IEEE Intl Phoenix Conf on Comp & Communications
CCC: Cluster Computing Conference
ICC: Intl Conf on Comm
WCNC: IEEE Wireless Communications and Networking Conference
CSFW: IEEE Computer Security Foundations Workshop


Rank 3:


MPCS: Intl. Conf. on Massively Parallel Computing Systems
GLOBECOM: Global Comm
ICCC: Intl Conf on Comp Communication
NOMS: IEEE Network Operations and Management Symp
CONPAR: Intl Conf on Vector and Parallel Processing
VAPP: Vector and Parallel Processing
ICPADS: Intl Conf. on Parallel and Distributed Systems
Public Key Cryptosystems
Annual Workshop on Selected Areas in Cryptography
Australasia Conference on Information Security and Privacy
Int. Conf on Inofrm and Comm. Security
Financial Cryptography
Workshop on Information Hiding
Smart Card Research and Advanced Application Conference
ICON: Intl Conf on Networks
NCC: Nat Conf Comm
IN: IEEE Intell Network Workshop
Softcomm: Conf on Software in Tcomms and Comp Networks
INET: Internet Society Conf
Workshop on Security and Privacy in E-commerce


Un-ranked:


PARCO: Parallel Computing
SE: Intl Conf on Systems Engineering (**)
PDSECA: workshop on Parallel and Distributed Scientific and Engineering Computing
with Applications
CACS: Computer Audit, Control and Security Conference
SREIS: Symposium on Requirements Engineering for Information Security
SAFECOMP: International Conference on Computer Safety, Reliability and Security

IREJVM: Workshop on Intermediate Representation Engineering for the Java
Virtual Machine
EC: ACM Conference on Electronic Commerce
EWSPT: European Workshop on Software Process Technology
HotOS: Workshop on Hot Topics in Operating Systems
HPTS: High Performance Transaction Systems
Hybrid Systems
ICEIS: International Conference on Enterprise Information Systems
IOPADS: I/O in Parallel and Distributed Systems
IRREGULAR: Workshop on Parallel Algorithms for Irregularly Structured Problems

KiVS: Kommunikation in Verteilten Systemen
LCR: Languages, Compilers, and Run-Time Systems for Scalable Computers
MCS: Multiple Classifier Systems
MSS: Symposium on Mass Storage Systems
NGITS: Next Generation Information Technologies and Systems
OOIS: Object Oriented Information Systems
SCM: System Configuration Management
Security Protocols Workshop
SIGOPS European Workshop
SPDP: Symposium on Parallel and Distributed Processing
TreDS: Trends in Distributed Systems
USENIX Technical Conference
VISUAL: Visual Information and Information Systems
FoDS: Foundations of Distributed Systems: Design and Verification of Protocols
conference
RV: Post-CAV Workshop on Runtime Verification
ICAIS: International ICSC-NAISO Congress on Autonomous Intelligent Systems

ITiCSE: Conference on Integrating Technology into Computer Science Education

CSCS: CyberSystems and Computer Science Conference
AUIC: Australasian User Interface Conference
ITI: Meeting of Researchers in Computer Science, Information Systems Research
& Statistics
European Conference on Parallel Processing
RODLICS: Wses International Conference on Robotics, Distance Learning & Intelligent
Communication Systems
International Conference On Multimedia, Internet & Video Technologies
PaCT: Parallel Computing Technologies workshop
PPAM: International Conference on Parallel Processing and Applied Mathematics

International Conference On Information Networks, Systems And Technologies

AmiRE: Conference on Autonomous Minirobots for Research and Edutainment
DSN: The International Conference on Dependable Systems and Networks
IHW: Information Hiding Workshop
GTVMT: International Workshop on Graph Transformation and Visual Modeling
Techniques


AREA: Programming Languages and Software Engineering


Rank 1:


POPL: ACM-SIGACT Symp on Principles of Prog Langs
PLDI: ACM-SIGPLAN Symp on Prog Lang Design & Impl
OOPSLA: OO Prog Systems, Langs and Applications
ICFP: Intl Conf on Function Programming
JICSLP/ICLP/ILPS: (Joint) Intl Conf/Symp on Logic Prog
ICSE: Intl Conf on Software Engineering
FSE: ACM Conf on the Foundations of Software Engineering (inc: ESEC-FSE)
FM/FME: Formal Methods, World Congress/Europe
CAV: Computer Aided Verification


Rank 2:


CP: Intl Conf on Principles & Practice of Constraint Prog
TACAS: Tools and Algos for the Const and An of Systems
ESOP: European Conf on Programming
ICCL: IEEE Intl Conf on Computer Languages
PEPM: Symp on Partial Evalutation and Prog Manipulation
SAS: Static Analysis Symposium
RTA: Rewriting Techniques and Applications
IWSSD: Intl Workshop on S/W Spec & Design
CAiSE: Intl Conf on Advanced Info System Engineering
SSR: ACM SIGSOFT Working Conf on Software Reusability
SEKE: Intl Conf on S/E and Knowledge Engineering
ICSR: IEEE Intl Conf on Software Reuse
ASE: Automated Software Engineering Conference
PADL: Practical Aspects of Declarative Languages
ISRE: Requirements Engineering
ICECCS: IEEE Intl Conf on Eng. of Complex Computer Systems
IEEE Intl Conf on Formal Engineering Methods
Intl Conf on Integrated Formal Methods
FOSSACS: Foundations of Software Science and Comp Struct
APLAS: Asian Symposium on Programming Languages and Systems
MPC: Mathematics of Program Construction
ECOOP: European Conference on Object-Oriented Programming
ICSM: Intl. Conf on Software Maintenance
HASKELL - Haskell Workshop


Rank 3:


FASE: Fund Appr to Soft Eng
APSEC: Asia-Pacific S/E Conf
PAP/PACT: Practical Aspects of PROLOG/Constraint Tech
ALP: Intl Conf on Algebraic and Logic Programming
PLILP: Prog, Lang Implentation & Logic Programming
LOPSTR: Intl Workshop on Logic Prog Synthesis & Transf
ICCC: Intl Conf on Compiler Construction
COMPSAC: Intl. Computer S/W and Applications Conf
TAPSOFT: Intl Joint Conf on Theory & Pract of S/W Dev
WCRE: SIGSOFT Working Conf on Reverse Engineering
AQSDT: Symp on Assessment of Quality S/W Dev Tools
IFIP Intl Conf on Open Distributed Processing
Intl Conf of Z Users
IFIP Joint Int'l Conference on Formal Description Techniques and Protocol
Specification, Testing, And Verification
PSI (Ershov conference)
UML: International Conference on the Unified Modeling Language



Un-ranked:


Australian Software Engineering Conference
IEEE Int. W'shop on Object-oriented Real-time Dependable Sys. (WORDS)
IEEE International Symposium on High Assurance Systems Engineering
The Northern Formal Methods Workshops
Formal Methods Pacific
Int. Workshop on Formal Methods for Industrial Critical Systems
JFPLC - International French Speaking Conference on Logic and Constraint
Programming
L&L - Workshop on Logic and Learning
SFP - Scottish Functional Programming Workshop
LCCS - International Workshop on Logic and Complexity in Computer Science

VLFM - Visual Languages and Formal Methods
NASA LaRC Formal Methods Workshop
PASTE: Workshop on Program Analysis For Software Tools and Engineering
TLCA: Typed Lambda Calculus and Applications
FATES - A Satellite workshop on Formal Approaches to Testing of Software
Workshop On Java For High-Performance Computing
DSLSE - Domain-Specific Languages for Software Engineering
FTJP - Workshop on Formal Techniques for Java Programs
WFLP - International Workshop on Functional and (Constraint) Logic Programming

FOOL - International Workshop on Foundations of Object-Oriented Languages

SREIS - Symposium on Requirements Engineering for Information Security
HLPP - International workshop on High-level parallel programming and applications

INAP - International Conference on Applications of Prolog
MPOOL - Workshop on Multiparadigm Programming with OO Languages
PADO - Symposium on Programs as Data Objects
TOOLS: Int'l Conf Technology of Object-Oriented Languages and Systems
Australasian Conference on Parallel And Real-Time Systems
PASTE: Workshop on Program Analysis For Software Tools and Engineering
AvoCS: Workshop on Automated Verification of Critical Systems
SPIN: Workshop on Model Checking of Software
FemSys: Workshop on Formal Design of Safety Critical Embedded Systems
Ada-Europe
PPDP: Principles and Practice of Declarative Programming
APL Conference
ASM: Workshops on Abstract State Machines
COORDINATION: Coordination Models and Languages
DocEng: ACM Symposium on Document Engineering
DSV-IS: Design, Specification, and Verification of Interactive Systems
FMCAD: Formal Methods in Computer-Aided Design
FMLDO: Workshop on Foundations of Models and Languages for Data and Objects

IFL: Implementation of Functional Languages
ILP: International Workshop on Inductive Logic Programming
ISSTA: International Symposium on Software Testing and Analysis
ITC: International Test Conference
IWFM: Irish Workshop in Formal Methods
Java Grande
LP: Logic Programming: Japanese Conference
LPAR: Logic Programming and Automated Reasoning
LPE: Workshop on Logic Programming Environments
LPNMR: Logic Programming and Non-monotonic Reasoning
PJW: Workshop on Persistence and Java
RCLP: Russian Conference on Logic Programming
STEP: Software Technology and Engineering Practice
TestCom: IFIP International Conference on Testing of Communicating Systems

VL: Visual Languages
FMPPTA: Workshop on Formal Methods for Parallel Programming Theory and Applications

WRS: International Workshop on Reduction Strategies in Rewriting and Programming

FATES: A Satellite workshop on Formal Approaches to Testing of Software
FORMALWARE: Meeting on Formalware Engineering: Formal Methods for Engineering
Software
DRE: conference Data Reverse Engineering
STAREAST: Software Testing Analysis & Review Conference
Conference on Applied Mathematics and Scientific Computing
International Testing Computer Software Conference
Linux Showcase & Conference
FLOPS: International Symposum on Functional and Logic Programming
GCSE: International Conference on Generative and Component-Based Software
Engineering
JOSES: Java Optimization Strategies for Embedded Systems
AADEBUG: Automated and Algorithmic Debugging
AMAST: Algebraic Methodology and Software Technology


AREA: Algorithms and Theory


Rank 1:


STOC: ACM Symp on Theory of Computing
FOCS: IEEE Symp on Foundations of Computer Science
COLT: Computational Learning Theory
LICS: IEEE Symp on Logic in Computer Science
SCG: ACM Symp on Computational Geometry
SODA: ACM/SIAM Symp on Discrete Algorithms
SPAA: ACM Symp on Parallel Algorithms and Architectures
ISSAC: Intl. Symp on Symbolic and Algebraic Computation
CRYPTO: Advances in Cryptology


Rank 2:


EUROCRYPT: European Conf on Cryptography
CONCUR: International Conference on Concurrency Theory
ICALP: Intl Colloquium on Automata, Languages and Prog
STACS: Symp on Theoretical Aspects of Computer Science
CC: IEEE Symp on Computational Complexity
WADS: Workshop on Algorithms and Data Structures
MFCS: Mathematical Foundations of Computer Science
SWAT: Scandinavian Workshop on Algorithm Theory
ESA: European Symp on Algorithms
IPCO: MPS Conf on integer programming & comb optimization
LFCS: Logical Foundations of Computer Science
ALT: Algorithmic Learning Theory
EUROCOLT: European Conf on Learning Theory
DSIC: Int'l Symp om Distributed Computing (formally WDAG: Workshop on Distributed
Algorithms)
ISTCS: Israel Symp on Theory of Computing and Systems
ISAAC: Intl Symp on Algorithms and Computation
FST&TCS: Foundations of S/W Tech & Theoretical CS
LATIN: Intl Symp on Latin American Theoretical Informatics
CADE: Conf on Automated Deduction
IEEEIT: IEEE Symposium on Information Theory
Asiacrypt


Rank 3:


MEGA: Methods Effectives en Geometrie Algebrique
ASIAN: Asian Computing Science Conf
CCCG: Canadian Conf on Computational Geometry
FCT: Fundamentals of Computation Theory
WG: Workshop on Graph Theory
CIAC: Italian Conf on Algorithms and Complexity
ICCI: Advances in Computing and Information
AWTI: Argentine Workshop on Theoretical Informatics
CATS: The Australian Theory Symp
COCOON: Annual Intl Computing and Combinatorics Conf
UMC: Unconventional Models of Computation
MCU: Universal Machines and Computations
GD: Graph Drawing
SIROCCO: Structural Info & Communication Complexity
ALEX: Algorithms and Experiments
ALG: ENGG Workshop on Algorithm Engineering
LPMA: Intl Workshop on Logic Programming and Multi-Agents
EWLR: European Workshop on Learning Robots
CITB: Complexity & info-theoretic approaches to biology
FTP: Intl Workshop on First-Order Theorem Proving (FTP)
CSL: Annual Conf on Computer Science Logic (CSL)
AAAAECC: Conf On Applied Algebra, Algebraic Algms & ECC
DMTCS: Intl Conf on Disc Math and TCS
JCDCG: Japan Conference on Discrete and Computational Geometry


Un-ranked:


Information Theory Workshop
CL: International Conference on Computational Logic
COSIT: Spatial Information Theory
ETAPS: European joint conference on Theory And Practice of Software
ICCS: International Conference on Conceptual Structures
ICISC: Information Security and Cryptology
PPSN: Parallel Problem Solving from Nature
SOFSEM: Conference on Current Trends in Theory and Practice of Informatics

TPHOLs: Theorem Proving in Higher Order Logics
WADT: Workshop on Algebraic Development Techniques
TERM: THEMATIC TERM: Semigroups, Algorithms, Automata and Languages
IMGTA: Italian Meeting on Game Theory and Applications
DLT: Developments in Language Theory
International Workshop on Discrete Algorithms and Methods for Mobile Computing
and Communications
APPROX: Internationl Workshop on Approximation Algorithms for Combinatorial
Optimization Problems
WAE: Workshop on Algorithm Engineering
CMFT: Computational Methods and Function Theory
AWOCA: Australasian Workshop on Combinatorial Algorithms
Fun with Algorithms Meeting
ICTCS: Italian Conference on Theoretical Computer Science
ComMaC: International Conference On Computational Mathematics
TLCA: Typed Lambda Calculus and Applications
DCAGRS: Workshop on Descriptional Complexity of Automata, Grammars and Related
Structures


AREA: Biomedical


Rank 1:


RECOMB: Annual Intl Conf on Comp Molecular Biology

Rank 2:

AMIA: American Medical Informatics Annual Fall Symposium
DNA: Meeting on DNA Based Computers
WABI: Workshop on Algorithms in Bioinformatics


Rank 3:

MEDINFO: World Congress on Medical Informatics
International Conference on Sequences and their Applications
ECAIM: European Conf on AI in Medicine
APAMI: Asia Pacific Assoc for Medical Informatics Conf
INBS: IEEE Intl Symp on Intell. in Neural & Bio Systems


Un-ranked:


MCBC: Wses conf on Mathematics And Computers In Biology And Chemistry
KDDMBD - Knowledge Discovery and Data Mining in Biological Databases Meeting



AREA: Miscellaneous


Rank 1:


Rank 2:

CSCW: Conference on Computer Supported Cooperative Work (*)


Rank 3:


SAC: ACM/SIGAPP Symposium on Applied Computing
ICSC: Internal Computer Science Conference
ISCIS: Intl Symp on Computer and Information Sciences
ICSC2: International Computer Symposium Conference
ICCE: Intl Conf on Comps in Edu
WCC: World Computing Congress
PATAT: Practice and Theory of Automated Timetabling



Unranked:


ICCI: International Conference on Cognitive Informatics
APISIT: Asia Pacific International Symposium on Information Technology
CW: The International Conference on Cyberworlds
Workshop on Open Hypermedia Systems
Workshop on Middleware for Mobile Computing
International Working Conference on Distributed Applications and Interoperable
Systems
ADL: Advances in Digital Libraries
ADT: Specification of Abstract Data Type Workshops
AVI: Working Conference on Advanced Visual Interfaces
DL: Digital Libraries
DLog: Description Logics
ECDL: European Conference on Digital Libraries
EDCC: European Dependable Computing Conference
FroCos: Frontiers of Combining Systems
FTCS: Symposium on Fault-Tolerant Computing
IFIP World Computer Congress
INTEROP: Interoperating Geographic Information Systems
IO: Information Outlook
IQ: MIT Conference on Information Quality
IUC: International Unicode Conference
IWMM: International Workshop on Memory Management
MD: IEEE Meta-Data Conference
Middleware
MLDM: Machine Learning and Data Mining in Pattern Recognition
POS: Workshop on Persistent Object Systems
SCCC: International Conference of the Chilean Computer Science Society
SPIRE: String Processing and Information Retrieval
TABLEAUX: Analytic Tableaux and Related Methods
TIME Workshops
TREC: Text REtrieval Conference
UIDIS: User Interfaces to Data Intensive Systems
VRML Conference
AFIPS: American Federation of Information Processing Societies
ACSC: Australasian Computer Science Conference
CMCS: Coalgebraic Methods in Computer Science
BCTCS: British Colloquium for Theoretical Computer Science
IJCAR: The International Joint Conference on Automated Reasoning
STRATEGIES: International Workshop on Strategies in Automated Deduction
UNIF: International Workshop on Unification
SOCO: Meeting on Soft Computing
ConCoord: International Workshop on Concurrency and Coordination
CIAA: International Conference on Implementation and Application of Automata

Workshop on Information Stucture, Discourse Structure and Discourse Semantics

RANDOM: International Workshop on Randomization and Approximation Techniques
in Computer Science
WMC: Workshop on Membrane Computing
FI-CS: Fixed Points in Computer Science
DC Computer Science Conference
Workshop on Novel Approaches to Hard Discrete Optimization
NALAC: Numerical Analysis, Linear Algebra And Computations Conference
ICLSSC: International Conference on Large-Scale Scientific Computations
ISACA : Information Systems Audit and Control Association International
Conference

ICOSAHOM: International Conference On Spectral And High Order Methods
AIP: International Conference on Applied Inverse Problems: Theoretical and
Computational Aspects
ECCM: European Conference On Computational Mechanics
Scicade: Scientific Computing and Differential Equation
BMVC: British Machine Vision Conference
COMEP: Euroconference On Computational Mechanics And Engineering Practis
JCIS: Joint Conference on Information Sciences
CHP: Compilers for High Performance conference
SIAM Conference on Geometric Design and Computing



Not Encouraged (due to dubious referee process):

International Multiconferences in Computer Science -- 14 joint int'l confs
.
SCI: World Multi confs on systemics, sybernetics and informatics
SSGRR: International conf on Advances in Infrastructure for e-B, e-Edu and
e-Science and e-Medicine
SSCCII: Symposium of Santa Caterina on Challenges in Internet and
Interdisciplinary research
IASTED conferences
CCCT: International Conference on Computer, Communication and Control Technologies

VIP Workshops on Advanced Web Engineering for E-Business
IPSI conference

Friday, April 17, 2009

Help?.No!

Don't hope other guys will help you to solve your shit problem. You always need do it by yourself.
Don't hope some intelligent man who has a bigger brain will teach you or guide you. The intelligent man never consider to help some people who are not intelligent. If you are intelligent man , why you need other intelligent guys to help you.
In one word, you need build your own house on your hand. If it's beautiful or not depend on how you design it. If it's built fast enough before the rain come depend on how diligent you are.

Thursday, April 16, 2009

Structure from motion

1, After you get essential matrix , you can use SVD to recover rotation and translation matrix. But the translation vector is normalized vector or say unit vector or say up to a scale. The rotation matrix is correct.
2, You can never get this scale factor from images without additional information. If you are using stereo vision, you know the baseline, so you can recover the scale factor by this baseline, then you can get Euclidean coordinate. OTHERWISE you can use some known landmark whose world coordinate is already known.
3, So, what's the structure or motion? Now you should get Euclidean transformation is not only transformation. It's a children of metric transformation which is children of affine transformation. All above transformation are children of projective transformation. From multi-view image, you just can recover to metric transformation with some constraint about the camera model.
4, The different between metric and euclidean is a scale factor. That means metric transformation can change object's size or line's length and rotation , translation. But euclidean is just contain rotation and translation.



It's really difficulty to understand these geometry stuff. But if I feel difficult, so do other guys. Who win depend on who can continue and insist on.

Friday, April 3, 2009

Opencv with Octave

The new opencv SVN version can support octave, BUT not download version.
If you download the source and try to install it which can support octave, you will find it can not find octave.
You need install most new version of octave and swig. For ubuntu , apt-get can find a old version of swig, but that can not support this function.
After install swig and octave.
Using
$./configure --with-swig --with-octave

It will show you it can find octave and swig.
Then do :
$make

Now you will get error like:
"can not find octcvseq.hpp" or "INDEX",etc ..


Now you need find these files from SVN opencv version.
Copy these files to /opencv/interface/swig/octave/
Dont copy all files, just copy what it need, otherwise you will get more errors.

Wednesday, April 1, 2009

Open Source SLAM Software

Author Description Link
Kai Arras
The CAS Robot Navigation Toolbox, a Matlab simulation toolbox for robot localization and mapping.
www.cas.kth.se/toolbox/index.html

Tim Bailey Matlab simulators for EKF-SLAM, UKF-SLAM,and FastSLAM 1.0 and 2.0.
www.acfr.usyd.edu.au/homepages/academic/tbailey/software/index.html

Mark Paskin Java library with several SLAM variants, including Kalman filter, information filter, and thin junction tree forms. Includes a Matlab interface.
www.stanford.edu/~paskin/slam/

Andrew Davison Scene, a C++ library for map-building and localisation. Facilitates real-time single camera SLAM.
www.doc.ic.ac.uk/~ajd/Scene/index.html

Jos ́ Neira
e Matlab EKF-SLAM simulator that demonstrates joint compatibility branch-and-bound data association.
http://webdiis.unizar.es/~neira/software/slam/slamsim.htm


Dirk H ̈hnel
a C language grid-based version of FastSLAM.
www.informatik.uni-freiburg.de/~haehnel/old/download.html

Various Matlab code from the 2002 SLAM summer school.
www.cas.kth.se/slam/toc.html

Table 2: Online Datasets
Author Description Link
Jose Guivant, Juan Nieto Numerous large-scale outdoor datasets, notably and Eduardo Nebot the popular Victoria Park data.
www.acfr.usyd.edu.au/homepages/academic/enebot/dataset.htm


Chieh-Chih Wang Three large-scale outdoor datasets collected by the Navlab11 testbed.
www.cs.cmu.edu/~bobwang/datasets.html


Radish (The Robotics Many and varied indoor datasets, including large-Data Set Repository) area data from the CSU Stanislaus library, the
Intel Research Lab in Seattle, the Edmonton Con-
vention Centre, and more.
http://radish.sourceforge.net/

IJRR (The International IJRR maintains a webpage for each article, often Journal of Robotics Research containing data and video of results. A good example is a paper by Bosse et al. [3], which has data from Killian Court at MIT.
www.ijrr.org/contents/2312/abstract/1113.html

Monday, March 16, 2009

A real time tool can not promise your task is real time

A real time tool like Orocos RTT can not promise that your task is real time task.. It just means that you can use it to build real time task.

A simple case is that:
I have two task, one is period task which has lower priority than the other aperiodic task. If aperiodic need more process time than the interval time of period task, the periodic task can not run anymore as it can not get cpu time. So the periodic task is not periodic anymore. Of course ,for periodic task is not realtime. But if aperiodic task has highest priority in the OS, it will be realtime task.

So whether the task is realtime depends on how you design your multi-task. The real time tools like RTAI or RTLINUX ,hence orcos just give you the ability to build your realtime task.

Saturday, March 14, 2009

Orocos: real time multi-task system

What's mean real time?
It does not mean it's fast. It means the task can be finished in a certain time(determination) with out disturbed by system process or user process.
For a period task, it will run and if it was finished in one period, it will wait next period. When it's waiting , the processor will give the time to other process, which can run for a moment, so that the processor can use more time efficiently .

Orocos : the way to trigger nonperiod activity update funtion

For NonPeriod Activity, the updateHook just can work once after start. But how can I make it work when events come or command come?

Three ways to make updateHook work again for NonPeriod activity:
1, The simple way is add trigger in the updateHook function. But this way will waste the processor time. It likes a loop.
2, Using command method. If other task use this NonPeriod activity's command, then it will run again. The NonPeriod activity engine will first run command, and then run updateHook function.
3, Using event method. But event has two kinds. One is synchronous and the other one is asynchronous. Only the asynchronous one can be used to trigger updateHook. The reason is if the call back is in this NonPeriod activity, synchronous only make this call back run in caller's engine but not this NonPeriod activity's engine. Asynchronous will make the call back part work in the NonPeriod activity's engine.

Thursday, March 12, 2009

A way to load module when linux system is booting

If you want load a modules "some.ko" to kernel when system is booting.. You can do this:

$ cd /etc/init.d/
$ sudo gvim "boot.local"

Add follow line in boot.local file:
"insmod /filedirectory/some.ko"

Make the file executable
$ sudo chmod +x boot.local


Make it bootable ..Dont forget the last dot.
$ sudo update-rc.d boot.local start 51 S .



Now If you reboot system ,you will see the that module already was loaded by command "lsmod";

Monday, March 9, 2009

Combination translation and rotation

The order is very important, so rotation before translation is different translation after rotation.
Of course , rotation matrix also can not change the order ...

Remember that..

Sunday, March 8, 2009

How to use "eof()" in c++ file operation

Today I find a interesting problem when I read data from text file.
The code like this:
[code]
vector data;
ofstream os;
os.open("filename");
while(!os.eof())
{
int a;
os>>a;
data.push_back(a);
}
[/code]


After I run this simple program, a problem is there :
The size of vector data is longer 1 than the size of data in the filename.

What's wrong with this program?

I find it because eof is to check error information that when you read data from file.
if "os>>a" is wrong, program still will add a to the vector.
So How to fix that:

[code]

vector data;
ofstream os;
os.open("filename");
int a;
while(os>>a)
{

data.push_back(a);
}
[/code]

Tuesday, February 17, 2009

DataPort vs BufferPort in Orocos

Some difference between DataPort and Bufferport in orocos are:
1, DataPort is copy value from sender to receiver that means it can have many receivers. But for Bufferport , it 's cut that means if sender port just has one data, if one receiver get this value ,then the bufferport will become empty and other receivers can not get value anymore.
2, DataPort always ready to be written and just has one data. BufferPort has size, if it's full ,then the action "Push" will return false, and if it's empty , then the action "Pop" will return false.

Tuesday, January 20, 2009

Multi-threads program

Before I always think Multi-thread program is difficult and a little bit huge !^_^



Today I realize one simple parallelize program by two threads.Although it did not fulfill my idea,but it do I told it..
That's not so difficult to know what's the multi-thread and write a simple example program..
Yes it's still huge because it want to do more work and fulfill more ideas. But for me or some task ,,we just need one pieces of it..So dont fear any more ..

Fear is because you know nothing about it..Just sit down and concentrate to read books and google. Then you will find it's not so difficult to do it like other guys..

Here is a very nice tutorial about pthreads.
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html


Ps:Under linux c++, you can not define function like void* function(). Maybe you can do it in c language under c compiler. But for c++, GCC or G++ will give you wrong information about the function's parameter. I solved it by define function like void* function(void * p);
Here p is no used but you do need it to compile your program...

Monday, January 12, 2009

chat with friends by mobile phone freely

We can chat with our friends on internet and just need pay the net fee. Now we can visit internet by mobile phone, why should not we chat with friends on phone and use internet..Then we dont need pay the fee for every second. We just need pay the wireless fee.
Now google develop the open source system --Android.. May be we can try this.
Building a software like MSN ,QQ or OICQ, then we can chat to friends and see each other on the video .

Wednesday, January 7, 2009

Solve the problem : stack overflow

I am a poor guy in computer programming.
Today when I run a recursive loop , my program crash!! It told me: stack overflow!
Why??

If I use Vagrind to check memory leak, it seems like no more memory can be added to this stack.
I have thought the memory of my computer is so big that it can not crash like this. But ....it happens as, when I run a program ,the complier will tell computer how much space this program need . If it need more ,then stack crash .
To solve this problem:
1, make the size of stack bigger..
2, change the method to decrease the program space .

I choose 2th method..Then I find the solution:
2.1,change the recursion to iteration
2.2,change the recursion to tail recursion


As I use the tree recursion , one function will call itself many times in its loop. For every call, the stack will save the path to parent function call , and save the local variable .

I find my program maybe difficult to be changed to iteration or tail recursion(it will wrong as I can not return for every function).

So the only choice might be elimination the local variable..Then I use more function and input parameters instead of using local variable..

Finally, for this ,it works...and become faster....It help me to do many works ,like region grow ,label connect component and morphological algorithm..

For more information:
http://triton.towson.edu/~akayabas/COSC455_Spring2000/Recursion_Iteration.htm
http://www.refactoring.com/catalog/replaceRecursionWithIteration.html
http://www.unc.edu/courses/2005spring/comp/120/001/handouts.html

Friday, January 2, 2009

Where is the giant's shoulder?

Samuel Taylor Coleridge, in The Friend (1828), wrote:
"The dwarf sees farther than the giant, when he has the giant's shoulder to mount on."
That mean "One who develops future intellectual pursuits by understanding the research and works created by notable thinkers of the past";
If you want to see further, first you should find the giant, second you should find the shoulder of the giant,third you should mount on the shoulder.
For dwarf , maybe it's not so easy to do these stuff.. But it's a good way to see further than anyone before.
For me ,as a dwarf, just starting to think this...Work hard ,and mount on the shoulder of giant.

Classifiers: Bayes, PCA, ANN,SVM

May be it's difficult for me to write all I get from book about classifier .But I think it will be useful for me to write notes here.
These classifiers need be trained before use.

For Bayes: we need know the class conditional probability density function(f(feature/class)), and we can get it by two ways:
1, Assume the function is normal distribution. Using the training data to get mean and variance of normal distribution;
2, Get the class conditional density by doing much experiments(training);
If we get the density function, we can calculate posterior probability (f(class/feature)) by Bayes rule(See Computer vision :a modern approach for detail);

For PCA: PCA(principal component analysis) in fact is not a classifier, but a tool to get new better feature vector from original feature vector, which have the most variance between these feature vector that mean no useless information in new feature vector.
We can get new feature vector by : First, calculating the eigenvectors of original feature vector variance matrix ; Second, projecting the original feature to the direction of eigenvectors, then we get new feature vectors;

For ANN: ANN(artificial neural network) is a method using iteration to get new parameters that can making the error between real output and the ideal output becoming smaller. We can use stochastic gradient descent minimizes the error and use backpropagation to compute the derivatives;

For SVM: SVM(support vector machines) is a classifier that using the training data to get a hyperplane which can separate the classes, and the minimum distance between hyperplane and class is same.Why we call it SVM, because not all sample data will affect the parameters of this hyperplane, only some points can determine hyperplane parameters that's the support vectors;