区域生长算法

算法介绍 区域生长,指将前景种子点扩展为更大区域的过程。预备知识 编程工具:VS2010, CMAKE 编程语言:C++ 编程库:ITK 数据结构:栈,通过栈实现区域生长算法 数据:三维的病变视网膜图像 目的:分割视网膜图像中的病变区域,即色素上皮层脱离区域。实现过程
摘要由CSDN通过智能技术生成

算法介绍
区域生长,指将前景种子点扩展为更大区域的过程。

预备知识
编程工具:VS2010, CMAKE
编程语言:C++
编程库:ITK
数据结构:栈,通过栈实现区域生长算法
数据:三维的病变视网膜图像
目的:分割视网膜图像中的病变区域,即色素上皮层脱离区域。

实现过程
(1) 读入原图像,前景种子点图像;
说明:前景种子点由形态学方法自动获取,也可以手动标注前景种子点。
(2) 定义区域生长的准则;
(3) 前景种子点入栈;对前景种子点逐个遍历,在当前种子点的26邻域内,如果有像素点满足生长条件,则该像素点入栈;直到栈为空,则算法结束;
(4) 添加约束条件,对区域生长结果进行限制;
(5) 将区域生长结果叠加在原图上,查看具体效果。

具体代码如下,并在VS2010上测试通过:

#include"itkImage.h"
#include"itkImageFileReader.h"
#include"itkImageFileWriter.h"
#include<iostream>
#include<string>
#include <fstream>
#include <stack>
using namespace std;

int main(int argc, char* argv[])
{
    char* srcImagePath = argv[1];
    char* seedImagePath = argv[2];
    char* dstImagePath = argv[3];
    char* sur1Path = argv[4];//视网膜分层结果
    char* sur12Path = argv[5];//视网膜分层结果

    typedef itk::Image<unsigned short,3>InputImageType; 
    typedef itk::Image<unsigned short,3>OutputImageType;
    typedef itk::Image<unsigned char,3>SeedImageType;
    InputImageType::Pointer srcImage = InputImageType::New();
    OutputImageType::Pointer dstImage = OutputImageType::New();
    SeedImageType::Pointer seedImage = SeedImageType::New();

    typedef itk::ImageFileReader<InputImageType>ReaderType;
    typedef itk::ImageFileReader<SeedImageType>SeedReaderType;
    ReaderType::Pointer reader = ReaderType::New();
    SeedReaderType::Pointer readerSeed = SeedReaderType::New();
    reader->SetFileName(argv[1]);//原图像 
    readerSeed->SetFileName(argv[2]);//前景种子点图
    reader->Update();
    srcImage = reader->GetOutput();
    readerSeed->Update();
    seedImage = readerSeed->GetOutput(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值