This project (CvHMM) is an implementation of discrete Hidden Markov Models (HMM) based on OpenCV. It is simple to understand and simple to use. The Zip file contains one header for the implementation and one main.cpp file for a demonstration of how it works. Hope it becomes useful for your projects.
- The Viterbi implementation is based on Viterbi Algorithm in Wikipedia.
- The Baum-Welch Training method is implemented based on "a revealing introduction to hidden markov models"
- The inputs and outputs of CvHMM class is handled by cv::Mat (OpenCV)
- The syntax of the member functions is as simple as HMM in MATLAB.
Hi, questions: According to your sample_output: INIT: 1 0 0. But many (most) generated states do not start with first state. State 0 should be starting state, thus be always the first of the generated states. Moreover: the type of model is defined through the TRANS data (e.g., left-right ...). If an entry is 0 it should not change during training, otherwise a left-right might become a right-left (that is not clearly not desireable). Also, the log probabilities are very low, thus all sequences have a chance close to 0 to be generated by the model. Comments?