資源簡(jiǎn)介
VC++實(shí)現(xiàn)馬爾科夫隨機(jī)場(chǎng)的圖像分割算法。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?“BP-S.h“
#define?private?public
#include?“typeTruncatedQuadratic2D.h“
#undef?private
#define?m_D(pixl)??m_D[(pix)*m_nLabels+(l)]
#define?m_V(l1l2)??m_V[(l1)*m_nLabels+(l2)]
#define?MIN(ab)??(((a)?(b))???(a)?:?(b))
#define?MAX(ab)??(((a)?>?(b))???(a)?:?(b))
#define?TRUNCATE_MIN(ab)?{?if?((a)?>?(b))?(a)?=?(b);?}
#define?TRUNCATE_MAX(ab)?{?if?((a)?(b))?(a)?=?(b);?}
#define?TRUNCATE?TRUNCATE_MIN
/////////////////////////////////////////////////////////////////////////////
//??????????????????Operations?on?vectors?(arrays?of?size?K)???????????????//
/////////////////////////////////////////////////////////////////////////////
inline?void?CopyVector(BPS::REAL*?to?MRF::CostVal*?from?int?K)
{
????BPS::REAL*?to_finish?=?to?+?K;
????do
{
????*to?++?=?*from?++;
}?while?(to?}
inline?void?AddVector(BPS::REAL*?to?BPS::REAL*?from?int?K)
{
????BPS::REAL*?to_finish?=?to?+?K;
????do
{
????*to?++?+=?*from?++;
}?while?(to?}
inline?BPS::REAL?SubtractMin(BPS::REAL?*D?int?K)
{
????int?k;
????BPS::REAL?delta;
????delta?=?D[0];
????for?(k=1;?k ????for?(k=0;?k
????return?delta;
}
//?Functions?UpdateMessageTYPE?(see?the?paper?for?details):
//
//?-?Set?Di[ki]?:=?gamma*Di_hat[ki]?-?M[ki]
//?-?Set?M[kj]?:=?min_{ki}?(Di[ki]?+?V[kikj])
//?-?Normalize?message:?
//????????delta?:=?min_{kj}?M[kj]
//????????M[kj]?:=?M[kj]?-?delta
//????????return?delta
//
//?If?dir?=?1?then?the?meaning?of?i?and?j?is?swapped.
///////////////////////////////////////////
//??????????????????L1???????????????????//
///////////////////////////////////////////
inline?BPS::REAL?UpdateMessageL1(BPS::REAL*?M?BPS::REAL*?Di_hat?int?K?BPS::REAL?gamma?MRF::CostVal?lambda?MRF::CostVal?smoothMax)
{
????int?k;
????BPS::REAL?delta;
????delta?=?M[0]?=?gamma*Di_hat[0]?-?M[0];
????for?(k=1;?k {
????M[k]?=?gamma*Di_hat[k]?-?M[k];
????TRUNCATE(delta?M[k]);
????TRUNCATE(M[k]?M[k-1]?+?lambda);
}
????M[--k]?-=?delta;
????TRUNCATE(M[k]?lambda*smoothMax);
????for?(k--;?k>=0;?k--)
{
????M[k]?-=?delta;
????TRUNCATE(M[k]?M[k+1]?+?lambda);
????TRUNCATE(M[k]?lambda*smoothMax);
}
????return?delta;
}
////////////////////////////////////////
//???????????????L2???????????????????//
////////////////////////////////////////
inline?BPS::REAL?UpdateMessageL2(BPS::REAL*?M?BPS::REAL*?Di_hat?int?K?BPS::REAL?gamma?MRF::CostVal?lambda?MRF::CostVal?smoothMax?void?*buf)
{
????BPS::REAL*?Di?=?(BPS::REAL*)?buf;
????int*?parabolas?=?(int*)?((char*)buf?+?K*sizeof(BPS::REAL));
????int*?intersections?=?parabolas?+?K;
????TypeTruncatedQuadratic2D::REAL*?Di_tmp?=?(TypeTruncatedQuadratic2D::REAL*)?(intersections?+?K?+?1);
????TypeTruncatedQuadratic2D::REAL*?M_tmp?=?Di_tmp?+?K;
????TypeTruncatedQuadratic2D::Edge*?tmp?=?NULL;
????int?k;
????BPS::REAL?delta;
????assert(lambda?>=?0);
????Di[0]?=?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????8878??2006-11-14?22:27??MRF2.1\block.h
?????文件??????26050??2006-11-14?22:27??MRF2.1\BP-S.cpp
?????文件???????2390??2006-11-14?22:27??MRF2.1\BP-S.h
?????文件??????11663??2007-09-15?22:16??MRF2.1\energy.h
?????文件???????9782??2007-10-22?15:45??MRF2.1\example.cpp
?????文件???????4069??2009-09-06?21:39??MRF2.1\example.dsp
?????文件????????539??2009-09-06?21:39??MRF2.1\example.dsw
?????文件??????58368??2009-09-06?21:39??MRF2.1\example.ncb
?????文件??????50688??2009-09-06?21:39??MRF2.1\example.opt
?????文件????????991??2009-09-06?13:37??MRF2.1\example.plg
?????文件??????45421??2007-03-18?18:39??MRF2.1\GCoptimization.cpp
?????文件??????13974??2007-03-18?18:53??MRF2.1\GCoptimization.h
?????文件??????12192??2006-11-14?22:27??MRF2.1\graph.cpp
?????文件???????9632??2006-11-14?22:27??MRF2.1\graph.h
?????文件???????8668??2006-11-14?22:27??MRF2.1\ICM.cpp
?????文件???????1490??2006-11-14?22:27??MRF2.1\ICM.h
?????文件???????1425??2006-11-14?22:27??MRF2.1\li
?????文件???????1786??2006-11-14?22:27??MRF2.1\li
?????文件???????1183??2007-10-22?15:24??MRF2.1\Makefile
?????文件??????27436??2006-11-14?22:27??MRF2.1\maxflow.cpp
?????文件???????7897??2006-11-27?10:14??MRF2.1\MaxProdBP.cpp
?????文件???????2351??2006-11-14?22:27??MRF2.1\MaxProdBP.h
?????文件???????3126??2006-11-14?22:27??MRF2.1\mrf.cpp
?????文件??????12201??2006-11-27?10:15??MRF2.1\mrf.h
?????文件??????14065??2007-10-22?15:26??MRF2.1\README.txt
?????文件??????17968??2006-11-27?10:14??MRF2.1\regions-maxprod.cpp
?????文件???????1577??2006-11-14?22:27??MRF2.1\regions-new.h
?????文件??????26591??2006-11-14?22:27??MRF2.1\TRW-S.cpp
?????文件???????2756??2006-11-14?22:27??MRF2.1\TRW-S.h
?????文件????????896??2007-03-19?23:22??MRF2.1\typeTruncatedQuadratic2D.h
............此處省略5個(gè)文件信息
評(píng)論
共有 條評(píng)論