コード例 #1
0
def main():
    """Load image, apply histogram stretching and cumulative histogram
    equalization. Plot the results."""
    img = data.text()

    height, width = img.shape
    nb_pixels = height * width

    # apply histogram stretching
    gray_min = np.min(img)
    gray_max = np.max(img)
    img_hist_stretched = (img - gray_min) * (255 / (gray_max - gray_min))
    img_hist_stretched = img_hist_stretched.astype(np.uint8)

    # apply cumulative histogram equalization
    img_cumulative = np.zeros(img.shape, dtype=np.uint8)
    hist_cumulative = [0] * 256
    running_sum = 0
    hist, edges = np.histogram(img, 256, (0, 255))
    for i in range(256):
        count = hist[i]
        running_sum += count
        hist_cumulative[i] = running_sum / nb_pixels

    for i in range(256):
        img_cumulative[img == i] = int(256 * hist_cumulative[i])

    # plot
    plot_images_grayscale([img, img_hist_stretched, img_cumulative], [
        "Image", "Histogram stretched to 0-255",
        "Cumulative Histogram Equalization"
    ])
コード例 #2
0
def test_RGB(dtype):
    img = gaussian(data.text(), 1)
    imgR = np.zeros((img.shape[0], img.shape[1], 3), dtype=dtype)
    imgG = np.zeros((img.shape[0], img.shape[1], 3), dtype=dtype)
    imgRGB = np.zeros((img.shape[0], img.shape[1], 3), dtype=dtype)
    imgR[:, :, 0] = img
    imgG[:, :, 1] = img
    imgRGB[:, :, :] = img[:, :, None]
    r = np.linspace(136, 50, 100)
    c = np.linspace(5, 424, 100)
    init = np.array([r, c]).T
    snake = active_contour(imgR, init, boundary_condition='fixed',
                           alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    float_dtype = _supported_float_type(dtype)
    assert snake.dtype == float_dtype
    refr = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    refc = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
    snake = active_contour(imgG, init, boundary_condition='fixed',
                           alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    assert snake.dtype == float_dtype
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
    snake = active_contour(imgRGB, init, boundary_condition='fixed',
                           alpha=0.1, beta=1.0, w_line=-5/3., w_edge=0,
                           gamma=0.1)
    assert snake.dtype == float_dtype
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
コード例 #3
0
def test_RGB():
    img = gaussian(data.text(), 1)
    imgR = np.zeros((img.shape[0], img.shape[1], 3))
    imgG = np.zeros((img.shape[0], img.shape[1], 3))
    imgRGB = np.zeros((img.shape[0], img.shape[1], 3))
    imgR[:, :, 0] = img
    imgG[:, :, 1] = img
    imgRGB[:, :, :] = img[:, :, None]
    x = np.linspace(5, 424, 100)
    y = np.linspace(136, 50, 100)
    init = np.array([x, y]).T
    snake = active_contour(imgR, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    refy = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
    snake = active_contour(imgG, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
    snake = active_contour(imgRGB, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5/3., w_edge=0, gamma=0.1)
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #4
0
def main():
    """Load image, apply histogram stretching and cumulative histogram
    equalization. Plot the results."""
    img = data.text()

    height, width = img.shape
    nb_pixels = height * width

    # apply histogram stretching
    gray_min = np.min(img)
    gray_max = np.max(img)
    img_hist_stretched = (img - gray_min) * (255 / (gray_max - gray_min))
    img_hist_stretched = img_hist_stretched.astype(np.uint8)

    # apply cumulative histogram equalization
    img_cumulative = np.zeros(img.shape, dtype=np.uint8)
    hist_cumulative = [0] * 256
    running_sum = 0
    hist, edges = np.histogram(img, 256, (0, 255))
    for i in range(256):
        count = hist[i]
        running_sum += count
        hist_cumulative[i] = running_sum / nb_pixels

    for i in range(256):
        img_cumulative[img == i] = int(256 * hist_cumulative[i])

    # plot
    plot_images_grayscale(
        [img, img_hist_stretched, img_cumulative],
        ["Image", "Histogram stretched to 0-255", "Cumulative Histogram Equalization"]
    )
コード例 #5
0
def test_RGB():
    img = gaussian(data.text(), 1)
    imgR = np.zeros((img.shape[0], img.shape[1], 3))
    imgG = np.zeros((img.shape[0], img.shape[1], 3))
    imgRGB = np.zeros((img.shape[0], img.shape[1], 3))
    imgR[:, :, 0] = img
    imgG[:, :, 1] = img
    imgRGB[:, :, :] = img[:, :, None]
    x = np.linspace(5, 424, 100)
    y = np.linspace(136, 50, 100)
    init = np.array([x, y]).T
    snake = active_contour(imgR, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    refy = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
    snake = active_contour(imgG, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
    snake = active_contour(imgRGB, init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5/3., w_edge=0, gamma=0.1)
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #6
0
def test_free_reference():
    img = data.text()
    x = np.linspace(5, 424, 100)
    y = np.linspace(70, 40, 100)
    init = np.array([x, y]).T
    snake = active_contour(gaussian(img, 3), init, bc='free',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [10, 13, 16, 19, 23, 26, 29, 32, 36, 39]
    refy = [76, 76, 75, 74, 73, 72, 71, 70, 69, 69]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #7
0
def test_fixed_reference():
    img = data.text()
    x = np.linspace(5, 424, 100)
    y = np.linspace(136, 50, 100)
    init = np.array([x, y]).T
    snake = active_contour(gaussian(img, 1), init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    refy = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #8
0
def test_free_reference():
    img = data.text()
    x = np.linspace(5, 424, 100)
    y = np.linspace(70, 40, 100)
    init = np.array([x, y]).T
    snake = active_contour(gaussian(img, 3), init, bc='free',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [10, 13, 16, 19, 23, 26, 29, 32, 36, 39]
    refy = [76, 76, 75, 74, 73, 72, 71, 70, 69, 69]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #9
0
def test_fixed_reference():
    img = data.text()
    x = np.linspace(5, 424, 100)
    y = np.linspace(136, 50, 100)
    init = np.array([x, y]).T
    snake = active_contour(gaussian(img, 1), init, bc='fixed',
            alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    refx = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    refy = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refx)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refy)
コード例 #10
0
def test_triangle_float_images():
    text = data.text()
    int_bins = text.max() - text.min() + 1
    # Set nbins to match the uint case and threshold as float.
    assert(round(threshold_triangle(
        text.astype(np.float), nbins=int_bins)) == 104)
    # Check that rescaling image to floats in unit interval is equivalent.
    assert(round(threshold_triangle(text / 255., nbins=int_bins) * 255) == 104)
    # Repeat for inverted image.
    assert(round(threshold_triangle(
        np.invert(text).astype(np.float), nbins=int_bins)) == 151)
    assert (round(threshold_triangle(
        np.invert(text) / 255., nbins=int_bins) * 255) == 151)
コード例 #11
0
def test_free_reference(dtype):
    img = data.text()
    r = np.linspace(70, 40, 100)
    c = np.linspace(5, 424, 100)
    init = np.array([r, c]).T
    img_smooth = gaussian(img, 3).astype(dtype, copy=False)
    snake = active_contour(img_smooth, init, boundary_condition='free',
                           alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    assert snake.dtype == _supported_float_type(dtype)
    refr = [76, 76, 75, 74, 73, 72, 71, 70, 69, 69]
    refc = [10, 13, 16, 19, 23, 26, 29, 32, 36, 39]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
コード例 #12
0
def test_fixed_reference(dtype):
    img = data.text()
    r = np.linspace(136, 50, 100)
    c = np.linspace(5, 424, 100)
    init = np.array([r, c]).T
    image_smooth = gaussian(img, 1).astype(dtype, copy=False)
    snake = active_contour(image_smooth, init, boundary_condition='fixed',
                           alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)
    assert snake.dtype == _supported_float_type(dtype)
    refr = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    refc = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
コード例 #13
0
def test_triangle_float_images():
    text = data.text()
    int_bins = text.max() - text.min() + 1
    # Set nbins to match the uint case and threshold as float.
    assert(round(threshold_triangle(
        text.astype(np.float), nbins=int_bins)) == 104)
    # Check that rescaling image to floats in unit interval is equivalent.
    assert(round(threshold_triangle(text / 255., nbins=int_bins) * 255) == 104)
    # Repeat for inverted image.
    assert(round(threshold_triangle(
        np.invert(text).astype(np.float), nbins=int_bins)) == 151)
    assert (round(threshold_triangle(
        np.invert(text) / 255., nbins=int_bins) * 255) == 151)
コード例 #14
0
def active_contour_example():
    img = data.astronaut()
    img = rgb2gray(img)

    s = np.linspace(0, 2 * np.pi, 400)
    x = 220 + 100 * np.cos(s)
    y = 100 + 100 * np.sin(s)
    init = np.array([x, y]).T

    snake = active_contour(gaussian(img, 3),
                           init,
                           alpha=0.015,
                           beta=10,
                           gamma=0.001)

    fig, ax = plt.subplots(figsize=(7, 7))
    ax.imshow(img, cmap=plt.cm.gray)
    ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
    ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
    ax.set_xticks([]), ax.set_yticks([])
    ax.axis([0, img.shape[1], img.shape[0], 0])

    #--------------------
    img = data.text()

    x = np.linspace(5, 424, 100)
    y = np.linspace(136, 50, 100)
    init = np.array([x, y]).T

    snake = active_contour(gaussian(img, 1),
                           init,
                           bc='fixed',
                           alpha=0.1,
                           beta=1.0,
                           w_line=-5,
                           w_edge=0,
                           gamma=0.1)

    fig, ax = plt.subplots(figsize=(9, 5))
    ax.imshow(img, cmap=plt.cm.gray)
    ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
    ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
    ax.set_xticks([]), ax.set_yticks([])
    ax.axis([0, img.shape[1], img.shape[0], 0])

    plt.show()
コード例 #15
0
def line_detect():
    im = data.text()
    seg = im < 100
    r = transform.radon(seg)
    rho, theta = np.unravel_index(np.argmax(r), r.shape)
    rho = rho - r.shape[0] / 2
    x = np.int(rho * np.cos((theta + 90) * np.pi / 180) + im.shape[0] / 2)
    y = np.int(rho * np.sin((theta + 90) * np.pi / 180) + im.shape[1] / 2)
    dx = np.cos((theta) * np.pi / 180)
    dy = np.sin((theta) * np.pi / 180)

    l = 1000
    res = im.copy()
    cv2.line(res, (np.int(y - dy * l), np.int(x - dx * l)),
             (np.int(y + dy * l), np.int(x + dx * l)), 255, 2)

    io.imsave('text.png', im)
    io.imsave('text-line.png', res)
コード例 #16
0
def test_fixed_reference():
    img = data.text()
    r = np.linspace(136, 50, 100)
    c = np.linspace(5, 424, 100)
    init = np.array([r, c]).T
    snake = active_contour(gaussian(img, 1),
                           init,
                           boundary_condition='fixed',
                           alpha=0.1,
                           beta=1.0,
                           w_line=-5,
                           w_edge=0,
                           gamma=0.1,
                           coordinates='rc')
    refr = [136, 135, 134, 133, 132, 131, 129, 128, 127, 125]
    refc = [5, 9, 13, 17, 21, 25, 30, 34, 38, 42]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
コード例 #17
0
def test_free_reference():
    img = data.text()
    r = np.linspace(70, 40, 100)
    c = np.linspace(5, 424, 100)
    init = np.array([r, c]).T
    snake = active_contour(gaussian(img, 3),
                           init,
                           boundary_condition='free',
                           alpha=0.1,
                           beta=1.0,
                           w_line=-5,
                           w_edge=0,
                           gamma=0.1,
                           coordinates='rc')
    refr = [76, 76, 75, 74, 73, 72, 71, 70, 69, 69]
    refc = [10, 13, 16, 19, 23, 26, 29, 32, 36, 39]
    assert_equal(np.array(snake[:10, 0], dtype=np.int32), refr)
    assert_equal(np.array(snake[:10, 1], dtype=np.int32), refc)
コード例 #18
0
ファイル: features.py プロジェクト: adamgreig/iib
def profile():
    import time
    from iib.simulation import CLContext
    from skimage import io, data, transform
    gs, wgs = 256, 16

    # Load some test data
    r = transform.resize
    sigs = np.empty((gs, gs, 4), np.float32)
    sigs[:, :, 0] = r(data.coins().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 1] = r(data.camera().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 2] = r(data.text().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 3] = r(data.checkerboard().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 2] = r(io.imread("../scoring/corpus/rds/turing_001.png",
                                as_grey=True), (gs, gs))
    sigs[:, :, 3] = io.imread("../scoring/corpus/synthetic/blobs.png",
                              as_grey=True)
    sigs = sigs.reshape(gs*gs*4)

    # Set up OpenCL
    ctx = cl.create_some_context(interactive=False)
    queue = cl.CommandQueue(ctx)
    mf = cl.mem_flags
    ifmt_f = cl.ImageFormat(cl.channel_order.RGBA, cl.channel_type.FLOAT)
    bufi = cl.Image(ctx, mf.READ_ONLY, ifmt_f, (gs, gs))
    cl.enqueue_copy(queue, bufi, sigs, origin=(0, 0), region=(gs, gs))
    clctx = CLContext(ctx, queue, ifmt_f, gs, wgs)

    # Compile the kernels
    feats = cl.Program(ctx, features_cl()).build()
    rdctn = cl.Program(ctx, reduction.reduction_sum_cl()).build()
    blur2 = cl.Program(ctx, convolution.gaussian_cl([np.sqrt(2.0)]*4)).build()
    blur4 = cl.Program(ctx, convolution.gaussian_cl([np.sqrt(4.0)]*4)).build()

    iters = 500
    t0 = time.time()
    for i in range(iters):
        get_features(clctx, feats, rdctn, blur2, blur4, bufi)
    print((time.time() - t0)/iters)
コード例 #19
0
        imageio.imwrite(str(method_path) + '_out.png', output)

        return self

elements = {
    'disk(5)': morphology.disk(5),
}
defaults = {
    'disk': morphology.disk(5),
    'image_name': 'text_inverted',
    'geometry': (0, 0, 90, 160), # row, col, rows, columns
}

# Alias some image names
data.blank = lambda: numpy.zeros(geo[2:4])
data.text_inverted = lambda: util.invert(data.text())
data.text_bw = lambda: data.bw_text()
data.text_bw_inverted = lambda: util.invert(data.bw_text())

with open('_data/categories.yaml') as stream:
    try:
        categories = yaml.safe_load(stream)
    except yaml.YAMLError as exc:
        print(exc)

def my_import (components):
    the_module = __import__('.'.join(components))
    for comp in components[1:]:
        the_module = getattr(the_module, comp)
    return the_module
コード例 #20
0
# 线性拉伸对比度的例子
# http://scikit-image.org/docs/dev/user_guide/transforming_image_data.html#contrast-and-exposure
#
# Jianjiang Feng
# 2018.7.8

from skimage import data
from skimage import exposure
import matplotlib.pyplot as plt
import numpy as np

I = data.text()
#I = data.moon() # moon的极值是0和255
print('I: Min %d, Max %d' % (I.min(), I.max()))

I2 = exposure.rescale_intensity(I)
print('I2: Min %d, Max %d' % (I2.min(), I2.max()))

v_min, v_max = np.percentile(I, (0.2, 99.8))
print('I: PMin %d, PMax %d' % (v_min, v_max))

I3 = exposure.rescale_intensity(I, in_range=(v_min, v_max))
print('I3: Min %d, Max %d' % (I3.min(), I3.max()))

plt.figure(1)
plt.subplot(1, 3, 1)
plt.imshow(I, cmap='gray')
plt.subplot(1, 3, 2)
plt.imshow(I2, cmap='gray')
plt.subplot(1, 3, 3)
plt.imshow(I3, cmap='gray')
コード例 #21
0
    fig = plt.figure(figsize=(7, 7))
    ax = fig.add_subplot(111)
    plt.gray()
    ax.imshow(img)
    ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
    ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
    ax.set_xticks([]), ax.set_yticks([])
    ax.axis([0, img.shape[1], img.shape[0], 0])

######################################################################
# Here we initialize a straight line between two points, `(5, 136)` and
# `(424, 50)`, and require that the spline has its end points there by giving
# the boundary condition `bc='fixed'`. We furthermore make the algorithm
# search for dark lines by giving a negative `w_line` value.

img = data.text()

x = np.linspace(5, 424, 100)
y = np.linspace(136, 50, 100)
init = np.array([x, y]).T

if new_scipy:
    snake = active_contour(gaussian(img, 1), init, bc='fixed',
                           alpha=0.1, beta=1.0, w_line=-5, w_edge=0, gamma=0.1)

    fig = plt.figure(figsize=(9, 5))
    ax = fig.add_subplot(111)
    plt.gray()
    ax.imshow(img)
    ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
    ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
コード例 #22
0
ファイル: test_thresholding.py プロジェクト: grlee77/cucim
def test_triangle_uint_images():
    text = cp.array(data.text())
    assert threshold_triangle(cp.invert(text)) == 151
    assert threshold_triangle(text) == 104
    assert threshold_triangle(coinsd) == 80
    assert threshold_triangle(cp.invert(coinsd)) == 175
コード例 #23
0
"""
This example illustrates the use of the horizontal Sobel filter, to compute
horizontal gradients.
"""

from skimage import data, filter
import matplotlib.pyplot as plt

text = data.text()
hsobel_text = filter.hsobel(text)

plt.figure(figsize=(12, 3))

plt.subplot(121)
plt.imshow(text, cmap='gray', interpolation='nearest')
plt.axis('off')
plt.subplot(122)
plt.imshow(hsobel_text, cmap='jet', interpolation='nearest')
plt.axis('off')
plt.tight_layout()
plt.show()
コード例 #24
0
from skimage import data, transform

import numpy as np
import matplotlib.pyplot as plt


image = data.text()

plt.imshow(image, cmap=plt.cm.gray)

target = np.array(plt.ginput(4))
source = np.array([(0, 0), (0, 50), (300, 50), (300, 0)])

plt.close()

pt = transform.ProjectiveTransform()
pt.estimate(source, target)

warped = transform.warp(image, pt, output_shape=(50, 300))


f, (ax0, ax1) = plt.subplots(1, 2)
ax0.imshow(image, cmap=plt.cm.gray)
ax1.imshow(warped, cmap=plt.cm.gray)
plt.show()
コード例 #25
0
# Фильтер Собеля для детектирования горизонтальных линий
import numpy as np
from skimage import morphology
from skimage import exposure
from matplotlib import pyplot as plt
from skimage import data
from skimage import filters

text = data.text()
hsobel_text = filters.sobel_h(text)

plt.figure()
plt.imshow(text, cmap='gray')
plt.show()

plt.figure()
plt.imshow(hsobel_text, cmap='gray')
plt.show()

# Нелокальные фильтры используют все изображение или
# его часть для изменения интенсивности в одном пикселе.
# В примере показано изменение контрастности в областях.

camera = data.camera()
camera_equalized = exposure.equalize_hist(camera)  # выравнивание гистограммы
plt.figure()
plt.imshow(camera, cmap='gray')
plt.show()

plt.figure()
plt.imshow(camera_equalized, cmap='gray')
コード例 #26
0
ファイル: features.py プロジェクト: adamgreig/iib
def test():
    import matplotlib.pyplot as plt
    from skimage import io, data, transform
    from iib.simulation import CLContext

    gs, wgs = 256, 16

    # Load some test data
    r = transform.resize
    sigs = np.empty((gs, gs, 4), np.float32)
    sigs[:, :, 0] = r(data.coins().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 1] = r(data.camera().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 2] = r(data.text().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 3] = r(data.checkerboard().astype(np.float32) / 255.0, (gs, gs))
    sigs[:, :, 2] = r(io.imread("../scoring/corpus/rds/turing_001.png",
                                as_grey=True), (gs, gs))
    sigs[:, :, 3] = io.imread("../scoring/corpus/synthetic/blobs.png",
                              as_grey=True)
    #sq = np.arange(256).astype(np.float32).reshape((16, 16)) / 255.0
    #sigs[:, :, 0] = np.tile(sq, (16, 16))
    sigs = sigs.reshape(gs*gs*4)

    # Set up OpenCL
    ctx = cl.create_some_context(interactive=False)
    queue = cl.CommandQueue(ctx)
    mf = cl.mem_flags
    ifmt_f = cl.ImageFormat(cl.channel_order.RGBA, cl.channel_type.FLOAT)
    bufi = cl.Image(ctx, mf.READ_ONLY, ifmt_f, (gs, gs))
    cl.enqueue_copy(queue, bufi, sigs, origin=(0, 0), region=(gs, gs))
    clctx = CLContext(ctx, queue, ifmt_f, gs, wgs)

    # Compile the kernels
    feats = cl.Program(ctx, features_cl()).build()
    rdctn = cl.Program(ctx, reduction.reduction_sum_cl()).build()
    blur2 = cl.Program(ctx, convolution.gaussian_cl([np.sqrt(2.0)]*4)).build()
    blur4 = cl.Program(ctx, convolution.gaussian_cl([np.sqrt(4.0)]*4)).build()

    entropy = get_entropy(clctx, feats, rdctn, bufi)
    print("Average entropy:", entropy)

    variance = get_variance(clctx, feats, rdctn, bufi)
    print("Variance:", variance)

    edges = get_edges(clctx, feats, rdctn, blur4, bufi, summarise=False)
    edge_counts = get_edges(clctx, feats, rdctn, blur4, bufi)
    print("Edge pixel counts:", edge_counts)

    blobs = get_blobs(clctx, feats, rdctn, blur2, bufi, summarise=False)

    features = get_features(clctx, feats, rdctn, blur2, blur4, bufi)
    print("Feature vector:")
    print(features)

    # Plot the edges and blobs
    for i in range(4):
        plt.subplot(4, 3, i*3+1)
        img = sigs.reshape((gs, gs, 4))[:, :, i]
        plt.imshow(img, cmap="gray")
        plt.xticks([])
        plt.yticks([])

        plt.subplot(4, 3, i*3+2)
        img = edges.reshape((gs, gs, 4))[:, :, i]
        plt.imshow(img, cmap="gray")
        plt.xticks([])
        plt.yticks([])

        ax = plt.subplot(4, 3, i*3+3)
        img = sigs.reshape((gs, gs, 4))[:, :, i]
        plt.imshow(img, cmap="gray")
        plt.xticks([])
        plt.yticks([])
        for j in range(len(blobs)):
            sblobs = blobs[j]
            s = 2**(j+1)
            r = np.sqrt(2.0) * s
            im = sblobs[:, :, i]
            posns = np.transpose(im.nonzero()) * 2**(j+1)
            for xy in posns:
                circ = plt.Circle((xy[1], xy[0]), r, color="green", fill=False)
                ax.add_patch(circ)
    plt.show()
コード例 #27
0
from matplotlib import pyplot as plt

from skimage import data, img_as_float
from skimage.feature import harris


def plot_harris_points(image, filtered_coords):
    """ plots corners found in image"""

    plt.imshow(image)
    y, x = np.transpose(filtered_coords)
    plt.plot(x, y, 'b.')
    plt.axis('off')

# display results
plt.figure(figsize=(8, 3))
im_lena = img_as_float(data.lena())
im_text = img_as_float(data.text())

filtered_coords = harris(im_lena, min_distance=4)

plt.axes([0, 0, 0.3, 0.95])
plot_harris_points(im_lena, filtered_coords)

filtered_coords = harris(im_text, min_distance=4)

plt.axes([0.2, 0, 0.77, 1])
plot_harris_points(im_text, filtered_coords)

plt.show()
コード例 #28
0
def normalize_img(img):
    img /= np.max(img)
    img = np.ceil(img * 255)
    return img


def exponential_trans(img):
    for row in range(img.shape[0]):
        for column in range(img.shape[1]):
            img[row][column] = math.exp(img[row][column])

    return img


image_teste = data.text().astype(float)
exp_image = exponential_trans(image_teste.copy())
plt.imshow(exp_image, cmap='gray')


def potential_trans(img, gamma):
    for row in range(img.shape[0]):
        for column in range(img.shape[1]):
            img[row][column] = img[row][column]**gamma

    return normalize_img(img)


image2 = data.coins()
pot_image = potential_trans(image2.copy(), 0.2)
plt.imshow(pot_image, cmap='gray')
コード例 #29
0
==================================

Demo of a CollectionViewer for viewing collections of images with the
`autolevel` rank filter connected as a plugin.

"""
from skimage import data
from skimage.filters import rank
from skimage.morphology import disk

from skimage.viewer import CollectionViewer
from skimage.viewer.widgets import Slider
from skimage.viewer.plugins.base import Plugin


# Wrap autolevel function to make the disk size a filter argument.
def autolevel(image, disk_size):
    return rank.autolevel(image, disk(disk_size))


img_collection = [data.camera(), data.coins(), data.text()]

plugin = Plugin(image_filter=autolevel)
plugin += Slider('disk_size', 2, 8, value_type='int')
plugin.name = "Autolevel"

viewer = CollectionViewer(img_collection)
viewer += plugin

viewer.show()
コード例 #30
0
#Program to get default images in scikit-image

from skimage import data
from skimage import io

#Get the camera image
img_camera = data.camera()

#Get an image with handwritten text
img_text = data.text()

io.show(img_text)
'''
 File "skimage_data.py", line 12, in <module>
    io.show(img_text)
TypeError: show() takes 0 positional arguments but 1 was given
'''
コード例 #31
0
from skimage import data, img_as_float
from skimage.feature import harris


def plot_harris_points(image, filtered_coords):
    """ plots corners found in image"""

    plt.imshow(image)
    y, x = np.transpose(filtered_coords)
    plt.plot(x, y, 'b.')
    plt.axis('off')


# display results
plt.figure(figsize=(8, 3))
im_lena = img_as_float(data.lena())
im_text = img_as_float(data.text())

filtered_coords = harris(im_lena, min_distance=4)

plt.axes([0, 0, 0.3, 0.95])
plot_harris_points(im_lena, filtered_coords)

filtered_coords = harris(im_text, min_distance=4)

plt.axes([0.2, 0, 0.77, 1])
plot_harris_points(im_text, filtered_coords)

plt.show()
コード例 #32
0
ファイル: hough_explorer.py プロジェクト: tuxkp/ay250
        canny_kwargs = dict([(k, kwargs.pop(k)) for k in canny_keys])
        hough_kwargs = kwargs
        edges = canny(image, **canny_kwargs)
        lines = probabilistic_hough(edges, **hough_kwargs)
        self._lines = lines
        return edges

    def display_filtered_image(self, edges):
        self.overlay = edges
        if hasattr(self, '_hough_lines'):
            self.image_viewer.ax.collections.remove(self._hough_lines)
        self._hough_lines = mcoll.LineCollection(self._lines, colors='r')
        self.image_viewer.ax.add_collection(self._hough_lines)
        self.image_viewer.redraw()

image = data.text()

# Note: ImageViewer must be called before Plugin b/c it starts the event loop.
viewer = ImageViewer(image)
# You can create a UI for a filter just by passing a filter function...
plugin = HoughPlugin()
plugin += Slider('sigma', 0, 5, value=1, update_on='release')
plugin += Slider('low threshold', 0, 255, update_on='release')
plugin += Slider('high threshold', 0, 255, update_on='release')
plugin += Slider('threshold', 0, 255, update_on='release')
plugin += Slider('line length', 0, 100, update_on='release')
plugin += Slider('line gap', 0, 20, update_on='release')
# Finally, attach the plugin to the image viewer.
viewer += plugin
viewer.show()
コード例 #33
0
@author: jsaavedr
Adaptive Threhsolding
'''

import matplotlib.pyplot as plt
import skimage.filters as filters
import skimage.data as images
import numpy as np
import utils
import pai_io

if __name__ == '__main__' :
    
    #filename = '../images/gray/car_1.png'
    #image=pai_io.imread(filename, as_gray = True)
    image = images.text()    
    print(image.shape)    
    #th_otsu = basis.get_threshold_otsu(image)
    th_adaptive = filters.threshold_local(image, block_size = 21, offset = 15)
    th_niblack = filters.threshold_niblack(image, window_size = 21, k=0.2)
    th_sauvola = filters.threshold_sauvola(image, window_size = 21, k=0.2)
    #bin_image_otsu = basis.threshold(image, th_otsu)
    bin_image_adaptive = np.uint8(image > th_adaptive)
    bin_image_niblack = np.uint8(image > th_niblack)
    bin_image_sauvola = np.uint8(image > th_sauvola)
    fig, xs = plt.subplots(1,3)
    for i in range(3):
        xs[i].set_axis_off()
    xs[0].imshow(bin_image_adaptive*255, cmap = 'gray', vmin = 0, vmax = 255)
    xs[0].set_title('Local')
    xs[1].imshow(bin_image_niblack*255, cmap = 'gray', vmin = 0, vmax = 255)
コード例 #34
0
def test_triangle_uint_images():
    assert (threshold_triangle(np.invert(data.text())) == 151)
    assert (threshold_triangle(data.text()) == 104)
    assert (threshold_triangle(data.coins()) == 80)
    assert (threshold_triangle(np.invert(data.coins())) == 175)
コード例 #35
0
==================================

Demo of a CollectionViewer for viewing collections of images with the
`autolevel` rank filter connected as a plugin.

"""
from skimage import data
from skimage.filter import rank
from skimage.morphology import disk

from skimage.viewer import CollectionViewer
from skimage.viewer.widgets import Slider
from skimage.viewer.plugins.base import Plugin


# Wrap autolevel function to make the disk size a filter argument.
def autolevel(image, disk_size):
    return rank.autolevel(image, disk(disk_size))


img_collection = [data.camera(), data.coins(), data.text()]

plugin = Plugin(image_filter=autolevel)
plugin += Slider("disk_size", 2, 8, value_type="int")
plugin.name = "Autolevel"

viewer = CollectionViewer(img_collection)
viewer += plugin

viewer.show()
コード例 #36
0
def test_triangle_uint_images():
    assert(threshold_triangle(np.invert(data.text())) == 151)
    assert(threshold_triangle(data.text()) == 104)
    assert(threshold_triangle(data.coins()) == 80)
    assert(threshold_triangle(np.invert(data.coins())) == 175)
コード例 #37
0
Created on Mon Aug 27 17:00:10 2018
Last Updated on Tue Aug 28 16:01:10 2018

@author: bhavani
"""

from skimage import io
img = io.imread("image.png")
io.imshow("image.png")
#io.show()
""" Writing or Saving an Image"""
io.imsave("new_image.png", img)
""" Data Module provides some standard test images """
from skimage import data
io.imshow(data.camera())
io.imshow(data.text())
io.show()
"""COlor module Contains methods to convert image from One to another color"""

from skimage import color
img = io.imread("BusinessCard.JPEG")
io.imshow("BusinessCard.JPEG")
gray = color.rgb2gray(img)
io.imshow(gray)
io.show()
io.imsave("Gray_BusinessCard.png", gray)

#Convert RGB to HSV
img = data.astronaut()
img_hsv = color.rgb2hsv(img)
io.imshow(img_hsv)
コード例 #38
0
ファイル: test_data.py プロジェクト: yukoba/scikit-image
def test_text():
    """ Test that "text" image can be loaded. """
    data.text()
コード例 #39
0
def test_triangle_images():
    assert threshold_triangle(np.invert(data.text())) == 151
    assert threshold_triangle(data.text()) == 104
    assert threshold_triangle(data.coins()) == 80
    assert threshold_triangle(np.invert(data.coins())) == 175