o
    :ήcr                  	   @   s  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dl
mZ d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z ej!"dej#ej$ej%gdd Z&ej!"dej#ej$ej%gd d! Z'd"d# Z(ej!"d$dd%gej!"dej)ej*ej%gej!"d&g d'd(d) Z+ej,-d  e. Z/e0e/Z1e2e1d* d+ Z1d,d- Z3d.d/ Z4ej!"dej#ej$ej%gd0d1 Z5d2d3 Z6d4d5 Z7ej!"d6d%d d7gfdd d8gfd9d:d;gfgd<d= Z8ej!"d6d%d>d?gfdd@d7gfdAdBdCgfgdDdE Z9dFdG Z:dHZ;dIZ<dJZ=dKZ>dLdM Z?dNdO Z@ej!"dej#ej$ej%gdPdQ ZAdRdS ZBej!"dejCejDej#ej$ej%gdTdU ZEdVdW ZFdXdY ZGdZd[ ZHd\d] ZId^d_ ZJd`da ZKdbdc ZLej!"dddedfgdgdh ZMej!"didjej)fdkejNfdlejNfdmejNfdneOfgdodp ZPdqdr ZQdsdt ZRdudv ZSej!"dej#ej$ej%gdwdx ZTdydz ZUd{d| ZVd}d~ ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^ej!"dej#ej$ej%gdd Z_dd Z`dd Zadd Zbdd Zcej!"dej#ej$ej%gdd Zddd Zedd Zfej!"dej#ej$ej%gdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmej!"dejnejoejpgdd Zqdd ZrdS )    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equal)data)exposure)util)rgb2gray)intensity_range)dtype_range)expected_warnings)_supported_float_typec                  C   sV   t jddgt jd} tt tj| dd\}}W d    d S 1 s$w   Y  d S )Nd   dtypefoobarsource_range)nparrayint8pytestraises
ValueErrorr   	histogramimfrequenciesbin_centers r!   K/tmp/pip-target-vg8gfxp4/lib/python/skimage/exposure/tests/test_exposure.pytest_wrong_source_range   s   "r#   c                  C   sj   t jddgt jd} t| \}}t|t dd |d dks"J |d dks*J t|dd d d S )Nr   r   r   e   r      r   r   r   r   r   r   aranger   r!   r!   r"   test_negative_overflow      r(   c                  C   sj   t jddgt jd} t| \}}t|t dd |d dks"J |d dks*J t|dd d d S )Nir   r   r   r%   r&   r   r!   r!   r"   test_all_negative_image(   r)   r*   c                  C   sT   t jddgt jd} t| \}}tt|t| t|d d t|d d d S )N
   r   r   r   r   )r   r   r   r   r   r   lenr   r!   r!   r"   test_int_range_image1   s
   r-   c                  C   sx   t jddgddggt jd} tj| dd\}}t| jd D ]}tt|| t| qt|d d t|d d d S )	Nr+      r   f   r   r   )channel_axisr   )	r   r   r   r   r   rangeshaper   r,   )r   r   r    chr!   r!   r"   !test_multichannel_int_range_image9   s   r4   c                  C   sr   t jddgt jd} tj| dd\}}t|t dd t|d d t|d d t|d	 d t|jd
 d S )Nr+   r   r   r   r   r      r%   r$   r5   )	r   r   uint8r   r   r   r'   r   r2   r   r!   r!   r"   test_peak_uint_range_dtypeB      r8   c                  C   sr   t jddgt jd} tj| dd\}}t|t dd t|d d	 t|d
 d	 t|d d t|jd d S )Nr+   r   r   r   r         r%         r   r6   )	r   r   r   r   r   r   r'   r   r2   r   r!   r!   r"   test_peak_int_range_dtypeL   r9   r?   c                  C   sH   t jdddt jd} tj| dd\}}t|t dd t|jd d S )Nr      r5   r   r   r   r6   )	r   linspacer7   r   r   r   r'   r   r2   r   r!   r!   r"   test_flat_uint_range_dtypeV      rB   c                  C   sH   t jdddt jd} tj| dd\}}t|t dd t|jd d S )Nr:   r;   r5   r   r   r   r6   )	r   rA   r   r   r   r   r'   r   r2   r   r!   r!   r"   test_flat_int_range_dtype]   rC   rD   r   c                 C   sL   t jddg| d}tj|dd\}}|j| ksJ t|t ddd  d S )Nr+   r   r   Z   nbins      ?)r   r   r   r   r   r   r'   )r   r   r   r    r!   r!   r"   "test_peak_float_out_of_range_imaged   s   rI   c                 C   sn   t jddg| d}d}tj||dd\}}|j| ksJ tt |dd tt |dd tt	|d d S )	Nr+   r   r   r   )rG   r   g   ?)
r   r   r   r   r   r   minmaxr   r,   )r   r   rG   r   r    r!   r!   r"   "test_peak_float_out_of_range_dtypem   s   
rN   c                  C   sv   t jg dt jd} tj| ddd\}}t d}d|d< d	|d
< t|| tj| ddd\}}|d }t|| d S )N)r   r@   r@   r   r   F)r   	normalizer5   r%   r      r   Tg      @)r   r   r7   r   r   zerosr   )r   r   r    expectedr!   r!   r"   test_normalizey   s   



rS   r   imager0   )r   r%   r   c           
      C   s   d}|d |d  }t |  \}}tjtj||| dtj||| df|d}tj|||d\}}	t| tjrAt|	t	||d  |d d |ksKJ |d d dksUJ |d d dks_J |d d |ksiJ dS )	z-Check that all channels use the same binning.)r.   r.   r   r%   r   )axis)r   r0   r   N)
r   r   stackfullr   r   
issubdtypeintegerr   r'   )
r   r   r0   r2   channel_sizeiminimaxr   r   r    r!   r!   r"   (test_multichannel_hist_common_bins_uint8   s$   
r]   g      @r   c                  C   s&   t t} t jtdd}t| | dS )z)Check integer bins used for uint8 images.rJ   rF   N)r   equalize_histtest_img_intr   )img_eq0img_eq1r!   r!   r"   test_equalize_uint8_approx   s   
rb   c                  C   s.   t t} t| }t|\}}t| d S )N)r	   img_as_ubytetest_imgr   r^   cumulative_distributioncheck_cdf_slope)imgimg_eqcdf	bin_edgesr!   r!   r"   test_equalize_ubyte   s   

rk   c                 C   s\   t tj| dd}t|}|jt| ksJ t|\}}t	| |jt| ks,J d S )NFcopy)
r	   img_as_floatrd   astyper   r^   r   r   re   rf   )r   rg   rh   ri   rj   r!   r!   r"   test_equalize_float   s   
rp   c                  C   sl   t t} ttj}d|ddddf< tj| |d}t| }t|\}}t	| ||k
 r4J d S )Nr%   r   i  )mask)r	   rn   rd   r   rQ   r2   r   r^   re   rf   all)rg   rq   img_mask_eqrh   ri   rj   r!   r!   r"   test_equalize_masked   s   

rt   c                 C   sD   t ddt| }t || d\}}d|  k rdk s J  J dS )z=Slope of cdf which should equal 1 for an equalized histogram.r   r%   rK   皙?N)r   rA   r,   polyfit)ri   norm_intensityslope	interceptr!   r!   r"   rf      s    rf   ztest_input,expectedr%   r@   )r+      r+   rz   c                 C   .   t jddgt jd}t|| d}t|| d S )Nr   r%   r   range_values)r   r   r7   r   r   
test_inputrR   rT   outr!   r!   r"   test_intensity_range_uint8      r   皙?皙?r   )333333?皙?r   r   c                 C   r{   )Nr   r   r   r|   r   r   float64r   r   r~   r!   r!   r"   test_intensity_range_float   r   r   c                  C   s0   t jddgt jd} t| ddd}t|d d S )Nr   r   r   r   T)r}   clip_negative)r   r%   r   rT   r   r!   r!   r"   "test_intensity_range_clipped_float   s   r   i  i  i?  i  c                  C   s@   t jg dt jd} t| }|jt jksJ t|g d d S )N)3   r/      r   )r      r@   )r   r   r7   r   rescale_intensityr   r   r   r!   r!   r"   test_rescale_stretch	  s   
r   c                  C   s*   t g d} t| }t|g d d S )Ng     I@g     Y@g      c@)r   rH   r%   r   r   r   r   r   r   r!   r!   r"   test_rescale_shrink  s   
r   c                 C   sF   t jg d| d}tj|dd}t|g ddd |j|jks!J d S )Nr   r   r   r@   in_range)r   r   g333333?   )decimal)r   r   r   r   r   r   r   rT   r   r!   r!   r"   test_rescale_in_range  s   r   c                  C   s.   t g d} tj| dd}t|g d d S )Nr   )r   r/   r   )rH   r%   r%   r   r   r!   r!   r"   test_rescale_in_range_clip  s   r   c                 C   sF   t jg d| d}tj|dd}|jt|jksJ t|g d dS )a?  Check that output range is correct.

    .. versionchanged:: 0.17
        This function used to return dtype matching the input dtype. It now
        matches the output.

    .. versionchanged:: 0.19
        float16 and float32 inputs now result in float32 output. Formerly they
        would give float64 outputs.
    )r   r+   r   r   r   	out_range)r   g     O@r   N)r   r   r   r   r   r   r   r   r!   r!   r"   test_rescale_out_range%  s   r   c                  C   s<   t jdttd gt jd} tj| dd}t|dttg d S )Nr   r   r   uint10r   )r   r   
uint10_maxuint16r   r   r   
uint16_maxr   r!   r!   r"   test_rescale_named_in_range8  s   r   c                  C   4   t jdtgt jd} tj| dd}t|dtg d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r!   r!   r"   test_rescale_named_out_range>     r   c                  C   r   )Nr   r   uint12r   )r   r   r   r   r   r   r   
uint12_maxr   r!   r!   r"   test_rescale_uint12_limitsD  r   r   c                  C   r   )Nr   r   uint14r   )r   r   r   r   r   r   r   
uint14_maxr   r!   r!   r"   test_rescale_uint14_limitsJ  r   r   c                  C   s<   t jdt jd} t| }t |  sJ t||  d S )NrP   rP   r   )r   rQ   r7   r   r   isnanrr   r   r   r!   r!   r"   test_rescale_all_zerosP  s   
r   c                  C   s4   t jddgt jd} tj| dd}t|ddg d S )N   r   r   r   r   )r   r   r   r   r   r   r   r!   r!   r"   test_rescale_constantW  r   r   c                  C   s6   t d} t| }t |  sJ t||  d S )Nr   )r   onesr   r   r   rr   r   r   r!   r!   r"   test_rescale_same_values]  s   

r   zin_range,out_range)rT   r   )r   rT   c                 C   s|   t jdtddd}t j|d< d}d}| dkr||g}n|g}t| t|| | W d    d S 1 s7w   Y  d S )	N   r   rJ   r   )r%   r%   zWOne or more intensity levels are NaN\. Rescaling will broadcast NaN to the full image\.z/Passing `np.nan` to mean no clipping in np.cliprT   )r   r'   floatreshapenanr   r   r   )r   r   rT   msgnumpy_warning_1_17_plusexp_warnr!   r!   r"   test_rescale_nan_warningd  s   
	

"r   zout_range, out_dtyper7   r   r   r   r   c                 C   s4   t jg dt jd}tj|| d}|j|ksJ d S )Nr:   r   r   r   r   )r   r   r   r   r   r   )r   	out_dtyperT   output_imager!   r!   r"   test_rescale_output_dtype  s   
r   c                  C   sF   t jg dt jd} tj| t jd}t|g d |jt jks!J d S )Nr   r   r   r   r;   r@   )r   r   r   r   r   r7   r   r   rT   r   r!   r!   r"   test_rescale_no_overflow  s   r   c                  C   sB   t jg dt jd} tj| dd}t|g d |jtksJ d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r!   r!   r"   test_rescale_float_output  s   r   c                  C   sR   t jg dt jd} tt tj| dd}W d    d S 1 s"w   Y  d S )Nr   r   flatr   )r   r   r   r   r   r   r   r   )rT   _r!   r!   r"   *test_rescale_raises_on_incorrect_out_range  s   "r   c                 C   s   t t j| dd}t|}t|||f}tj	|dddd}|j
|j
ks)J |jt| ks2J | tjkr9dnd}tt||d	| tt||d
d dS )z!Test a grayscale float image
    Frl   )9   r   {Gz?r;   )kernel_size
clip_limitrG   rJ   rP   g)\Y@ghs?N)r	   rn   r   	astronautro   r
   r   dstackr   equalize_adapthistr2   r   r   float16r   peak_snrnorm_brightness_err)r   rg   adaptedsnr_decimalr!   r!   r"   test_adapthist_grayscale  s   r   c                  C   s   t t } tjdd}td t| \}}t	|dks"J W d   n1 s,w   Y  tj
| dd}| dks@J | dksHJ | j|jksPJ t| }tt||d	d
 tt||dd t|fS )z#Test an RGB color uint16 image
    T)recordalwaysr   Nr   r         ?x&Y[@r%   {Gz?rP   )r	   img_as_uintr   r   warningscatch_warningssimplefilterr   r   r,   r   rL   rM   r2   r   r   r   r   )rg   whistr    r   
full_scaler!   r!   r"   test_adapthist_color  s   

r   c                  C   s   t t } tj| jd | jd ftd}t| |f} t	
| }|j| jks*J | ddddddf } t	| }| j|jksDJ tt||dd tt||dd dS )	zTest an RGBA color image
    r   r%   r   NrJ   r   rP   ga+e?)r	   rn   r   r   r   r   r2   r   r   r   r   r   r   r   r   )rg   alphar   r   r!   r!   r"   test_adapthist_alpha  s   

r   c                  C   s   t t } t| } d}t | dd|dd|f }t|g| jd |  }tj	|ddd}tj	|ddd}|j|jksAJ |j|jksIJ t
t|||jd d   dk s^J d	S )
z
    Test for n-dimensional consistency with float images
    Note: Currently if img.ndim == 3, img.shape[2] > 4 must hold for the image
    not to be interpreted as a color image by @adapt_rgb
       r   r   r.   g?)r   r   rP   r   N)r	   rn   r   r   r
   r   r   r2   r   r   meanabs)rg   aimg2dimg3d	adapted2d	adapted3dr!   r!   r"   test_adapthist_grayscale_Nd  s(   
r   c                  C   s   t d} | d7 } | t j} t| d}t |t |ks!J t d} | d7 } | t j} t| d}t |t |ksBJ dS )z(Test constant image, float and uint
       r   rP   rJ   r   N)	r   rQ   ro   r   r   r   rL   rM   r   )rg   r   r!   r!   r"   test_adapthist_constant  s   

r   c                  C   s   t tt } | d } d| | jd d | jd d f< d}tdddD ]4}tj| |d	d
}t	|dd|f | dd|f dksDJ t	||ddf | |ddf dksYJ q%dS )zTest border processing
    g      Y@r   r   rP   r%   r   r   G   rH   r   Nr   )
r
   r	   rn   r   r   r2   r1   r   r   r   )rg   border_indexr   r   r!   r!   r"   test_adapthist_borders  s"    
r   c                  C   sb   t  } t| }tj| dd}tj| dd}t|| tj|dd}tj|dd}t|| d S )Nr   r   r%   )r   moonr	   rn   r   r   r   )img_uimg_f
img_clahe0
img_clahe1r!   r!   r"   test_adapthist_clip_limit  s   

r   c                 C   sv   | j dkrt|  t| } }t| } t|}d| j t| |   }t	| j
j \}}dt||  S )zPeak signal to noise ratio of two images

    Parameters
    ----------
    img1 : array-like
    img2 : array-like

    Returns
    -------
    peak_snr : float
        Peak signal to noise ratio
    rJ   r   rz   )ndimr
   rm   r	   rn   sizer   squaresumr   r   typelog)img1img2mser   max_r!   r!   r"   r   ,  s   


r   c                 C   sJ   | j dkrt| t|} }t|  |  }|t| jj d  }|S )zNormalized Absolute Mean Brightness Error between two images

    Parameters
    ----------
    img1 : array-like
    img2 : array-like

    Returns
    -------
    norm_brightness_error : float
        Normalized absolute mean brightness error
    rJ   r%   )r   r
   r   r   r   r   r   r   )r  r  ambenber!   r!   r"   r   B  s
   
r   c                  C   s.   t ddg} t| d}| j|jksJ dS )"Check that the shape is maintainedr%   g      ?N)r   r   r   adjust_gammar2   )rg   resultr!   r!   r"   test_adjust_gamma_1x1_shapeY  s   r  c                  C   s*   t jddd} t| d}t||  dS )z4Same image should be returned for gamma equal to oner   r@   r   r%   N)r   randomuniformr   r	  r   )rT   r
  r!   r!   r"   test_adjust_gamma_one`  s   r  c                 C   sT   t jdddj| dd}t|d}|jj} t|t	|  d  |j|jks(J dS )z6White image should be returned for gamma equal to zeror   r@   r   Frl   r%   N)
r   r  r  ro   r   r	  r   r   r   r   )r   rT   r
  r!   r!   r"   test_adjust_gamma_zerog  s
   r  c               
   C   r   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| d}t|| dS )z\Verifying the output with expected results for gamma
    correction with gamma equal to halfr   r@   r   r   )r      -   7   ?   r   N   T   )rE   _   r   i   n   s   w   {   )r                     r   )                        )                        )                        )         r=               )                        r   rH   Nr   r'   r7   r   r   r   r	  r   rT   rR   r
  r!   r!   r"   test_adjust_gamma_less_oneq     
rL  c               
   C   r  )z[Verifying the output with expected results for gamma
    correction with gamma equal to twor   r@   r   r   )r   r   r   r   r%   r%   rP   rJ   )r   r.         	   r+   r      )      rz               !   )$   '   *   r  1   4   8   <   )@   D   H   L   Q   U   rE   r  )r   r  r  t   y   r      r<   )      r#                 )r1     r7  r:  r=     rC  rG  r   rP   NrJ  rK  r!   r!   r"   test_adjust_gamma_greater_one  rM  rr  c                  C   sT   t dddt jd} tt t| d W d    d S 1 s#w   Y  d S )Nr   r@   r   r   r   )	r   r'   r7   r   r   r   r   r   r	  rT   r!   r!   r"   test_adjust_gamma_negative  s   "rt  c                  C   s6   dt jdt jd } t tj| ddddksJ d S )Nr@   r   r   r%   ru   )gammagain)r   r   r7   rr   r   r	  )rg   r!   r!   r"   test_adjust_gamma_u8_overflow  s   "rw  c                 C   s@   t jddg| d}t|d}|j|jksJ |j| ksJ dS )r  r%   r   N)r   r   r   
adjust_logr2   r   r   rg   r
  r!   r!   r"   test_adjust_log_1x1_shape  s   rz  c               
   C   r  )z|Verifying the output with expected results for logarithmic
    correction with multiplier constant multiplier equal to unityr   r@   r   r   )r   r.      rR  rT  rV  rX  &   )+   0   5   :   r  ra  I   M   )R   V   [   r  r   h   m   q   )u   rg  }                  )r"  r            r'        )   rn  r-  ro     r1  r2  rp  )r5  r6     r9        r=  r=   )   r@  rB  rC        rG     r   r%   Nr   r'   r7   r   r   r   rx  r   rK  r!   r!   r"   test_adjust_log  rM  r  c               
   C   t   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| dd}t|| dS )zVerifying the output with expected results for inverse logarithmic
    correction with multiplier constant multiplier equal to unityr   r@   r   r   )r   rP   r.   r   r{  rQ     rz   )             #   r|  )   r  )r~  r   r  r  =   A   ra  rb  )rc  O   S   W   rE   ^   b   r/   )j   r  r   v   z   ~   r      )r<            r#  r  r&     )r)  r     r.  r     rp     )r  r:     r>   r@     rE     r   r%   TNr  rK  r!   r!   r"   test_adjust_inv_log     
r  c                 C   sB   t jddg| d}t|dd}|j|jksJ |j| ksJ dS )r  r%   r   r.   N)r   r   r   adjust_sigmoidr2   r   ry  r!   r!   r"   test_adjust_sigmoid_1x1_shape  s   r  c               
   C   r  )zlVerifying the output with expected results for sigmoid correction
    with cutoff equal to one and gain of 5r   r@   r   r   )r%   r%   r%   rP   rP   rP   rP   rP   )rJ   rJ   rJ   r   r   r   r.   r.   )r.   rN  rN  rO  rO  r   rP  r+   )r+   r{  r      rQ  r   rR  rS  )   rz   rT     rU  rV  r  r  )"   rY  rZ  r  ,   /   2   6   )r   r  r`  ra  rb  rc  P   re  )Y   r  c   r  l   r  r  r  r   r%   r.   Nr   r'   r7   r   r   r   r  r   rK  r!   r!   r"   test_adjust_sigmoid_cutoff_one  r  r  c               
   C   st   t dddt jd} t jg dg dg dg dg d	g d
g d
g d
gt jd}t| dd}t|| dS )znVerifying the output with expected results for sigmoid correction
    with cutoff equal to zero and gain of 10r   r@   r   r   )r   r  r  r#     r  r,  r/  )r     r7  r9  r;  r=  r>   r?  )   rB        r  rE  rF     rG  r  r  rH  rH  r  r  rI  )rI  rI  rI  rI     r  r  r  )r  r  r  r  r  r  r  r  r   r+   Nr  rK  r!   r!   r"   test_adjust_sigmoid_cutoff_zero  r  r  c               
   C   r  )znVerifying the output with expected results for sigmoid correction
    with cutoff equal to half and gain of 10r   r@   r   r   )r%   r%   rP   rP   rJ   rJ   r   r.   )r.   rN  rO  rP  r+   r   rQ  rR  )r  rT  rU  r  r  rZ  r  r  )r   r`  rb  r  r  r  r  r  )r;   r<            rm  r     )r2  r  r7     r;     r>   rq  )rA  rB  r  r  r  r  rF  r  r  r   rH   r+   Nr  rK  r!   r!   r"   test_adjust_sigmoid_cutoff_half  r  r  c               
   C   sv   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| ddd}t|| dS )zvVerifying the output with expected results for inverse sigmoid
    correction with cutoff equal to half and gain of 10r   r@   r   r   )rI  rI  r  r  rH  rH  r  rG  )rG  r  rF  rE  r  r  r  rB  )r  r?  r>   r=           r4  )      rn  r)  r&     r!     )r  rf  r  `   r  r  F   >   )r  r\  r}  %   rX     rU     )rS  rR  rQ  r   r+   r   rO  rN  )r.   r   r   rJ   rJ   rP   rP   r%   r   rH   r+   TNr  rK  r!   r!   r"   #test_adjust_inv_sigmoid_cutoff_half  s   
r  c                  C   s   t ddd} t| sJ d| d< t| sJ tj| ddr"J | d t j} t| s1J tj| ddr:J | t jd } t| sIJ tj| ddrRJ d S )	Nr   g{Gz?r   r%   r   )upper_percentiler@   r5   )r   rA   r   is_low_contrastro   r7   r   rs  r!   r!   r"   test_is_low_contrast%  s   r  c                  C   s:   t jdtd} t| sJ d| d d< t| rJ d S )Nr   r   r%   r.   )r   rQ   boolr   r  rs  r!   r!   r"   test_is_low_contrast_boolean5  s   r  exposure_funcc                 C   sT   t ddddt j}tt | | W d    d S 1 s#w   Y  d S )Nr   rE  r   r   )r   r'   r   ro   doubler   r   r   )r  rT   r!   r!   r"   test_negative_input@  s   
"r  c                  C   s|   t jddd dd lm}  | jtddgddggdd}t|\}}g d	}g d
}t||s4J t||s<J d S )Ndaskz$dask python library is not installed)reasonr   r%   rP   )r%   rP   )chunks)r   r%   rP   )r%   rP   r%   )	r   importorskip
dask.arrayr   
from_arrayr   r   r   allclose)da
dask_arrayoutput_histoutput_binsexpected_binsexpected_histr!   r!   r"   test_dask_histogramL  s    r  )sr   numpyr   r   numpy.testingr   r   r   r   r   skimager   r   r	   skimage.colorr
   skimage.exposure.exposurer   skimage.util.dtyper   skimage._shared._warningsr   skimage._shared.utilsr   r#   r(   r*   r-   r4   r8   r?   rB   rD   markparametrizer   float32r   rI   rN   rS   r7   int16r]   r  seedcamerar_   rn   rd   r   rb   rk   rp   rt   rf   r   r   r   r   r   r   r   r   r   r   r   r   int32r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rL  rr  rt  rw  rz  r  r  r  r  r  r  r  r  r  r	  rx  r  r  r  r!   r!   r!   r"   <module>   s    			














	



		

		


	