资源简介
VC++实现马尔科夫随机场的图像分割算法。

代码片段和文件信息
#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 < to_finish);
}
inline void AddVector(BPS::REAL* to BPS::REAL* from int K)
{
BPS::REAL* to_finish = to + K;
do
{
*to ++ += *from ++;
} while (to < to_finish);
}
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] =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
相关资源
- c语言字符串分割截取子串查找插入删
- opencv图片扫描以及校正
- 基于改进的fcm算法的图像分割vc++
- 基于图割的图像分割OpenCV+MFC实现
- 拼音分割算法
- 现代优化设计黄金分割法和二次插值
- c++写的fcm算法程序
- txt文件分割源代码vc6
- MFC中的窗口分割和树形目录的创建
- 虹膜分割 Iris Segmentation C++和opencv实现
- 一种基于Visual C++的的车牌字符分割代
- grabcut的c++源代码
- RP系统中STL模型的分割与拼接研究
- STL文件的分割与拼接处理软件开发
- VMTK Tutorials
- MFC单文档分割视图的基本使用
- 基于模糊的自适应阈值分割
- 肺部CT图像分割及重建系统
- 车辆检测-基于车底阴影特征-基于路面
- 分水岭分割算法c++代码实现
- slic超像素分割方法源代码
- 分割阈值opencv2
- FCM_S聚类图像分割程序
- 基于聚类的医学图像分割法
- 基于遗传神经网络的图像分割.zip
- 用C语言实现视频分割
- 图像分割—基于图的图像分割Graph-b
- 基于改进的种子区域生长法的图像分
- 分水岭图像分割算法 c++实现
- fisher最优分割
评论
共有 条评论