标签: scikit-image

图像的几何扭曲在python中

我想使用python对图像执行几何变换,以"拉直"或纠正沿给定曲线的图像.看来,scikit形象ProjectiveTransform()warp()对于这个非常好,但文档是稀疏.我按照这里的文档,但我无法让它适用于示例案例.

这是一个例子:我将创建一个带有两个同心圆的图像,目标是纠正这些圆的四分之一,这样得到的图像就是两条平行线.以下是示例数据:

import numpy as np
a = np.zeros((500, 500))

# create two concentric circles with a thickness of a few pixels:
for i in range(500):
    for j in range(500):
        r = np.sqrt((i - 250)**2 + (j - 250)**2) 
        if r > 50 and r < 52:
            a[i, j] = 10
        if r > 100 and r < 102:
            a[i, j] = 10
# now create the coordinates of the control points in the …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing scikit-image

10
推荐指数
1
解决办法
2342
查看次数

寻找图像中的凹坑

我的一位朋友正在研究以下项目:

下面是不锈钢表面的微观(SEM)图像.

在此输入图像描述

但你可以看到,它被腐蚀了一点(长时间暴露在海洋环境中)并且在表面形成了一些凹坑.一些坑被标记为红色圆圈.

他需要在图像中找到凹坑数量并且他手动计算它(想象一下,有近150张图像).所以我想到用任何图像处理工具自动化这个过程.

题:

如何在此图像中找到凹坑数?


我尝试了什么:

作为第一步,我通过关闭操作稍微改善了对比度.

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('6.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11))

close = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)

close2 = cv2.add(close,1)
div = (np.float32(gray)+1)/(close2)
div2 = cv2.normalize(div,None, 0,255, cv2.NORM_MINMAX)
div3 = np.uint8(div2)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

然后我为127应用了一些阈值并在其中找到轮廓.之后这些轮廓根据它们的面积进行过滤(没有关于该区域的具体信息,我将1-10的范围作为经验值).

ret, thresh = cv2.threshold(div3, 127,255, cv2.THRESH_BINARY_INV)
temp, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

res = np.zeros(gray.shape,np.uint8)

for cnt in contours:
    if 1.0 < cv2.contourArea(cnt) < 10.0:
        res = cv2.drawContours(res, …
Run Code Online (Sandbox Code Playgroud)

matlab opencv image-processing computer-vision scikit-image

10
推荐指数
1
解决办法
446
查看次数

计算边界框重叠的百分比,用于图像检测器评估

在大图像中测试物体检测算法时,我们根据为地面实况矩形给出的坐标检查我们检测到的边界框.

根据Pascal VOC挑战,有这样的:

如果预测的边界框与地面实况边界框重叠超过50%,则认为该边界框是正确的,否则边界框被认为是误报检测.多次检测会受到处罚.如果系统预测了几个与单个地面实况边界框重叠的边界框,则只有一个预测被认为是正确的,其他预测被认为是误报.

这意味着我们需要计算重叠的百分比.这是否意味着地面实况框被检测到的边界框覆盖了50%?或者50%的边界框被地面真值箱吸收了?

我已经搜索了但是我没有为此找到一个标准算法 - 这是令人惊讶的,因为我会认为这是计算机视觉中非常常见的东西.(我是新手).我错过了吗?有谁知道这类问题的标准算法是什么?

python bounding-box object-detection computer-vision scikit-image

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

如何使用Scikit-Image库从Python中的RGB图像中提取绿色通道?

我非常擅长skimage使用Python中的scikit-image()库进行图像处理(几分钟前开始!).我以前imread读过一个图像文件numpy.ndarray.该阵列是3维的,其中第三维的尺寸是3(即,对于图像的红色,绿色和蓝色分量中的每一个,一个).

rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)
Run Code Online (Sandbox Code Playgroud)

我试图将绿色通道提取为:

green_image = rgb_image[:,:,1]
Run Code Online (Sandbox Code Playgroud)

但是当我将这个图像矩阵写入输出文件时:

imsave("green_output_image.jpg",green_image)
Run Code Online (Sandbox Code Playgroud)

我得到的图像看起来并不真实!

python image image-processing scikit-image imread

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

内核似乎已经死了。它会自动重启

运行时:

from skimage import data
Run Code Online (Sandbox Code Playgroud)

在 jupyter notebook 中,我总是收到错误消息:“内核似乎已经死了。它将自动重新启动”

我使用:Anaconda 4.2.0(64 位)Python 3.5.2 scikit-image 0.12.3 np111py35_1

当我使用 python 2.7 内核运行笔记本时,它运行良好,没有错误。

所以我猜是兼容性问题?但是我需要使用 python 3.5,有什么建议吗?

python-3.x scikit-image anaconda jupyter-notebook

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

降噪并过滤图像

我正在进行牌照识别.我已经裁掉了盘子,但它非常模糊.因此,我无法拆分数字/字符并识别它.

这是我的形象:

在此输入图像描述

我试图通过使用scikit图像功能去噪它.

首先,导入库:

import cv2
from skimage import restoration
from skimage.filters import threshold_otsu, rank
from skimage.morphology import closing, square, disk
Run Code Online (Sandbox Code Playgroud)

然后,我读取图像并将其转换为灰度

image = cv2.imread("plate.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Run Code Online (Sandbox Code Playgroud)

我试着消除噪音:

denoise = restoration.denoise_tv_chambolle(image , weight=0.1)
thresh = threshold_otsu(denoise)
bw = closing(denoise  > thresh, square(2))
Run Code Online (Sandbox Code Playgroud)

我得到的是:

在此输入图像描述

如您所见,所有数字都混合在一起.因此,我无法将它们分开并逐一识别这些角色.

我期待的是这样的(我画它):

在此输入图像描述

我正在寻求帮助,我怎样才能更好地过滤图像?谢谢.

================================================== =================== 更新:

使用后skimage.morphology.erosion,我得到:

在此输入图像描述

python opencv image image-processing scikit-image

9
推荐指数
3
解决办法
5149
查看次数

使用Scikit-image从图像中提取属性

我一直在使用scikit-image对道路功能进行分类并获得一些成功.见下文:由scikit-image处理的图像.我无法进行下一步,即对功能进行分类.例如,假设这些特征位于框(600,800)和(1400,600)中.

我用来提取信息的代码是:

from skimage import io, segmentation as seg
color_image = io.imread(img)  
plt.rcParams['image.cmap'] = 'spectral'
labels = seg.slic(color_image, n_segments=6, compactness=4)
Run Code Online (Sandbox Code Playgroud)

目标是以下列形式提供表格:

Image, feature_type, starting_pixel, ending_pixel
001    a             (600, 600),     (1300, 700) 
002    b             (600, 600),     (1100, 700)
002    undefined     (700, 700),     (900, 800)
Run Code Online (Sandbox Code Playgroud)

feature_type 将基于颜色,理想情况下肩膀将是一种颜色,树木和刷子将是另一种颜色,等等.

如何提取我需要的数据?(即:scikit将图像分成不同的组件,我知道每个组件的位置.然后我可以将每个组件传递给分类器,分类器将识别每个组件是什么)谢谢!

python machine-learning computer-vision scikit-learn scikit-image

8
推荐指数
1
解决办法
1006
查看次数

在scikit-image中导入相对/绝对函数时出现问题

我正在尝试为scikit-image 提交PR,但我收到Travis-CI 错误:

  Traceback (most recent call last):
  File "doc/examples/edges/plot_canny.py", line 22, in <module>
    from skimage import feature
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/__init__.py", line 9, in <module>
    from .peak import peak_local_max
  File "/home/travis/build/scikit-image/scikit-image/skimage/feature/peak.py", line 3, in <module>
    from ..filters import rank_order
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/__init__.py", line 11, in <module>
    from ._frangi import frangi_filter, hessian_filter
  File "/home/travis/build/scikit-image/scikit-image/skimage/filters/_frangi.py", line 2, in <module>
    from skimage.feature import hessian_matrix, hessian_matrix_eigvals
ImportError: cannot import name hessian_matrix
Run Code Online (Sandbox Code Playgroud)

我想这可能是一个循环导入错误,但我不知道如何解决这个问题.我已经包含 frangi_filterhessian_filter进入过滤器的模块__init__.py.

我也尝试了相对导入,导致 …

python scikit-image

8
推荐指数
1
解决办法
306
查看次数

安装 scikit-image 的问题可能是由于 blosc

嗨,我正在尝试在 ubuntu 18.04 的虚拟环境中安装 scikit 映像。

它在尝试安装 imagecodecs 时失败,我尝试单独安装 imagecodecs,但它给出了相同的错误,这是由于 blosc 引起的。我单独安装了 blosc,但不知何故这仍然失败。

    /usr/include/python3.6m/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
     #warning "Using deprecated NumPy API, disable it by " \
      ^~~~~~~
    imagecodecs/_blosc.c:602:10: fatal error: blosc.h: No such file or directory
     #include "blosc.h"
              ^~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
Command "/home/xxxx/im_an/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-ijwkwo7f/imagecodecs/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-4xtori6c-record/install-record.txt --single-version-externally-managed --compile --install-headers …
Run Code Online (Sandbox Code Playgroud)

python installation scikit-image

8
推荐指数
1
解决办法
1055
查看次数

如何使用 scikit-image 在图像上写入文本?

我知道如何使用 OpenCV 和 PIL 来做到这一点。我不能在这个项目中使用 OpenCV,如果我使用 PIL,我必须在图像 PIL Image 和 numpy 数组之间进行转换。我不想那样做。我已经在使用 skimage 所以...

如何使用 skimage 在图像上写入文本?

我看过 skimage 绘制函数,但它们似乎只处理形状和线条而不处理文本。也许我正在搜索错误的单词,但我在文档中没有看到任何内容。

python computer-vision scikit-image

8
推荐指数
1
解决办法
3416
查看次数