资源简介
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个文件信息
相关资源
- 基于遗传神经网络的图像分割.zip
- 用C语言实现视频分割
- 图像分割—基于图的图像分割Graph-b
- 基于改进的种子区域生长法的图像分
- 分水岭图像分割算法 c++实现
- fisher最优分割
- 图像分割和边缘检测完全C语言源代码
- mfc 窗口分割实现多视图切换
- 激光雷达点云地平面校准 地面分割
- 302_规格划分矩形.cpp
- 黄金分割法C语言程序运行过无误的
- SLICSuperpixels 超像素分割图 C++代码
- OpenCV种子填充实现彩色图像分割的代
- 阈值分割和区域生长vc++代码
- MFC读取txt,分割显示到listctrl控件上
- 使用c语言实现基于图的图像分割代码
- 激光雷达数据读取、显示、分割、直
- CohenSutherland裁剪算法和中点分割裁剪
- 基于MFC OpenGL读取obj文件并以双视图显
- 根据原图和二值图得到分割彩图
- 图像分割 grabcut C++版本的源码,包含
- VC++和OpenGL实现八叉树分割
- 车牌识别系统从车牌定位、字符分割
- C++实战源码-指定符号分割字符串
- C++ 文件分割器
- C++控制台地震勘探观测系统数据文件
- Opencv+VC实现分水岭分割图像
- SLIC超像素分割算法OpenCV Mat 接口
- FLICM算法C_Opencv代码,,可用于做图像
- Otsu双阈值分割opencv
评论
共有 条评论