.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        Click :ref:`here <sphx_glr_download_auto_examples_segmentation_plot_join_segmentations.py>`     to download the full example code or to run this example in your browser via Binder
    .. rst-class:: sphx-glr-example-title

    .. _sphx_glr_auto_examples_segmentation_plot_join_segmentations.py:


==========================================
Find the intersection of two segmentations
==========================================

When segmenting an image, you may want to combine multiple alternative
segmentations. The :py:func:`skimage.segmentation.join_segmentations`
function computes the join of two segmentations, in which a pixel is
placed in the same segment if and only if it is in the same segment in
*both* segmentations.



.. image:: /auto_examples/segmentation/images/sphx_glr_plot_join_segmentations_001.png
    :class: sphx-glr-single-img






.. code-block:: default

    import numpy as np
    import matplotlib.pyplot as plt

    from skimage.filters import sobel
    from skimage.measure import label
    from skimage.segmentation import slic, join_segmentations, watershed
    from skimage.color import label2rgb
    from skimage import data

    coins = data.coins()

    # Make segmentation using edge-detection and watershed.
    edges = sobel(coins)

    # Identify some background and foreground pixels from the intensity values.
    # These pixels are used as seeds for watershed.
    markers = np.zeros_like(coins)
    foreground, background = 1, 2
    markers[coins < 30.0] = background
    markers[coins > 150.0] = foreground

    ws = watershed(edges, markers)
    seg1 = label(ws == foreground)

    # Make segmentation using SLIC superpixels.
    seg2 = slic(coins, n_segments=117, max_iter=160, sigma=1, compactness=0.75,
                multichannel=False, start_label=0)

    # Combine the two.
    segj = join_segmentations(seg1, seg2)

    # Show the segmentations.
    fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(9, 5),
                             sharex=True, sharey=True)
    ax = axes.ravel()
    ax[0].imshow(coins, cmap='gray')
    ax[0].set_title('Image')

    color1 = label2rgb(seg1, image=coins, bg_label=0)
    ax[1].imshow(color1)
    ax[1].set_title('Sobel+Watershed')

    color2 = label2rgb(seg2, image=coins, image_alpha=0.5, bg_label=-1)
    ax[2].imshow(color2)
    ax[2].set_title('SLIC superpixels')

    color3 = label2rgb(segj, image=coins, image_alpha=0.5, bg_label=-1)
    ax[3].imshow(color3)
    ax[3].set_title('Join')

    for a in ax:
        a.axis('off')
    fig.tight_layout()
    plt.show()


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** ( 0 minutes  1.070 seconds)


.. _sphx_glr_download_auto_examples_segmentation_plot_join_segmentations.py:


.. only :: html

 .. container:: sphx-glr-footer
    :class: sphx-glr-footer-example


  .. container:: binder-badge

    .. image:: https://mybinder.org/badge_logo.svg
      :target: https://mybinder.org/v2/gh/scikit-image/scikit-image/v0.17.x?filepath=notebooks/auto_examples/segmentation/plot_join_segmentations.ipynb
      :width: 150 px


  .. container:: sphx-glr-download sphx-glr-download-python

     :download:`Download Python source code: plot_join_segmentations.py <plot_join_segmentations.py>`



  .. container:: sphx-glr-download sphx-glr-download-jupyter

     :download:`Download Jupyter notebook: plot_join_segmentations.ipynb <plot_join_segmentations.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
