o
    e<                  	   @   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   sX   t jddg| d}tjtdd tj|dd\}}W d    d S 1 s%w   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!   TD:\Projects\ConvertPro\env\Lib\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s"J |d dks*J 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       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_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   r6   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$   r7   )	r   r   uint8r   r   r   r(   r   r4   r)   r!   r!   r"   test_peak_uint_range_dtypeC      r:   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   r8   )	r   r   r'   r   r   r   r(   r   r4   r)   r!   r!   r"   test_peak_int_range_dtypeM   r;   rA   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      r7   r   r   r   r8   )	r   linspacer9   r   r   r   r(   r   r4   r)   r!   r!   r"   test_flat_uint_range_dtypeW      rD   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=   r7   r   r   r   r8   )	r   rC   r'   r   r   r   r(   r   r4   r)   r!   r!   r"   test_flat_int_range_dtype^   rE   rF   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"   "test_peak_float_out_of_range_imagee   s   rK   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   )rI   r   g   ?)
r   r   r   r   r   r   minmaxr   r.   )r   r   rI   r   r    r!   r!   r"   "test_peak_float_out_of_range_dtypen   s   
rP   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   rB   rB   r   r   F)r   	normalizer7   r%   r      r   Tg      @)r   r   r9   r   r   zerosr   )r   r   r    expectedr!   r!   r"   test_normalizez   s   



rU   r   imager2   )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.)r0   r0   r   r%   r   )Zaxis)r   r2   r   N)
r   r   stackfullr   r   Z
issubdtypeintegerr   r(   )
r   r   r2   r4   Zchannel_sizeZiminZimaxr   r   r    r!   r!   r"   (test_multichannel_hist_common_bins_uint8   s$   
rZ   g      @r   c                  C   s&   t t} t jtdd}t| | dS )z)Check integer bins used for uint8 images.rL   rH   N)r   equalize_histtest_img_intr   )Zimg_eq0Zimg_eq1r!   r!   r"   test_equalize_uint8_approx   s   
r]   c                  C   s.   t t} t| }t|\}}t| d S )N)r	   Zimg_as_ubytetest_imgr   r[   cumulative_distributioncheck_cdf_slope)imgimg_eqcdf	bin_edgesr!   r!   r"   test_equalize_ubyte   s   

re   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_floatr^   astyper   r[   r   r   r_   r`   )r   ra   rb   rc   rd   r!   r!   r"   test_equalize_float   s   
rj   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	   rh   r^   r   rS   r4   r   r[   r_   r`   all)ra   rk   Zimg_mask_eqrb   rc   rd   r!   r!   r"   test_equalize_masked   s   

rm   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%   rM   皙?N)r   rC   r.   Zpolyfit)rc   Znorm_intensityZslopeZ	interceptr!   r!   r"   r`      s    r`   ztest_input,expectedr%   rB   )r-      r-   ro   c                 C   .   t jddgt jd}t|| d}t|| d S )Nr   r%   r   range_values)r   r   r9   r   r   Z
test_inputrT   rV   outr!   r!   r"   test_intensity_range_uint8      ru   皙?皙?r   )333333?皙?ry   rz   c                 C   rp   )Nrw   rx   r   rq   r   r   float64r   r   rs   r!   r!   r"   test_intensity_range_float   rv   r}   c                  C   s0   t jddgt jd} t| ddd}t|d d S )Nrw   rx   r   r   T)rr   Zclip_negative)r   r%   r{   rV   rt   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   r1      r   r      rB   )r   r   r9   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   rJ   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   rB   in_range)rx   rz   g333333?   )decimal)r   r   r   r   r   r   r   rV   rt   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   r1   r   )rJ   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_range9  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_limitsE  r   r   c                  C   r   )Nr   r   Zuint14r   )r   r   r   r   r   r   r   
uint14_maxr~   r!   r!   r"   test_rescale_uint14_limitsK  r   r   c                  C   s<   t jdt jd} t| }t |  sJ t||  d S )NrR   rR   r   )r   rS   r9   r   r   isnanrl   r   r~   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   r~   r!   r!   r"   test_rescale_constantX  r   r   c                  C   s6   t d} t| }t |  sJ t||  d S )Nr   )r   onesr   r   r   rl   r   r~   r!   r!   r"   test_rescale_same_values^  s   

r   zin_range,out_range)rV   r   )r   rV   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   rL   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.cliprV   )r   r(   floatreshapenanr   r   r   )r   r   rV   msgZnumpy_warning_1_17_plusZexp_warnr!   r!   r"   test_rescale_nan_warninge  s   
	

"r   zout_range, out_dtyper9   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   Z	out_dtyperV   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=   rB   )r   r   r'   r   r   r9   r   r   rV   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   Zflatr   )r   r   r'   r   r   r   r   r   )rV   _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
    Frf   )9   r   {Gz?r=   )kernel_size
clip_limitrI   rL   rR   g)\Y@ghs?N)r	   rh   r   	astronautri   r
   r   dstackr   equalize_adapthistr4   r   r   float16r   peak_snrnorm_brightness_err)r   ra   adaptedZ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 dS )z#Test an RGB color uint16 image
    T)recordalwaysr   Nr   r         ?x&Y[@r%   {Gz?rR   )r	   Zimg_as_uintr   r   warningscatch_warningssimplefilterr   r   r.   r   rN   rO   r4   r   r   r   r   )ra   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   NrL   r   rR   ga+e?)r	   rh   r   r   r   r   r4   r   r   r   r   r   r   r   r   )ra   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   r0   g?)r   r   rR   r   N)r	   rh   r   r   r
   r   r   r4   r   r   meanabs)ra   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s!J t d} | d7 } | t j} t| d}t |t |ksBJ dS )z(Test constant image, float and uint
       r   rR   rL   rw   N)	r   rS   ri   r   r   r   rN   rO   r|   )ra   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   rR   r%   r   r   G   rJ   r   Nrw   )
r
   r	   rh   r   r   r4   r3   r   r   r   )ra   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   moonr	   rh   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
    rL   r   ro   )ndimr
   rg   r	   rh   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
    rL   r%   )r   r
   r   r   r   r   r   r   )r   r   ZambeZnber!   r!   r"   r   B  s
   
r   c                  C   sN   t jdtd} tjtdd t| d W d    d S 1 s w   Y  d S )Nr   r   z Incorrect value of `kernel_size`r   )rL   rL   rL   )r   r   r   r   r   r   r   r   ra   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_gammar4   )ra   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   r7   r      r   r%   N)r   r(   r9   r   r   r   r   )rV   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s(J dS )z6White image should be returned for gamma equal to zeror   rB   r   Frf   r%   N)
r   randomuniformri   r   r   r   r   r   r   )r   rV   r   r!   r!   r"   test_adjust_gamma_zerom  s
   r   c                  C   L   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   r7   r   r   (   r   r             $   '   *   -   0   2   5   7   :   <   >   @   B   D   F   r   I   K   M   N   P   Q   S   T   V   W   Y   rG   \   ]   ^   `   a   b   r   r$   r1   g   i   j   k   l   m   o   p   q   r   s   t   u   v   w   y   z   {   |   }   ~   r   r=      r                  r2        r>                        r;                    rA     r            rE              rI              rM           rP           rS           rV           rY           r\        r^        r`           rc        re        rg        ri        rk        rm        ro     rp        rr        rt     ru        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     r     r     r     r     r  rB   rJ   Nr   r(   r9   r   r   r   r   r   rV   rT   r   r!   r!   r"   test_adjust_gamma_less_onew  s   
r  c                  C   r   )z[Verifying the output with expected results for gamma
    correction with gamma equal to twor   r7   r   r   (   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r%   r%   r%   r%   r%   rR   rR   rR   rR   rR   rR   rL   rL   rL   rL   r   r   r   r   r0   r0   r0   r0      r  r     r  r  r   r   r   	   r  r  r-   r-      r  r  r   r      r     r  r   r   r   r      r     r     r  ro   ro      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   r1   r  h   r  r  r  r  r  r  r   r"  r#  r$  r&  x   r'  r)  r*  r,  r   r=   r   r.  r0  r1  r3  r4  r5  r6  r8  r9  r;  r<  r>  r?  rA  rB  rC  rD  rF  rG  rI  rK  rL  rN  rO  rQ  rS  rT  rV  rX  rY  r[  r]  r^  r`  rb  rc  re  rg  ri  rj  rl  rn  rp  rq  rs  ru  rw  rx  rz  r|  r~  r  r  r  r  r  r  r  r?   r  r  r  r  r  r  r  r  r  r  r  r  r  rB   rR   Nr  r  r!   r!   r"   test_adjust_gamma_greater_one  s   
r  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   rB   r   r   r   )	r   r(   r9   r   r   r   r   r   r   rV   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sJ d S )NrB   r   r   r%   rn   )gammaZgain)r   r   r9   rl   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_logr4   r   r   ra   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   rB   r   r   )r   r0   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-  r0  r4  r7  r;  )r?  r   rF  rI  rM  rQ  rU  rX  )r\  r_  rc  rf  rj  rm  rp  rt  )rw  rz  r~  r  r  r  r  r?   )r  r  r  r  r  r  r  r  r   r%   Nr   r(   r9   r   r   r   r  r   r  r!   r!   r"   test_adjust_log  s   
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   rB   r   r   )r   rR   r0   r   r  r  r  ro   )r   r  r  r   r  r  r  r   )r   r   r   r   r  r  r  H   )r  r  r  r  rG   r  r  r1   )r  n   r!  r%  r(  r,  r   r1  )r>   r9  r=  rA  rE  rI  rN  rS  )rW  r\  ra  re  rj  ro  rt  ry  )r~  r  r  r@   r  r  r  r  r   r%   TNr  r  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   r0   N)r   r   r   adjust_sigmoidr4   r   r  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   rB   r   r   )r%   r%   r%   rR   rR   rR   rR   rR   )rL   rL   rL   r   r   r   r0   r0   )r0   r  r  r  r  r   r  r-   )r-   r  r   r  r  r   r   r  )r  ro   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%   r0   Nr   r(   r9   r   r   r   r  r   r  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   rB   r   r   )r   r4  r=  rE  rO  rX  r`  rh  )ro  rv  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-   Nr  r  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   rB   r   r   )r%   r%   rR   rR   rL   rL   r   r0   )r0   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  rP  rY  ra  ri  )rp  rv  r|  r  r  r  r@   r  )r  r  r  r  r  r  r  r  r  r   rJ   r-   Nr  r  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   rB   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{  ru  )rn  rg  r_  rW  rN  rD  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  )r0   r   r   rL   rL   rR   rR   r%   r   rJ   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| 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   )Zupper_percentilerB   r7   )r   rC   r   is_low_contrastri   r9   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| rJ d S )Nr   r   r%   r0   )r   rS   boolr   r  r  r!   r!   r"   test_is_low_contrast_booleana  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   r  r   r   )r   r(   r   ri   r|   r   r   r   )r  rV   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||s4J t||s<J t	|| j
sDJ d S )Ndask$dask python library is not installedreasonr   r%   rR   )r%   rR   )chunks)r   r%   rR   )r%   rR   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s$J t	|g d t
|| js3J d S )Nr  r  r  r   r   r   r   )r   r  r  r   r   r9   r   r   r   r   r  r   )r  rV   rt   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'   Zfloat32r#   r*   r,   r/   r6   r:   rA   rD   rF   r   r|   rK   rP   rU   r9   Zint16rZ   r   seedcamerar\   rh   r^   r   r]   re   rj   rm   r`   ru   r}   r   r   r   r   r   r   r   r   r   Z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   
			














	



		
	
	'#	


	