Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
181
venv/Lib/site-packages/skimage/viewer/tests/test_plugins.py
Normal file
181
venv/Lib/site-packages/skimage/viewer/tests/test_plugins.py
Normal file
|
@ -0,0 +1,181 @@
|
|||
import numpy as np
|
||||
from skimage import util
|
||||
import skimage.data as data
|
||||
from skimage.filters.rank import median
|
||||
from skimage.morphology import disk
|
||||
from skimage.viewer import ImageViewer, has_qt
|
||||
from skimage.viewer.plugins.base import Plugin
|
||||
from skimage.viewer.widgets import Slider
|
||||
from skimage.viewer.plugins import (
|
||||
LineProfile, Measure, CannyPlugin, LabelPainter, Crop, ColorHistogram,
|
||||
PlotPlugin)
|
||||
|
||||
from skimage._shared import testing
|
||||
from skimage._shared.testing import (assert_equal, assert_allclose,
|
||||
assert_almost_equal)
|
||||
|
||||
|
||||
def setup_line_profile(image, limits='image'):
|
||||
viewer = ImageViewer(util.img_as_float(image))
|
||||
plugin = LineProfile(limits=limits)
|
||||
viewer += plugin
|
||||
return plugin
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_line_profile():
|
||||
""" Test a line profile using an ndim=2 image"""
|
||||
plugin = setup_line_profile(data.camera())
|
||||
line_image, scan_data = plugin.output()
|
||||
for inp in [line_image.nonzero()[0].size,
|
||||
line_image.sum() / line_image.max(),
|
||||
scan_data.size]:
|
||||
assert_equal(inp, 172)
|
||||
assert_equal(line_image.shape, (512, 512))
|
||||
assert_allclose(scan_data.max(), 0.9176, rtol=1e-3)
|
||||
assert_allclose(scan_data.mean(), 0.2812, rtol=1e-3)
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_line_profile_rgb():
|
||||
""" Test a line profile using an ndim=3 image"""
|
||||
plugin = setup_line_profile(data.chelsea(), limits=None)
|
||||
for i in range(6):
|
||||
plugin.line_tool._thicken_scan_line()
|
||||
line_image, scan_data = plugin.output()
|
||||
assert_equal(line_image[line_image == 128].size, 750)
|
||||
assert_equal(line_image[line_image == 255].size, 151)
|
||||
assert_equal(line_image.shape, (300, 451))
|
||||
assert_equal(scan_data.shape, (151, 3))
|
||||
assert_allclose(scan_data.max(), 0.772, rtol=1e-3)
|
||||
assert_allclose(scan_data.mean(), 0.4359, rtol=1e-3)
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_line_profile_dynamic():
|
||||
"""Test a line profile updating after an image transform"""
|
||||
image = data.coins()[:-50, :] # shave some off to make the line lower
|
||||
image = util.img_as_float(image)
|
||||
viewer = ImageViewer(image)
|
||||
|
||||
lp = LineProfile(limits='dtype')
|
||||
viewer += lp
|
||||
|
||||
line = lp.get_profiles()[-1][0]
|
||||
assert line.size == 129
|
||||
assert_almost_equal(np.std(viewer.image), 0.208, 3)
|
||||
assert_almost_equal(np.std(line), 0.229, 3)
|
||||
assert_almost_equal(np.max(line) - np.min(line), 0.725, 1)
|
||||
|
||||
viewer.image = util.img_as_float(
|
||||
median(util.img_as_ubyte(image), selem=disk(radius=3)))
|
||||
|
||||
line = lp.get_profiles()[-1][0]
|
||||
assert_almost_equal(np.std(viewer.image), 0.198, 3)
|
||||
assert_almost_equal(np.std(line), 0.220, 3)
|
||||
assert_almost_equal(np.max(line) - np.min(line), 0.639, 1)
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_measure():
|
||||
image = data.camera()
|
||||
viewer = ImageViewer(image)
|
||||
m = Measure()
|
||||
viewer += m
|
||||
|
||||
m.line_changed([(0, 0), (10, 10)])
|
||||
assert_equal(str(m._length.text), '14.1')
|
||||
assert_equal(str(m._angle.text[:5]), '135.0')
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_canny():
|
||||
image = data.camera()
|
||||
viewer = ImageViewer(image)
|
||||
c = CannyPlugin()
|
||||
viewer += c
|
||||
|
||||
canny_edges = viewer.show(False)
|
||||
viewer.close()
|
||||
edges = canny_edges[0][0]
|
||||
assert edges.sum() == 2846
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_label_painter():
|
||||
image = data.camera()
|
||||
moon = data.moon()
|
||||
viewer = ImageViewer(image)
|
||||
lp = LabelPainter()
|
||||
viewer += lp
|
||||
|
||||
assert_equal(lp.radius, 5)
|
||||
lp.label = 1
|
||||
assert_equal(str(lp.label), '1')
|
||||
lp.label = 2
|
||||
assert_equal(str(lp.paint_tool.label), '2')
|
||||
assert_equal(lp.paint_tool.radius, 5)
|
||||
lp._on_new_image(moon)
|
||||
assert_equal(lp.paint_tool.shape, moon.shape)
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_crop():
|
||||
image = data.camera()
|
||||
viewer = ImageViewer(image)
|
||||
c = Crop()
|
||||
viewer += c
|
||||
|
||||
c.crop((0, 100, 0, 100))
|
||||
assert_equal(viewer.image.shape, (101, 101))
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_color_histogram():
|
||||
image = util.img_as_float(data.colorwheel())
|
||||
viewer = ImageViewer(image)
|
||||
ch = ColorHistogram(dock='right')
|
||||
viewer += ch
|
||||
|
||||
assert_almost_equal(viewer.image.std(), 0.352, 3),
|
||||
ch.ab_selected((0, 100, 0, 100)),
|
||||
assert_almost_equal(viewer.image.std(), 0.325, 3)
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_plot_plugin():
|
||||
viewer = ImageViewer(data.moon())
|
||||
plugin = PlotPlugin(image_filter=lambda x: x)
|
||||
viewer += plugin
|
||||
|
||||
assert_equal(viewer.image, data.moon())
|
||||
plugin._update_original_image(data.coins())
|
||||
assert_equal(viewer.image, data.coins())
|
||||
viewer.close()
|
||||
|
||||
|
||||
@testing.skipif(not has_qt, reason="Qt not installed")
|
||||
def test_plugin():
|
||||
img = util.img_as_float(data.moon())
|
||||
viewer = ImageViewer(img)
|
||||
|
||||
def median_filter(img, radius=3):
|
||||
return median(
|
||||
util.img_as_ubyte(img), selem=disk(radius=radius))
|
||||
|
||||
plugin = Plugin(image_filter=median_filter)
|
||||
viewer += plugin
|
||||
|
||||
plugin += Slider('radius', 1, 5)
|
||||
|
||||
assert_almost_equal(np.std(viewer.image), 12.556, 3)
|
||||
|
||||
plugin.filter_image()
|
||||
|
||||
assert_almost_equal(np.std(viewer.image), 12.931, 3)
|
||||
|
||||
plugin.show()
|
||||
plugin.close()
|
||||
plugin.clean_up()
|
||||
img, _ = plugin.output()
|
||||
assert_equal(img, viewer.image)
|
Loading…
Add table
Add a link
Reference in a new issue