标签: image-segmentation

用Java实现分水岭分割

我正在尝试为项目编写自己的Watershed Segmentation实现.我有一个版本,返回类似于正确分割的东西给出非常琐碎的图片.不幸的是,它超级慢/效率低,它可能会或可能不会在所有情况下终止.

我一直在使用Woods和Gonzales的"数字图像处理"中的描述,以及Watershed Wikipedia页面.一般算法编码并包含在下面,但我有一种感觉,我循环了很多我不需要的东西.我非常感谢这里的所有帮助,在此先感谢.

    public static Set<Point> watershed(double[][] im) {

    //Get the Gradient Magnitude to use as our "topographic map."

    double t1 = System.currentTimeMillis();
    double[][] edges = EdgeDetection.sobelMagnitude(im);


    //Only iterate over values in the gradient magnitude to speed up.

    double[] histogram = Image.getHistogram(edges);
    Image.drawHistogram(histogram, Color.red);
    int minPixelValue = 0;
    for (int i = 0; i < histogram.length; i++) {
        if (histogram[i] > 0) {
            minPixelValue = i;
            break;
        }
    }
    int h = im.length;
    int w = im[0].length;

    //SE is …
Run Code Online (Sandbox Code Playgroud)

java image-processing computer-vision image-segmentation watershed

18
推荐指数
1
解决办法
8213
查看次数

如何在openCV中实现的Canny Edge检测算法中选择最佳参数集?

我在Android平台上使用openCV.在这个社区和技术人员的大力帮助下,我能够成功地从图像中检测到一张纸.这些是我使用的步骤.

1.Imgproc.cvtColor()
 2.Imgproc.Canny()
 3.Imgproc.GausianBlur()
 4.Imgproc.findContours()
 5.Imgproc.approxPolyDP()
 6.findLargestRectangle()
 7.find the vertices of the rectangle
 8.find the vertices of the rectangle top-left anticlockwise order using center of mass approach
 9.find the height and width of the rectangle just to maintain the aspect ratio and do warpPerspective transformation.
Run Code Online (Sandbox Code Playgroud)

应用了所有这些步骤后,我可以轻松地从图像中获取文档或最大的矩形,但这在很大程度上取决于背景和文档表的强度差异.由于Canny边缘的工作原理是强度梯度,不同之处在于强度总是从实现方面假设.这就是为什么Canny将各种阈值参数考虑在内.

  1. 降低Thershold
  2. Heigher Thershold

因此,如果像素的强度梯度大于高阈值,则它将被添加为输出图像中的边缘像素.如果像素的强度梯度值低于下阈值,则像素将被完全拒绝.如果是像素在较低和较高阈值之间具有强度,如果它连接到具有大于较高阈值的值的任何其他像素,则它将仅被添加为边缘像素.

我的主要目的是使用Canny边缘检测进行文档扫描,因此我想知道如何动态计算这些阈值,以便它可以处理暗背景和浅背景两种情况.

我通过手动调整参数尝试了很多,但我找不到与场景关联的关系.

希望我明确我的观点,并提前致谢

opencv image-processing edge-detection image-segmentation

16
推荐指数
2
解决办法
2万
查看次数

如何将图像转换为字符段?

通常在OCR的过程中,图像文件基本上被切割成段,并且每个字符被重新称为段.例如,未分段的文本作为图像

必须转变成类似的东西 文本已被分段并准备好进行OCR的图像

此外,是否有像泰卢固语这样的亚洲语言的算法可以用于此目的?如果没有,这对英语怎么办?

ocr matlab opencv computer-vision image-segmentation

15
推荐指数
1
解决办法
9778
查看次数

OpenCV - 两个二进制图像之间的交叉点

假设我有两个相同大小的二进制图像.如何找到两个二进制图像之间的交集?只有两个图像上相同坐标(位置)的像素为白色(灰色 - 255)才会在输出图像(交叉点)上产生白色像素.

opencv image-segmentation

15
推荐指数
2
解决办法
2万
查看次数

通过最近的"种子"区域对Python数组进行分类?

我有一个生态栖息地的栅格,我已经转换成二维Python numpy数组(下面的example_array).我还有一个包含具有唯一值的"种子"区域的数组(下面的seed_array),我想用它来对我的栖息地区域进行分类.我想将我的种子区域"种植"到我的栖息地区域,以便为栖息地分配最近种子区域的ID,通过栖息地区域进行测量.例如:

数组的图像

我最好的方法是使用该ndimage.distance_transform_edt函数创建一个数组,描述数据集中每个单元格最近的"种子"区域,然后将其替换回栖息地数组.然而,这并不是特别好用,因为该功能不能测量"通过"我的栖息地区域的距离,例如下面的红色圆圈表示错误分类的单元格:

使用ndimage输出不正确

下面是我的栖​​息地和种子数据的示例数组,以及我正在寻找的输出类型的示例.我的实际数据集要大得多 - 超过一百万个栖息地/种子区域.任何帮助将非常感激!

import numpy as np
import scipy.ndimage as ndimage
import matplotlib.pyplot as plt

# Sample study area array
example_array = np.array([[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
                          [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1],
                          [0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1],
                          [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
                          [1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy scipy image-segmentation

15
推荐指数
1
解决办法
941
查看次数

在keras中实现跳过连接

我正在keras中实现ApesNet.它有一个跳过连接的ApesBlock.如何将其添加到keras中的顺序模型?ApesBlock有两个平行的层,最后通过逐元素加法合并.在此输入图像描述

image-segmentation keras resnet

15
推荐指数
2
解决办法
1万
查看次数

如何删除背景图像并获得前景图像

有两个图像

alt text http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg alt text http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg 一个是背景图片另一个是一个人的照片相同的背景,相同的大小,我想要做的是删除第二个图像的背景,并仅提取人的个人资料.常见的方法是从第二个图像中减去第一个图像,但我的问题是人的佩戴颜色是否与背景相似.减法的结果很糟糕.我无法得到整个人的个人资料.谁有好主意删除背景给我一些建议.先感谢您.

image-processing computer-vision background-foreground image-segmentation

14
推荐指数
1
解决办法
2万
查看次数

Python AttributeError:'module'对象没有属性'DIST_L2'

我想cv2.distanceTransform()在Python中使用方法.运行以下代码行时出现错误:

dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
Run Code Online (Sandbox Code Playgroud)

运行此代码时出现以下错误:

AttributeError:'module'对象没有属性'DIST_L2'

之前已经提出了类似的问题,我知道当你的python文件名是'something.py'时导入'某事'会出现这个问题.但是,我的python文件名是segment3.py.

有人可以帮我这个吗?我正在尝试使用分水岭算法进行分割.我正在研究Fedora20.提前致谢!

python opencv image-processing image-segmentation

14
推荐指数
3
解决办法
2万
查看次数

图像处理 - 使用opencv进行着装分割

图片

我正在使用opencv进行服装特征识别.作为第一步,我需要通过从图像中移除面部和手部来分割T恤.任何建议表示赞赏.

matlab image-processing computer-vision image-segmentation opencv3.0

14
推荐指数
1
解决办法
2206
查看次数

语义分割Keras的交叉熵损失

我很确定这是一个愚蠢的问题,但我无法在其他任何地方找到它,所以我会在这里问它.

我正在使用带有7个标签的keras中的cnn(unet)进行语义图像分割.所以每个图像的标签是(7,n_rows,n_cols)使用theano后端.因此,对于每个像素的7个层,它是一个热编码的.在这种情况下,使用分类交叉熵是正确的误差函数吗?这似乎对我来说,但网络似乎更好地学习二进制交叉熵损失.有人可以阐明为什么会这样,原则目标是什么?

image-processing image-segmentation deep-learning keras

14
推荐指数
1
解决办法
8142
查看次数