a
    
d                  	   @   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 ejdejejg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/ Z0e1e0Z2e3e2d* d+ Z2d,d- Z4d.d/ Z5ejdej%ejej&gd0d1 Z6d2d3 Z7d4d5 Z8ejd6d%d d7gfdd d8gfd9d:d;gfgd<d= Z9ejd6d%d>d?gfdd@d7gfdAdBdCgfgdDdE Z:dFdG Z;dHZ<dIZ=dJZ>dKZ?dLdM Z@dNdO ZAejdej%ejej&gdPdQ ZBdRdS ZCejdeje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^dd Z_ejdej%ejej&gdd Z`dd Zadd Zbdd Zcdd Zdejdej%ejej&gdd Zedd Zfdd Zgejdej%ejej&gdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Znejdejoejpejqgdd Zrdd Zsdd Ztd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_typedtypec                 C   sV   t jddg| d}tjtdd" tj|dd\}}W d    n1 sH0    Y  d S )Nd   r   z+Incorrect value for `source_range` argumentmatchZfoobarsource_range)nparraypytestraises
ValueErrorr   	histogramr   imfrequenciesbin_centers r!   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/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sDJ |d dksTJ t|dd d d S )Nr   r   r   e   r      r   r   int8r   r   r   aranger   r   r    r!   r!   r"   test_negative_overflow    s    r*   c                  C   sj   t jddgt jd} t| \}}t|t dd |d dksDJ |d dksTJ t|dd d d S )Nir   r   r   r%   r&   r)   r!   r!   r"   test_all_negative_image)   s    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_image2   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_image:   s    r5   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$   r6   )	r   r   uint8r   r   r   r(   r   r3   r)   r!   r!   r"   test_peak_uint_range_dtypeC   s    r9   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   r7   )	r   r   r'   r   r   r   r(   r   r3   r)   r!   r!   r"   test_peak_int_range_dtypeM   s    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      r6   r   r   r   r7   )	r   linspacer8   r   r   r   r(   r   r3   r)   r!   r!   r"   test_flat_uint_range_dtypeW   s    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;   r6   r   r   r   r7   )	r   rA   r'   r   r   r   r(   r   r3   r)   r!   r!   r"   test_flat_int_range_dtype^   s    rC   c                 C   sL   t jddg| d}tj|dd\}}|j| ks2J t|t ddd  d S )Nr,   r   r   Z   nbins      ?)r   r   r   r   r   r   r(   r   r!   r!   r"   "test_peak_float_out_of_range_imagee   s    rH   c                 C   sn   t jddg| d}d}tj||dd\}}|j| ks8J tt |dd tt |dd tt	|d d S )	Nr,   r   r   r   )rF   r   g   ?)
r   r   r   r   r   r   minmaxr   r-   )r   r   rF   r   r    r!   r!   r"   "test_peak_float_out_of_range_dtypen   s    
rM   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   	normalizer6   r%   r      r   Tg      @)r   r   r8   r   r   zerosr   )r   r   r    expectedr!   r!   r"   test_normalizez   s    



rR   r   imager1   )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rt|	t	||d  |d d |ksJ |d d dksJ |d d dksJ |d d |ksJ dS )	z-Check that all channels use the same binning.)r/   r/   r   r%   r   )Zaxis)r   r1   r   N)
r   r   stackfullr   r   Z
issubdtypeintegerr   r(   )
r   r   r1   r3   Zchannel_sizeZiminZimaxr   r   r    r!   r!   r"   (test_multichannel_hist_common_bins_uint8   s$    
rW   g      @r   c                  C   s&   t t} t jtdd}t| | dS )z)Check integer bins used for uint8 images.rI   rE   N)r   equalize_histtest_img_intr   )Zimg_eq0Zimg_eq1r!   r!   r"   test_equalize_uint8_approx   s    
rZ   c                  C   s.   t t} t| }t|\}}t| d S )N)r	   Zimg_as_ubytetest_imgr   rX   cumulative_distributioncheck_cdf_slope)imgimg_eqcdf	bin_edgesr!   r!   r"   test_equalize_ubyte   s    

rb   c                 C   s\   t tj| dd}t|}|jt| ks0J t|\}}t	| |jt| ksXJ d S )NFcopy)
r	   img_as_floatr[   astyper   rX   r   r   r\   r]   )r   r^   r_   r`   ra   r!   r!   r"   test_equalize_float   s    
rg   c                  C   sl   t t} ttj}d|ddddf< tj| |d}t| }t|\}}t	| ||k
 rhJ d S )Nr%   r   i  )mask)r	   re   r[   r   rP   r3   r   rX   r\   r]   all)r^   rh   Zimg_mask_eqr_   r`   ra   r!   r!   r"   test_equalize_masked   s    

rj   c                 C   sB   t ddt| }t || d\}}d|  k r8dk s>n J dS )z=Slope of cdf which should equal 1 for an equalized histogram.r   r%   rJ   皙?N)r   rA   r-   Zpolyfit)r`   Znorm_intensityZslopeZ	interceptr!   r!   r"   r]      s    r]   ztest_input,expectedr%   r@   )r,      r,   rl   c                 C   s.   t jddgt jd}t|| d}t|| d S )Nr   r%   r   range_values)r   r   r8   r   r   Z
test_inputrQ   rS   outr!   r!   r"   test_intensity_range_uint8   s    rq   皙?皙?r   )333333?皙?rt   ru   c                 C   s.   t jddgt jd}t|| d}t|| d S )Nrr   rs   r   rm   r   r   float64r   r   ro   r!   r!   r"   test_intensity_range_float   s    rx   c                  C   s0   t jddgt jd} t| ddd}t|d d S )Nrr   rs   r   r   T)rn   Zclip_negative)r   r%   rv   rS   rp   r!   r!   r"   "test_intensity_range_clipped_float   s    rz   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   r0      r   r      r@   )r   r   r8   r   rescale_intensityr   r   ry   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   rG   r%   r   r   r   r   r   ry   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sBJ d S )Nr   r   r   r@   in_range)rs   ru   g333333?   )decimal)r   r   r   r   r   r   r   rS   rp   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   r0   r   )rG   r%   r%   r   ry   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s4J 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_maxry   r!   r!   r"   test_rescale_named_in_range9  s    r   c                  C   s4   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   ry   r!   r!   r"   test_rescale_named_out_range?  s    r   c                  C   s4   t jdtgt jd} tj| dd}t|dtg d S )Nr   r   uint12r   )r   r   r   r   r   r   r   
uint12_maxry   r!   r!   r"   test_rescale_uint12_limitsE  s    r   c                  C   s4   t jdtgt jd} tj| dd}t|dtg d S )Nr   r   Zuint14r   )r   r   r   r   r   r   r   
uint14_maxry   r!   r!   r"   test_rescale_uint14_limitsK  s    r   c                  C   s<   t jdt jd} t| }t |  s.J t||  d S )NrO   rO   r   )r   rP   r8   r   r   isnanri   r   ry   r!   r!   r"   test_rescale_all_zerosQ  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   ry   r!   r!   r"   test_rescale_constantX  s    r   c                  C   s6   t d} t| }t |  s(J t||  d S )Nr   )r   onesr   r   r   ri   r   ry   r!   r!   r"   test_rescale_same_values^  s    

r   zin_range,out_range)rS   r   )r   rS   c                 C   sz   t jdtddd}t j|d< d}d}| dkr:||g}n|g}t| t|| | W d    n1 sl0    Y  d S )	N   r   rI   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.cliprS   )r   r(   floatreshapenanr   r   r   )r   r   rS   msgZnumpy_warning_1_17_plusZexp_warnr!   r!   r"   test_rescale_nan_warninge  s    
	

r   zout_range, out_dtyper8   r   r   r   r   c                 C   s4   t jg dt jd}tj|| d}|j|ks0J d S )Nr:   r   r   r   r   )r   r   r'   r   r   r   )r   Z	out_dtyperS   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sBJ d S )Nr   r   r   r   r;   r@   )r   r   r'   r   r   r8   r   r   rS   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   sP   t jg dt jd} tt tj| dd}W d    n1 sB0    Y  d S )Nr   r   Zflatr   )r   r   r'   r   r   r   r   r   )rS   _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sRJ |jt| ksdJ | tjkrrdnd}tt||d	| tt||d
d dS )z!Test a grayscale float image
    Frc   )9   r|   {Gz?r;   )kernel_size
clip_limitrF   rI   rO   g)\Y@ghs?N)r	   re   r   	astronautrf   r
   r   dstackr   equalize_adapthistr3   r   r   float16r   peak_snrnorm_brightness_err)r   r^   adaptedZsnr_decimalr!   r!   r"   test_adapthist_grayscale  s    r   c                  C   s   t t } tjdd8}td t| \}}t	|dksDJ W d   n1 sX0    Y  tj
| dd}| dksJ | dksJ | j|jksJ t| }tt||d	d
 tt||dd dS )z#Test an RGB color uint16 image
    T)recordalwaysr   Nr   r         ?x&Y[@r%   {Gz?rO   )r	   Zimg_as_uintr   r   warningscatch_warningssimplefilterr   r   r-   r   rK   rL   r3   r   r   r   r   )r^   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sTJ | ddddddf } t	| }| j|jksJ tt||dd tt||dd dS )	zTest an RGBA color image
    r   r%   r   NrI   r   rO   ga+e?)r	   re   r   r   r   r   r3   r   r   r   r   r   r   r   r   )r^   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sJ |j|jksJ t
t|||jd d   dk sJ 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   rO   r   N)r	   re   r   r   r
   r   r   r3   r   r   meanabs)r^   aZimg2dZimg3dZ	adapted2dZ	adapted3dr!   r!   r"   test_adapthist_grayscale_Nd  s(    
r   c                  C   s   t d} | d7 } | t j} t| d}t |t |ksBJ t d} | d7 } | t j} t| d}t |t |ksJ dS )z(Test constant image, float and uint
       r   rO   rI   rr   N)	r   rP   rf   r   r   r   rK   rL   rw   )r^   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 ]h}tj| |d	d
}t	|dd|f | dd|f dksJ t	||ddf | |ddf dksJJ qJdS )zTest border processing
    g      Y@r   r   rO   r%   r   r|   G   rG   r   Nrr   )
r
   r	   re   r   r   r3   r2   r   r   r   )r^   Z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   Zmoonr	   re   r   r   r   )Zimg_uZimg_fZ
img_clahe0Z
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
    rI   r   rl   )ndimr
   rd   r	   re   sizer   Zsquaresumr   r   typelog)img1img2Zmser   Z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
    rI   r%   )r   r
   r   r   r   r   r   r   )r   r   ZambeZnber!   r!   r"   r   B  s
    
r   c                  C   sL   t jdtd} tjtdd t| d W d    n1 s>0    Y  d S )Nr   r   z Incorrect value of `kernel_size`r   )rI   rI   rI   )r   r   r   r   r   r   r   r   r^   r!   r!   r"   $test_adapthist_incorrect_kernel_sizeV  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_gammar3   )r^   resultr!   r!   r"   test_adjust_gamma_1x1_shape_  s    r   c                  C   s2   t jddt jdd} t| d}t||  dS )z4Same image should be returned for gamma equal to oner   r6   r      r   r%   N)r   r(   r8   r   r   r   r   )rS   r   r!   r!   r"   test_adjust_gamma_onef  s    r   c                 C   sT   t jdddj| dd}t|d}|jj} t|t	|  d  |j|jksPJ dS )z6White image should be returned for gamma equal to zeror   r@   r   Frc   r%   N)
r   randomuniformrf   r   r   r   r   r   r   )r   rS   r   r!   r!   r"   test_adjust_gamma_zerom  s
    r   c                  C   sL   t jddt jdd} t jg dt jdd}t| d}t|| dS )z\Verifying the output with expected results for gamma
    correction with gamma equal to halfr   r6   r   r   (   r   r             $   '   *   -   0   2   5   7   :   <   >   @   B   D   F   r   I   K   M   N   P   Q   S   T   V   W   Y   rD   \   ]   ^   `   a   b   r   r$   r0   g   i   j   k   l   m   o   p   q   r   s   t   u   v   w   y   z   {   |   }   ~   r   r;      r                  r)        r<                        r2                    r8     r}            r<              r@              rD           rG           rJ           rM           rP           rS        rU        rW           rZ        r\        r^        r`        rb        rd        rf     rg        ri        rk     rl        rn        rp     rq        rs     rt        rv     rw        ry     rz        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     r     r     r     r     r     r     r  r@   rG   Nr   r(   r8   r   r   r   r   r   rS   rQ   r   r!   r!   r"   test_adjust_gamma_less_onew  s    
r  c                  C   sL   t jddt jdd} t jg dt jdd}t| d}t|| dS )z[Verifying the output with expected results for gamma
    correction with gamma equal to twor   r6   r   r   (   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r%   r%   r%   r%   r%   rO   rO   rO   rO   rO   rO   rI   rI   rI   rI   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   r   r   r      r     r     r  rl   rl      r     r   r      r        r     r   r         r     r   r   !   "   #   r  r   %   &   r  r   (   )   r   r   +   ,   r   .   /   r  r   1   r   r|   4   r   6   r   8   r  r   r   ;   r   =   r   ?   r   A   r   C   r   E   r   r   r   J   r   L   r   r  O   r  r  R   r  U   r  r  X   r  [   r	  r
  r  _   r  r  c   r   r0   r  h   r  r  r  r  r  r  r  r  r  r  r  x   r  r   r!  r#  r   r;   r   r%  r'  r(  r*  r+  r,  r-  r/  r0  r2  r3  r5  r6  r8  r9  r:  r;  r=  r>  r@  rB  rC  rE  rF  rH  rJ  rK  rM  rO  rP  rR  rT  rU  rW  rY  rZ  r\  r^  r`  ra  rc  re  rg  rh  rj  rl  rn  ro  rq  rs  ru  rw  ry  rz  r|  r~  r  r  r=   r  r  r  r  r  r  r  r  r  r  r  r  r  r@   rO   Nr  r  r!   r!   r"   test_adjust_gamma_greater_one  s    
r  c                  C   sR   t dddt jd} tt t| d W d    n1 sD0    Y  d S )Nr   r@   r   r   r   )	r   r(   r8   r   r   r   r   r   r   rS   r!   r!   r"   test_adjust_gamma_negative  s    r  c                  C   s6   dt jdt jd } t tj| ddddks2J d S )Nr@   r   r   r%   rk   )gammaZgain)r   r   r8   ri   r   r   r   r!   r!   r"   test_adjust_gamma_u8_overflow  s    r  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_logr3   r   r   r^   r   r!   r!   r"   test_adjust_log_1x1_shape  s    r  c               
   C   sr   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 logarithmic
    correction with multiplier constant multiplier equal to unityr   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  r  )r  r  r"  r$  r'  r+  r.  r2  )r6  r}   r=  r@  rD  rH  rL  rO  )rS  rV  rZ  r]  ra  rd  rg  rk  )rn  rq  ru  rx  r{  r~  r  r=   )r  r  r  r  r  r  r  r  r   r%   Nr   r(   r8   r   r   r   r  r   r  r!   r!   r"   test_adjust_log  s    
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 )zVerifying the output with expected results for inverse logarithmic
    correction with multiplier constant multiplier equal to unityr   r@   r   r   )r   rO   r/   r   r  r  r  rl   )r   r  r  r   r  r  r  r   )r   r|   r   r   r  r  r   H   )r  r  r  r  rD   r  r  r0   )r  n   r  r  r  r#  r   r(  )r<   r0  r4  r8  r<  r@  rE  rJ  )rN  rS  rX  r\  ra  rf  rk  rp  )ru  rz  r  r>   r  r  r  r  r   r%   TNr  r  r!   r!   r"   test_adjust_inv_log  s    
r  c                 C   sB   t jddg| d}t|dd}|j|jks0J |j| ks>J dS )r   r%   r   r/   N)r   r   r   adjust_sigmoidr3   r   r  r!   r!   r"   test_adjust_sigmoid_1x1_shape   s    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 )zlVerifying the output with expected results for sigmoid correction
    with cutoff equal to one and gain of 5r   r@   r   r   )r%   r%   r%   rO   rO   rO   rO   rO   )rI   rI   rI   r   r   r   r/   r/   )r/   r  r  r  r  r   r  r,   )r,   r  r   r  r  r   r   r  )r  rl   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  r  r  r  r   r   r%   r/   Nr   r(   r8   r   r   r   r  r   r  r!   r!   r"   test_adjust_sigmoid_cutoff_one	  s    
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+  r4  r<  rF  rO  rW  r_  )rf  rm  rs  rx  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  r  r  )r  r  r  r  r  r  r  r  r   r,   Nr  r  r!   r!   r"   test_adjust_sigmoid_cutoff_zero  s    
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 half and gain of 10r   r@   r   r   )r%   r%   rO   rO   rI   rI   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  )r;   r<   r5  r>  rG  rP  rX  r`  )rg  rm  rs  ry  r}  r  r>   r  )r  r  r  r  r  r  r  r  r  r   rG   r,   Nr  r  r!   r!   r"   test_adjust_sigmoid_cutoff_half-  s    
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   )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r  r  r>   r  r|  rw  rr  rl  )re  r^  rV  rN  rE  r;  r3  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/   r   r   rI   rI   rO   rO   r%   r   rG   r,   TNr  r  r!   r!   r"   #test_adjust_inv_sigmoid_cutoff_half?  s    
r  c                  C   s   t ddd} t| sJ d| d< t| s2J tj| ddrDJ | d t j} t| sbJ tj| ddrtJ | t jd } t| sJ tj| ddrJ d S )	Nr   g{Gz?r   r%   r   )Zupper_percentiler@   r6   )r   rA   r   is_low_contrastrf   r8   r   r  r!   r!   r"   test_is_low_contrastQ  s    r  c                  C   s:   t jdtd} t| sJ d| d d< t| r6J d S )Nr   r   r%   r/   )r   rP   boolr   r  r  r!   r!   r"   test_is_low_contrast_booleana  s    r  exposure_funcc                 C   sR   t ddddt j}tt | | W d    n1 sD0    Y  d S )Nr   r  r   r   )r   r(   r   rf   rw   r   r   r   )r  rS   r!   r!   r"   test_negative_inputl  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||shJ t||sxJ t	|| j
sJ d S )Ndask$dask python library is not installedreasonr   r%   rO   )r%   rO   )chunks)r   r%   rO   )r%   rO   r%   )r   importorskip
dask.arrayr   Z
from_arrayr   r   r   Zallclose
isinstanceArray)daZ
dask_arrayZoutput_histZoutput_binsZexpected_binsZexpected_histr!   r!   r"   test_dask_histogramx  s     r  c                  C   sj   t jddd dd lm}  | jg dtjd}t|}|jtjksHJ t	|g d t
|| jsfJ d S )Nr  r  r  r   r{   r   r~   )r   r  r  r   r   r8   r   r   r   r   r  r  )r  rS   rp   r!   r!   r"   test_dask_rescale  s    
r  )ur   numpyr   r   Znumpy.testingr   r   r   r   r   Zskimager   r   r	   Zskimage.colorr
   Zskimage.exposure.exposurer   Zskimage.util.dtyper   Zskimage._shared._warningsr   Zskimage._shared.utilsr   markZparametrizer'   float32r#   r*   r+   r.   r5   r9   r?   rB   rC   r   rw   rH   rM   rR   r8   int16rW   r   seedZcamerarY   re   r[   r   rZ   rb   rg   rj   r]   rq   rx   rz   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   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"   <module>   s  
			














	


	
	
	
	'#	


	