CVMLib 7.0-Đối thủ xứng tầm của Armadillo và Eigen

Sau một thời gian chờ đợi khá lâu từ phiên bản 6.1, ngày 6-1-2013 vừa qua CVMLIB 7.0, một thư viện rất mạnh hỗ trợ các thao tác trên ma trận được viết bởi tác giả Sergei Nikolaev, đã được tung ra. Phiên bản mới này hỗ trợ thư viện Intel MKL Intel 11.0 Update 1 cũng như các thư viện khác như ACML và lapack (bản 3.4.2). Người sử dụng có thể tự build từ source code trên máy của mình hoặc download bản precompiled về sử dụng. So với ArmadilloEigen, CVMLIB nhanh hơn (với đa số các thao tác trên ma trận). Sau đây là một ví dụ rất đơn giản cho các thao tác là nhân hai ma trận, SVD và EIG trên ma trận sử dụng CVMLIB:


// A simple example using CVM library

#include <cvm.h>
#include <ctime>
#include <iostream>

using namespace cvm;
using namespace std;

int main(int argc, char * argv[])
{
int n, m;
float *a, *b;
int i;
clock_t st, et;

if(argc==3)
{
n = atoi(argv[1]);
m = atoi(argv[2]);
}else
{
n = m = 1000;
}
a = new float[n*m];
b = new float[n*m];
srand(time(NULL));
for(i=0;i<n*m;i++)
{
a[i] = (float)rand()/INT_MAX;
b[i] = (float)rand()/INT_MAX;
}

basic_rmatrix ma(a, n, m);
basic_rmatrix mb(b, n, m);
basic_rmatrix mc(n, m);
basic_rmatrix asvd(a,n,m);
basic_srmatrix u(n);
basic_srsmatrix ms(n);
basic_srmatrix em(n);
basic_rvector ev(n);

st = clock();
mc = ma*mb;
et = clock();
cout << “Time for matrix multiplication is:” << (float)(et-st)/CLK_TCK;

st = clock();
ev = asvd.svd(u,em);
et = clock();
cout << “Time for SVD is:” << (float)(et-st)/CLK_TCK;

st = clock();
ev.eig(ms, em);
et = clock();
cout << “Time for EIG is:” << (float)(et-st)/CLK_TCK;

delete [] a;
delete [] b;
system(“pause”);
return 0;
}

Sách mới về OpenCV – Mastering OpenCV with Practical Computer Vision Projects

Update 14/01/2014: “Practical OpenCV” là một cuốn sách về OpenCV nữa mới được xuất bản dành cho cộng đồng những người lập trình với OpenCV. Cuốn sách được chia làm 2 phần, 11 chương với các nội dung như sau:

Part 1: Getting comfortable
Chapter 1: Introduction to Computer Vision and OpenCV
Chapter 2: Setting up OpenCV on your computer
Chapter 3: CV Bling – OpenCV inbuilt demos
Chapter 4: Basic operations on images and GUI windows

Part 2: Advanced computer vision problems and coding them in OpenCV
Chapter 5: Image filtering
Chapter 6: Shapes in images
Chapter 7: Image segmentation and histograms
Chapter 8: Basic machine learning and keypoint-based object detection
Chapter 9: Affine and Perspective transformations and their applications to image panoramas
Chapter 10: 3D geometry and stereo vision
Chapter 11: Embedded computer vision: Running OpenCV programs on the Raspberry Pi

Mã nguồn của cuốn sách có thể download về từ địa chỉ này.

Cùng với hai cuốn sách viết về OpenCV là Learning OpenCV: Computer Vision with the OpenCV Library và OpenCV 2 Computer Vision Application Programming Cookbook, PacktPub vừa cho xuất bản một cuốn sách mới về OpenCV có tên là “Mastering OpenCV with Practical Computer Vision Projects“. Cuốn sách được chia thành 8 chương với các chủ đề khác nhau, mỗi chủ đề được minh họa bằng một project có mã nguồn (source code) ( yêu cầu từ OpenCV v2.4.2 trở lên-phiên bản hiện tại là 2.4.3) và các giải thích, chỉ dẫn về thuật toán, chi tiết về lập trình với OpenCV tương ứng: lập trình OpenCV với Adroid, iOS (iPhone và iPad), nhận dạng biển số xe (Number Plate Recognition) với SVM và NN, Face tracking, Head Pose Estimation (AAM), nhận dạng mặt người – Face recognition với hai thuật toán cơ bản nhất là Eigenfaces-PCA and Fisherfaces-LDA, lập trình với nền tảng Kinect của Microsoft. Sách có một chương 4 là sample và toàn bộ source code (đã cập nhật file thiếu ở chương viết về head pose estimation) có thể download tại Github.

My Blog stats: a looking back at 2012

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 12,000 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 20 years to get that many views.

Click here to see the complete report.