opencv 金字塔图像分割cvPyrSegmentation

opencv cvPyrSegmentation

demo: http://download.csdn.net/detail/keen_zuxwang/9852585

金字塔图像分割

图像金字塔
1. 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。
2. 图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,
且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。
3. 金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低

图像金字塔:
高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔。
拉普拉斯金字塔(Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用

根据相邻金字塔采样的原理可知,上层金字塔是下层金字塔下采样得到,那么上层金子塔的一个点和下层 金字塔的四个点就有一个映射关系,
若他们的差值小于threshold1,则被连接建立起来。同时与周围的连接进行比较,如果差值小于threshold2,则这两个连接形成一个簇

/* Splits color or grayscale image into multiple connected components
 of nearly the same color/brightness using modification of Burt algorithm.
 comp with contain a pointer to sequence (CvSeq)
 of connected components (CvConnectedComp) */
CVAPI(void) cvPyrSegmentation( IplImage* src, IplImage* dst,
                              CvMemStorage* storage, CvSeq** comp,
                              int level, double threshold1,
                              double threshold2 );

src
输入图像
dst
输出图像
Storage:
存储连通部件的序列结果
comp
分割部件的输出序列
level
建立金字塔的最大层数
threshold1
建立连接的错误阈值
threshold2
分割簇的错误阈值
金字塔建立到 level 指定的最大层数。
如果 p(c(a),c(b))

JNIEXPORT jlong JNICALL Java_com_example_grabcut_MainActivity_doPyrSegmentation(JNIEnv *env, jclass clz, jlong imageGray)
{
    Mat imageMat0 = Mat(*(Mat*)imageGray);
    Mat imageMat1(imageMat0.size(),CV_8UC3);
    cvtColor(imageMat0, imageMat1, CV_BGRA2BGR);

    Mat imageMat;
    resize(imageMat1, imageMat, cv::Size(256, 256));
    LOGD("        cvPyrSegmentation %d, %d    ", imageMat.cols, imageMat.rows);

    IplImage  temp_src = imageMat;
    IplImage* imageg = &temp_src;

    // 图像大小是否符合规格:2的n次方
    if (!(imageg->width%2 == 0 && imageg->height%2 == 0)){
        LOGD("       cvPyrSegmentation image %d, %d   ", imageg->width, imageg->height);
    }

    IplImage* img1=cvCreateImage(cvGetSize(imageg),imageg->depth,imageg->nChannels);
    CvMemStorage* stoage = cvCreateMemStorage(0) ;
    CvSeq* comp=NULL;

    int level = 6 ; //进行n层采样
    double threshold1 = 150 ;
    double threshold2 = 30 ;

    cvPyrSegmentation(imageg,img1,stoage, &comp, level, threshold1, threshold2);

    Mat *hist = new Mat(img1);
    return (jlong) hist;
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV文字图像分割是一种用于将文本区域从图像中分离出来的计算机视觉技术。这个过程涉及到将图像中的文本区域与背景区域进行分离,从而为文本检测、识别或分析等后续步骤提供更好的基础。 在实现文本图像分割时,可以通过以下步骤进行: 1. 图像预处理:首先对图像进行预处理,包括灰度化、二值化、去噪等操作。这些操作有助于提取出文字和背景的区别。 2. 文字区域提取:使用形态学操作、连通组件分析等方法,可以提取出图像中的文字区域。这些方法能够找到文字的边界和连通区域。 3. 分割与去除:通过分析提取到的文字区域,可以进行进一步的分割和去除杂质操作。例如,可以利用图像的连通性和形状特征,去除非文字的干扰。 4. 文字区域重建:从分割后的文字区域中,可以进行重建和连接操作,以提高文本的连续性。例如,可以通过基于几何形状和布局的方法,对分割后的文字区域进行重建和连接。 在实际应用中,可以根据具体的场景和需求选择不同的方法和技术。例如,可以使用基于阈值分割的方法、基于深度学习的方法等来实现文字图像分割。而OpenCV提供了丰富的函数库和工具,可以方便地进行图像处理和分析。 总之,OpenCV文字图像分割是通过将图像中的文字区域与背景区域进行分离,提取出文字的技术。通过预处理、区域提取、分割与去除、文字区域重建等步骤,可以实现对文字图像的分割和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值