Exemplo n.º 1
0
    def __init__(self):
        super(Root, self).__init__()
        self.title("GÖRÜNTÜ İŞLEME")
        self.minsize(500, 700)
        self.img = data.coins()
        self.img_gray = data.coins()
        self.retina = data.retina()
        self.moon = data.moon()
        self.horse = data.horse()
        self.camera = data.camera()
        self.width = 50
        self.imageGlobal = data.retina()
        self.imageGlobal = cv2.cvtColor(self.imageGlobal, cv2.COLOR_BGR2GRAY)

        self.labelFrame = tk.LabelFrame(self, text="DOSYA AÇ")
        self.labelFrame.grid(column=0, row=1, padx=20, pady=20)

        self.filterFrame = tk.LabelFrame(self, text="FİLTRELER")
        self.filterFrame.grid(column=0, row=2, padx=20, pady=20)

        self.histogramFrame = tk.LabelFrame(self, text="HİSTOGRAM EŞİTLEME")
        self.histogramFrame.grid(column=0, row=3, padx=20, pady=20)

        self.transformFrame = tk.LabelFrame(self, text="DÖNÜŞTÜRME İŞLEMLERİ")
        self.transformFrame.grid(column=0, row=4, padx=20, pady=20)

        self.videoFrame = tk.LabelFrame(self, text="VİDEO FİLTRESİ")
        self.videoFrame.grid(column=0, row=5, padx=20, pady=20)

        self.intensityFrame = tk.LabelFrame(self, text="YOĞUNLUK İŞLEMLERİ")
        self.intensityFrame.grid(column=1, row=4, padx=20, pady=20)

        self.morphologyFrame = tk.LabelFrame(self, text="MORFOLOJİK İŞLEMLER")
        self.morphologyFrame.grid(column=1, row=3, padx=20, pady=20)
        
        self.activeFrame = tk.LabelFrame(self, text="ACTİVE CONTOUR")
        self.activeFrame.grid(column=1, row=1, padx=20, pady=20)
        
        self.socialFrame = tk.LabelFrame(self, text="SOSYAL MEDYA EFEKTİ")
        self.socialFrame.grid(column=1, row=2, padx=20, pady=20)

        self.upload_image_button()
        self.filterButton()
        self.histogramButton()
        self.transformButton()
        self.videoButton()
        self.intensityButton()
        self.morphologyButton()
        self.activeContourButton()
        self.socialButton()
Exemplo n.º 2
0
    def setup(self):
        retina = color.rgb2gray(data.retina())
        t0, _ = filters.threshold_multiotsu(retina, classes=3)
        mask = (retina > t0)
        vessels = filters.sato(retina, sigmas=range(1, 10)) * mask
        thresholded = filters.apply_hysteresis_threshold(vessels, 0.01, 0.03)
        labeled = ndi.label(thresholded)[0]
        largest_nonzero_label = np.argmax(np.bincount(labeled[labeled > 0]))
        binary = (labeled == largest_nonzero_label)
        self.skeleton = morphology.skeletonize(binary)

        labeled2 = ndi.label(thresholded[::2, ::2])[0]
        largest_nonzero_label2 = np.argmax(np.bincount(labeled2[labeled2 > 0]))
        binary2 = (labeled2 == largest_nonzero_label2)
        small_skeleton = morphology.skeletonize(binary2)
        self.g, self.n = graph.pixel_graph(small_skeleton, connectivity=2)
Exemplo n.º 3
0
def test_border_management():
    img = rgb2gray(retina()[300:500, 700:900])
    out = frangi(img, sigmas=[1])

    full_std = out.std()
    full_mean = out.mean()
    inside_std = out[4:-4, 4:-4].std()
    inside_mean = out[4:-4, 4:-4].mean()
    border_std = np.stack(
        [out[:4, :], out[-4:, :], out[:, :4].T, out[:, -4:].T]).std()
    border_mean = np.stack(
        [out[:4, :], out[-4:, :], out[:, :4].T, out[:, -4:].T]).mean()

    assert abs(full_std - inside_std) < 1e-7
    assert abs(full_std - border_std) < 1e-7
    assert abs(inside_std - border_std) < 1e-7
    assert abs(full_mean - inside_mean) < 1e-7
    assert abs(full_mean - border_mean) < 1e-7
    assert abs(inside_mean - border_mean) < 1e-7
Exemplo n.º 4
0
def test_border_management(func, tol):
    img = rgb2gray(retina()[300:500, 700:900])
    out = func(img, sigmas=[1], mode='reflect')

    full_std = out.std()
    full_mean = out.mean()
    inside_std = out[4:-4, 4:-4].std()
    inside_mean = out[4:-4, 4:-4].mean()
    border_std = np.stack(
        [out[:4, :], out[-4:, :], out[:, :4].T, out[:, -4:].T]).std()
    border_mean = np.stack(
        [out[:4, :], out[-4:, :], out[:, :4].T, out[:, -4:].T]).mean()

    assert abs(full_std - inside_std) < tol
    assert abs(full_std - border_std) < tol
    assert abs(inside_std - border_std) < tol
    assert abs(full_mean - inside_mean) < tol
    assert abs(full_mean - border_mean) < tol
    assert abs(inside_mean - border_mean) < tol
Exemplo n.º 5
0
    def __init__(self):
        super(Root, self).__init__()
        self.title("Image Processor")
        self.minsize(640, 400)
        self.img = data.coins()
        self.img_gray = data.coins()
        self.retina = data.retina()
        self.moon = data.moon()
        self.horse = data.horse()
        self.camera = data.camera()
        self.width = 50

        self.labelFrame = tk.LabelFrame(self, text="Open File")
        self.labelFrame.grid(column=0, row=1, padx=20, pady=20)

        self.filterFrame = tk.LabelFrame(self, text="Filters")
        self.filterFrame.grid(column=1, row=1, padx=20, pady=20)

        self.histogramFrame = tk.LabelFrame(self, text="Histogram Matching")
        self.histogramFrame.grid(column=2, row=1, padx=20, pady=20)

        self.transformFrame = tk.LabelFrame(self, text="Transform Operations")
        self.transformFrame.grid(column=0, row=2, padx=20, pady=20)

        self.videoFrame = tk.LabelFrame(
            self, text="Green Filtered Video from your cam")
        self.videoFrame.grid(column=1, row=2, padx=20, pady=20)

        self.intensityFrame = tk.LabelFrame(self, text="Intensity Operations")
        self.intensityFrame.grid(column=2, row=2, padx=20, pady=20)

        self.morphologyFrame = tk.LabelFrame(self,
                                             text="Morphological Operations")
        self.morphologyFrame.grid(column=0, row=3, padx=20, pady=20)

        self.upload_image_button()
        self.filterButton()
        self.histogramButton()
        self.transformButton()
        self.videoButton()
        self.intensityButton()
        self.morphologyButton()
def ridge_operators():  # Ridge operators meijering, sato, frangi, hessian
	image = color.rgb2gray(data.retina())[300:700, 700:900]	
	cmap = plt.cm.gray
	kwargs = {'sigmas': [1], 'mode': 'reflect'}
	
	fig, axes = plt.subplots(2, 5)
	for i, black_ridges in enumerate([1, 0]):
		for j, func in enumerate([filters.meijering, filters.sato, filters.frangi, filters.hessian]):
			kwargs['black_ridges'] = black_ridges
			result = func(image, **kwargs)
			axes[i, j].imshow(result, cmap=cmap, aspect='auto')
			if i == 0:
				axes[i, j].set_title(['Original\nimage', 'Meijering\nneuriteness',
									'Sato\ntubeness', 'Frangi\nvesselness',
									'Hessian\nvesselness'][j])
			if j == 0:
				axes[i, j].set_ylabel('black_ridges = ' + str(bool(black_ridges)))
			axes[i, j].set_xticks([])
			axes[i, j].set_yticks([])

	plt.tight_layout()
	plt.show()
Exemplo n.º 7
0
def run():
    logger.info("Starting")
    file_folder = os.path.dirname(os.path.realpath(__file__))
    output_folder = os.path.join(file_folder, "output")
    os.makedirs(output_folder, exist_ok=True)

    # Simple example with a BW test image from skimage
    logger.info("Simple 512x512 example from skimage")
    sc_image = SCImage()
    sc_image.create_empty_iod()
    sc_image.initiate()
    sc_image.set_dicom_attribute("PatientName", "BWBrick^512x512")
    sc_image.set_dicom_attribute("SeriesNumber", "1")
    sc_image.add_pixel_data(data.brick())
    study_folder = os.path.join(output_folder, "data", "sc_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "brick_512x512"), exist_ok=True)
    output_file = os.path.join(
        study_folder, "brick_512x512",
        str(sc_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    sc_image.write_to_file(output_file)

    # Simple example with an RGB test image from skimage
    logger.info("RGB example from skimage")
    sc_image = SCImage()
    sc_image.create_empty_iod()
    sc_image.initiate()
    sc_image.set_dicom_attribute("PatientName", "RGBRetina^NoTiling")
    sc_image.set_dicom_attribute("SeriesNumber", "1")
    sc_image.add_pixel_data(data.retina(), photometric_interpretation="RGB")
    study_folder = os.path.join(output_folder, "data", "sc_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "retina_no_tiling"), exist_ok=True)
    output_file = os.path.join(
        study_folder, "retina_no_tiling",
        str(sc_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    sc_image.write_to_file(output_file)
Exemplo n.º 8
0
def retina_speed_image():
    with warnings.catch_warnings():
        warnings.simplefilter('ignore', RuntimeWarning)
        image_data = rescale(rgb2gray(retina())[260:1280, 90:800], 0.5)
        speed_data = sato(image_data)
    return speed_data
Exemplo n.º 9
0
    plt.figure()
    plt.title(name)
    if image.ndim == 2:
        plt.imshow(image, cmap=plt.cm.gray)
    else:
        plt.imshow(image)

plt.show()

############################################################################
# Thumbnail image for the gallery

# sphinx_gallery_thumbnail_number = -1

fig, axs = plt.subplots(nrows=3, ncols=3)
for ax in axs.flat:
    ax.axis("off")
axs[0, 0].imshow(data.hubble_deep_field())
axs[0, 1].imshow(data.immunohistochemistry())
axs[0, 2].imshow(data.lily())
axs[1, 0].imshow(data.microaneurysms())
axs[1, 1].imshow(data.moon(), cmap=plt.cm.gray)
axs[1, 2].imshow(data.retina())
axs[2, 0].imshow(data.shepp_logan_phantom(), cmap=plt.cm.gray)
axs[2, 1].imshow(data.skin())
further_img = np.full((300, 300), 255)
for xpos in [100, 150, 200]:
    further_img[150 - 10:150 + 10, xpos - 10:xpos + 10] = 0
axs[2, 2].imshow(further_img, cmap=plt.cm.gray)
plt.subplots_adjust(wspace=-0.3, hspace=0.1)
Exemplo n.º 10
0
def test_border_warning(func):
    img = rgb2gray(cp.asarray(retina()[300:500, 700:900]))

    with expected_warnings(["implicitly used 'constant' as the border mode"]):
        func(img, sigmas=[1])
Exemplo n.º 11
0
def test_output_dtype(func, dtype):
    img = rgb2gray(cp.array(retina()[300:500, 700:900], dtype=dtype))

    out = func(img, sigmas=[1], mode='reflect')
    assert out.dtype == dtype
Exemplo n.º 12
0
def retina():
    retina = rgb2gray(ski_data.retina())
    retina_small = resize(retina, np.array(retina.shape) // 2)
    return np.pad(retina_small, 128, "constant", constant_values=0)
Exemplo n.º 13
0
References
----------
.. [1] Linton C. Freeman: Centrality in networks: I.
       Conceptual clarification. Social Networks 1:215-239, 1979.
       :DOI:`10.1016/0378-8733(78)90021-7`
"""
import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage as ndi
from skimage import color, data, filters, graph, measure, morphology

###############################################################################
# We start by loading the data: an image of a human retina.

retina_source = data.retina()

_, ax = plt.subplots()
ax.imshow(retina_source)
ax.set_axis_off()
_ = ax.set_title('Human retina')

###############################################################################
# We convert the image to grayscale, then use the
# `Sato vesselness filter <skimage.filters.sato>` to better distinguish the
# main vessels in the image.

retina = color.rgb2gray(retina_source)
t0, t1 = filters.threshold_multiotsu(retina, classes=3)
mask = (retina > t0)
vessels = filters.sato(retina, sigmas=range(1, 10)) * mask
Exemplo n.º 14
0
       Computer Vision (pp. 609-622). Springer International Publishing.
       :DOI:`10.1007/978-3-319-16811-1_40`
"""

from skimage import data
from skimage import color
from skimage.filters import meijering, sato, frangi, hessian
import matplotlib.pyplot as plt


def identity(image, **kwargs):
    """Return the original image, ignoring any kwargs."""
    return image


image = color.rgb2gray(data.retina())[300:700, 700:900]
cmap = plt.cm.gray

kwargs = {}
kwargs['sigmas'] = [1]

fig, axes = plt.subplots(2, 5)
for i, black_ridges in enumerate([1, 0]):
    for j, func in enumerate([identity, meijering, sato, frangi, hessian]):
        kwargs['black_ridges'] = black_ridges
        result = func(image, **kwargs)
        if func in (meijering, frangi):
            # Crop by 4 pixels for rendering purpose.
            result = result[4:-4, 4:-4]
        axes[i, j].imshow(result, cmap=cmap, aspect='auto')
        if i == 0:
Exemplo n.º 15
0
# In this first example, we consider the simple case of two images that only
# differ with respect to rotation around a common center point. By remapping
# these images into polar space, the rotation difference becomes a simple
# translation difference that can be recovered by phase correlation.

import numpy as np
import matplotlib.pyplot as plt

from skimage import data
from skimage.registration import phase_cross_correlation
from skimage.transform import warp_polar, rotate, rescale
from skimage.util import img_as_float

radius = 705
angle = 35
image = data.retina()
image = img_as_float(image)
rotated = rotate(image, angle)
image_polar = warp_polar(image, radius=radius, channel_axis=-1)
rotated_polar = warp_polar(rotated, radius=radius, channel_axis=-1)

fig, axes = plt.subplots(2, 2, figsize=(8, 8))
ax = axes.ravel()
ax[0].set_title("Original")
ax[0].imshow(image)
ax[1].set_title("Rotated")
ax[1].imshow(rotated)
ax[2].set_title("Polar-Transformed Original")
ax[2].imshow(image_polar)
ax[3].set_title("Polar-Transformed Rotated")
ax[3].imshow(rotated_polar)
Exemplo n.º 16
0
from skimage import data
from skimage.feature import register_translation
from skimage.transform import rescale, warp_polar, rotate
from skimage.util import img_as_float
from mas.tracking import roll
import matplotlib.pyplot as plt
import numpy as np

# radius must be large enough to capture useful info in larger image
radius = 1500
angle = 53.7
scale = 2.2
image = data.retina()
image = img_as_float(image)
rotated = rotate(image, angle)
rescaled = rescale(rotated, scale, multichannel=True)
image_polar = warp_polar(image,
                         radius=radius,
                         scaling='log',
                         multichannel=True)
rescaled_polar = warp_polar(rescaled,
                            radius=radius,
                            scaling='log',
                            multichannel=True)
rescaled_polar = roll(rescaled_polar, (10, 10))

fig, axes = plt.subplots(2, 2, figsize=(8, 8))
ax = axes.ravel()
ax[0].set_title("Original")
ax[0].imshow(image)
ax[1].set_title("Rotated and Rescaled")
Exemplo n.º 17
0
def run():
    logger.info("Starting")
    file_folder = os.path.dirname(os.path.realpath(__file__))
    output_folder = os.path.join(file_folder, "output")
    os.makedirs(output_folder, exist_ok=True)

    # Simple example with BW noise
    logger.info("Simple 256x256 example with noice")
    wsm_image = WSMImage()
    wsm_image.create_empty_iod()
    wsm_image.initiate()
    wsm_image.set_dicom_attribute("PatientName", "BWNoise^256x256")
    wsm_image.set_dicom_attribute("SeriesNumber", "1")
    study_folder = os.path.join(output_folder, "data", "wsm_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "noise_256x256"), exist_ok=True)
    output_file = os.path.join(
        study_folder, "noise_256x256",
        str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    wsm_image.write_to_file(output_file)

    # Simple example with a BW test image from skimage
    logger.info("Simple 512x512 example from skimage")
    wsm_image = WSMImage()
    wsm_image.create_empty_iod()
    wsm_image.initiate()
    wsm_image.set_dicom_attribute("PatientName", "BWBrick^512x512")
    wsm_image.set_dicom_attribute("SeriesNumber", "1")
    wsm_image.add_pixel_data(data.brick())
    study_folder = os.path.join(output_folder, "data", "wsm_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "brick_512x512"), exist_ok=True)
    output_file = os.path.join(
        study_folder, "brick_512x512",
        str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    wsm_image.write_to_file(output_file)

    # Simple example with a BW test image from skimage but with tiling
    logger.info("Simple 512x512 example from skimage with tiling")
    wsm_image = WSMImage()
    wsm_image.create_empty_iod()
    wsm_image.initiate()
    wsm_image.set_dicom_attribute("PatientName", "BWBrick^WithTiling")
    wsm_image.set_dicom_attribute("SeriesNumber", "1")
    wsm_image.add_pixel_data(data.brick(), tile_size=[256, 256])
    study_folder = os.path.join(output_folder, "data", "wsm_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "brick_512x512_tiling_256x256"),
                exist_ok=True)
    output_file = os.path.join(
        study_folder, "brick_512x512_tiling_256x256",
        str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    wsm_image.write_to_file(output_file)

    # Simple example with an RGB  test image from skimage
    logger.info("RGB example from skimage")
    wsm_image = WSMImage()
    wsm_image.create_empty_iod()
    wsm_image.initiate()
    wsm_image.set_dicom_attribute("PatientName", "RGBRetina^NoTiling")
    wsm_image.set_dicom_attribute("SeriesNumber", "1")
    wsm_image.add_pixel_data(data.retina()[0:1410, 0:1410, :],
                             photometric_interpretation="RGB")
    study_folder = os.path.join(output_folder, "data", "wsm_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "retina_no_tiling"), exist_ok=True)
    output_file = os.path.join(
        study_folder, "retina_no_tiling",
        str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    wsm_image.write_to_file(output_file)

    # Simple example with an RGB  test image from skimage but with tiling
    logger.info("RGB example from skimage with tiling")
    wsm_image = WSMImage()
    wsm_image.create_empty_iod()
    wsm_image.initiate()
    wsm_image.set_dicom_attribute("PatientName", "RGBRetina^WithTiling")
    wsm_image.set_dicom_attribute("SeriesNumber", "1")
    wsm_image.add_pixel_data(data.retina()[0:1410, 0:1410, :],
                             photometric_interpretation="RGB",
                             tile_size=[256, 256])
    study_folder = os.path.join(output_folder, "data", "wsm_images")
    os.makedirs(study_folder, exist_ok=True)
    os.makedirs(os.path.join(study_folder, "retina_tiling_256x256"),
                exist_ok=True)
    output_file = os.path.join(
        study_folder, "retina_tiling_256x256",
        str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
    wsm_image.write_to_file(output_file)

    # Simple example with an acutal WSI image with tiling and multi-resolution
    logger.info(
        "High resolution RGB example from pexels with tiling and multi-resolution"
    )
    input_file = os.path.join(file_folder, "data", "wsi_images",
                              "image_to_encode_as_dicom.jpg")
    if not os.path.exists(input_file):
        logger.info("Data not available locally, downloading")
        url = "https://images.pexels.com/photos/1270184/pexels-photo-1270184.jpeg"
        downloaded_file = requests.get(url)
        open(input_file, "wb").write(downloaded_file.content)
    im = imread(input_file)
    im = im[:, :, 0:3]
    study_folder = os.path.join(output_folder, "data", "wsm_images",
                                "BW-skull")
    os.makedirs(study_folder, exist_ok=True)
    patient_id = ''.join(random.choice('0123456789ABCDEF') for i in range(16))
    accession_number = ''.join(
        random.choice('0123456789ABCDEF') for i in range(16))
    study_instance_uid = generate_uid()
    series_instance_uid = generate_uid()
    frame_of_reference_uid = generate_uid()
    study_date = datetime.now().strftime("%Y%m%d")
    study_time = datetime.now().strftime("%H%M%S")
    for level in range(0, 3):
        logger.info("Level: " + str(level))
        wsm_image = WSMImage()
        wsm_image.create_empty_iod()
        wsm_image.initiate()
        wsm_image.set_dicom_attribute("PatientName", "Black-White^Skull")
        wsm_image.set_dicom_attribute("PatientID", patient_id)
        wsm_image.set_dicom_attribute("StudyInstanceUID", study_instance_uid)
        wsm_image.set_dicom_attribute("AccessionNumber", accession_number)
        wsm_image.set_dicom_attribute("StudyID", accession_number)
        wsm_image.set_dicom_attribute("StudyDate", study_date)
        wsm_image.set_dicom_attribute("StudyTime", study_time)
        wsm_image.set_dicom_attribute("SeriesInstanceUID", series_instance_uid)
        wsm_image.set_dicom_attribute("FrameOfReferenceUID",
                                      frame_of_reference_uid)
        wsm_image.set_dicom_attribute("SeriesNumber", "1")
        wsm_image.set_dicom_attribute("SeriesDate", study_date)
        wsm_image.set_dicom_attribute("SeriesTime", study_time)
        wsm_image.set_dicom_attribute("InstanceNumber", str(level))
        if level > 0:
            wsm_image.set_dicom_attribute(
                "ImageType", ["DERIVED", "PRIMARY", "VOLUME", "RESAMPLED"])
        im_resized = resize(im, (int(
            im.shape[0] / pow(2, level)), int(im.shape[1] / pow(2, level)), 3),
                            preserve_range=True).astype(np.uint8)
        wsm_image.add_pixel_data(im_resized,
                                 photometric_interpretation="RGB",
                                 pixel_spacing=[
                                     0.0005 * int(pow(2, level)),
                                     0.0005 * int(pow(2, level))
                                 ],
                                 tile_size=[256, 256])
        output_file = os.path.join(
            study_folder,
            str(wsm_image.dataset.InstanceNumber).zfill(6) + ".dcm")
        wsm_image.write_to_file(output_file)