资源简介
区域生长算法的简单实现,人工选取种子,对二值图像的前景进行分割。
代码片段和文件信息
#include
#include
#include
using namespace std;
using namespace cv;
// 8 邻域
static Point connects[8] = { Point(-1 -1) Point(0 -1) Point(1 -1) Point(1 0) Point(1 1) Point(0 1) Point(-1 1) Point(-1 0)};
int main()
{
// 原图
Mat src = imread(“img2.jpg“ 0);
// 结果图
Mat res = Mat::zeros(src.rows src.cols CV_8U);
// 用于标记是否遍历过某点
Mat flagMat;
res.copyTo(flagMat);
// 二值图像
Mat bin;
threshold(src bin 80 255 CV_THRESH_BINARY);
// 初始3个种子点
stack seeds;
seeds.push(Point(0 0));
seeds.push(Point(186 166));
seeds.push(Point(327 43));
res.at(0 0) = 255;
res.at(166 186) = 255;
res.at(43 327) = 255;
//int index=0;
//int ii = 0;
//int time[10] = { 200 5000 8000 15000 20000 25000 40000 45000 50000 52000 };
while (!seeds.empty())
{
//if (index++ == time[ii])
//{
// char buf[24];
// sprintf(buf “r%d.jpg“ ii++);
// imwrite(buf res);
//}
Point seed = seeds.top();
seeds.pop();
// 标记为已遍历过的点
flagMat.at(seed.y seed.x) = 1;
// 遍历8邻域
for (size_t i = 0; i < 8; i++)
{
int tmpx = seed.x + connects[i].x;
int tmpy = seed.y + connects[i].y;
if (tmpx < 0 || tmpy < 0 || tmpx >= src.cols || tmpy >= src.rows)
continue;
// 前景点且没有被标记过的点
if (bin.at(tmpy tmpx) != 0 && flagMat.at(tmpy tmpx) == 0)
{
res.at(tmpy tmpx) = 255; // 生长
flagMat.at(tmpy tmpx) = 1; // 标记
seeds.push(Point(tmpx tmpy)); // 种子压栈
}
}
}
imshow(“RES“res);
imwrite(“res.jpg“ res);
waitKey(0);
return 1;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 505580 2015-04-19 17:07 RegionGrow\Debug\RegionGrow.ilk
文件 2354176 2015-04-19 17:07 RegionGrow\Debug\RegionGrow.pdb
文件 338050 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\main.obj
文件 1499 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.log
文件 774 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\cl.command.1.tlog
文件 18838 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\CL.read.1.tlog
文件 748 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\CL.write.1.tlog
文件 1268 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\li
文件 1598 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\li
文件 726 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\li
文件 200 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog\RegionGrow.lastbuildstate
文件 617472 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\vc120.idb
文件 1363968 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\vc120.pdb
文件 21290 2012-08-16 23:27 RegionGrow\RegionGrow\img2.jpg
文件 1730 2015-04-19 17:07 RegionGrow\RegionGrow\main.cpp
文件 4335 2015-04-17 16:34 RegionGrow\RegionGrow\RegionGrow.vcxproj
文件 956 2015-04-17 16:34 RegionGrow\RegionGrow\RegionGrow.vcxproj.filters
文件 15170 2015-04-19 17:07 RegionGrow\RegionGrow\res.jpg
文件 15535 2015-04-19 11:42 RegionGrow\RegionGrow\seed.jpg
I.A.SH. 109568 2015-04-19 16:43 RegionGrow\RegionGrow\Thumbs.db
文件 13828096 2015-04-19 17:08 RegionGrow\RegionGrow.sdf
文件 976 2015-04-17 16:31 RegionGrow\RegionGrow.sln
..A..H. 19456 2015-04-19 17:08 RegionGrow\RegionGrow.v12.suo
目录 0 2015-04-19 17:07 RegionGrow\RegionGrow\Debug\RegionGrow.tlog
目录 0 2015-04-19 17:07 RegionGrow\RegionGrow\Debug
目录 0 2015-04-19 17:08 RegionGrow\Debug
目录 0 2015-04-19 17:07 RegionGrow\RegionGrow
目录 0 2015-04-19 17:08 RegionGrow
----------- --------- ---------- ----- ----
19222009 28
............此处省略1个文件信息
- 上一篇:模糊理论及其在故障诊断中的应用
- 下一篇:Zsa.rar
评论
共有 条评论