o
    j                  	   @   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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/0d  e1 Z2e3e2Z4e5e4d+ d, Z4d-d. Z6d/d0 Z7ejdej'ejej(gd1d2 Z8d3d4 Z9d5d6 Z:ejd7d&d d8gfdd d9gfd:d;d<gfgd=d> Z;ejd7d&d?d@gfddAd8gfdBdCdDgfgdEdF Z<dGdH Z=dIZ>dJZ?dKZ@dLZAdMdN ZBdOdP ZCejdej'ejej(gdQdR ZDdSdT ZEejdejejFej'ejej(gdUdV ZGdWdX ZHdYdZ ZId[d\ ZJd]d^ ZKd_d` ZLdadb ZMdcdd ZNejjOeejPedek dfdgejdhdidjgdkdl ZQejdmdnej,fdoejRfdpejRfdqejRfdreSfgdsdt ZTdudv ZUdwdx ZVdydz ZWejdej'ejej(gd{d| ZXd}d~ ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcejdej'ejej(gdd Zddd Zedd Zfdd Zgdd Zhejdej'ejej(gdd Zidd Zjdd Zkejdej'ejej(gdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrejdejsejtejugdd Zvdd Zwdd ZxdS )    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equal)Version)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"   e/var/www/html/Deteccion_Ine/venv/lib/python3.10/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_image5   s
   r0   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   r7   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%   r8   )	r   r   uint8r	   r   r   r)   r   r5   r*   r"   r"   r#   test_peak_uint_range_dtypeF      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   r9   )	r   r   r(   r	   r   r   r)   r   r5   r*   r"   r"   r#   test_peak_int_range_dtypeP   r<   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      r8   r   r   r   r9   )	r   linspacer:   r	   r   r   r)   r   r5   r*   r"   r"   r#   test_flat_uint_range_dtypeZ      rE   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>   r8   r   r   r   r9   )	r   rD   r(   r	   r   r   r)   r   r5   r*   r"   r"   r#   test_flat_int_range_dtypea   rF   rG   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_imageh   s   rL   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   )rJ   r   g   ?)
r   r   r	   r   r   r   minmaxr   r/   )r   r   rJ   r    r!   r"   r"   r#   "test_peak_float_out_of_range_dtypeq   s   rQ   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   rC   rC   r   r   F)r   	normalizer8   r&   r      r   Tg      @)r   r   r:   r	   r   zerosr   )r   r    r!   expectedr"   r"   r#   test_normalize|   s   



rV   r   imager3   )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.)r1   r1   r   r&   r   )Zaxis)r   r3   r   N)
r   r   stackfullr	   r   Z
issubdtypeintegerr   r)   )
r   r   r3   r5   Zchannel_sizeZiminZ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.rM   rI   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   

rf   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`   ra   )r   rb   rc   rd   re   r"   r"   r#   test_equalize_float   s   
rk   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
   ri   r_   r   rT   r5   r	   r\   r`   ra   all)rb   rl   Zimg_mask_eqrc   rd   re   r"   r"   r#   test_equalize_masked   s   

rn   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&   rN   皙?N)r   rD   r/   Zpolyfit)rd   Znorm_intensityZslopeZ	interceptr"   r"   r#   ra      s    ra   ztest_input,expectedr&   rC   )r.      r.   rp   c                 C   .   t jddgt jd}t|| d}t|| d S )Nr   r&   r   range_values)r   r   r:   r   r   Z
test_inputrU   rW   outr"   r"   r#   test_intensity_range_uint8      rv   皙?皙?r   )333333?皙?rz   r{   c                 C   rq   )Nrx   ry   r   rr   r   r   float64r   r   rt   r"   r"   r#   test_intensity_range_float   rw   r~   c                  C   s0   t jddgt jd} t| ddd}t|d d S )Nrx   ry   r   r   T)rs   Zclip_negative)r   r&   r|   rW   ru   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   r2      r   r      rC   )r   r   r:   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   rK   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   rC   in_range)ry   r{   g333333?   )decimal)r   r   r	   r   r   r   r   rW   ru   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   r2   r   )rK   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_range<  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_rangeB     r   c                  C   r   )Nr   r   uint12r   )r   r   r   r   r	   r   r   
uint12_maxr   r"   r"   r#   test_rescale_uint12_limitsH  r   r   c                  C   r   )Nr   r   Zuint14r   )r   r   r   r   r	   r   r   
uint14_maxr   r"   r"   r#   test_rescale_uint14_limitsN  r   r   c                  C   s<   t jdt jd} t| }t |  sJ t||  d S )NrS   rS   r   )r   rT   r:   r	   r   isnanrm   r   r   r"   r"   r#   test_rescale_all_zerosT  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_constant[  r   r   c                  C   s6   t d} t| }t |  sJ t||  d S )Nr   )r   onesr	   r   r   rm   r   r   r"   r"   r#   test_rescale_same_valuesa  s   

r   z1.25z,Older NumPy throws a few extra warnings herereasonzin_range,out_range)rW   r   )r   rW   c                 C   s^   t jdtddd}t j|d< tdg t|| | W d    d S 1 s(w   Y  d S )N   r   rM   r   )r&   r&   zWOne or more intensity levels are NaN\. Rescaling will broadcast NaN to the full image\.)r   r)   floatreshapenanr   r	   r   )r   r   rW   r"   r"   r#   test_rescale_nan_warningh  s   
"r   zout_range, out_dtyper:   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_dtyperW   output_imager"   r"   r#   test_rescale_output_dtypez  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>   rC   )r   r   r(   r	   r   r:   r   r   rW   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   )rW   _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 imageFrg   )9   r   {Gz?r>   )kernel_size
clip_limitrJ   rM   rS   g)\Y@ghs?N)r
   ri   r   	astronautrj   r   r   dstackr	   equalize_adapthistr5   r   r   float16r   peak_snrnorm_brightness_err)r   rb   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 imageT)recordalwaysr   Nr   r         ?x&Y[@r&   {Gz?rS   )r
   Zimg_as_uintr   r   warningscatch_warningssimplefilterr	   r   r/   r   rO   rP   r5   r   r   r   r   )rb   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 imager   r&   r   NrM   r   rS   ga+e?)r
   ri   r   r   r   r   r5   r   r   r	   r   r   r   r   r   )rb   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   r1   g?)r   r   rS   r   N)r
   ri   r   r   r   r   r   r5   r	   r   meanabs)rb   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   rS   rM   rx   N)	r   rT   rj   r   r	   r   rO   rP   r}   )rb   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 processingg      Y@r   r   rS   r&   r   r   G   rK   r   Nrx   )
r   r
   ri   r   r   r5   r4   r	   r   r   )rb   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
   ri   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
    rM   r   rp   )ndimr   rh   r
   ri   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
    rM   r&   )r   r   r   r   r   r   r   r   )r   r   ZambeZnber"   r"   r#   r   1  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   )rM   rM   rM   )r   r   r   r   r   r   r	   r   rb   r"   r"   r#   $test_adapthist_incorrect_kernel_sizeE  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_gammar5   )rb   resultr"   r"   r#   test_adjust_gamma_1x1_shapeO  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   r8   r      r   r&   N)r   r)   r:   r   r	   r   r   )rW   r   r"   r"   r#   test_adjust_gamma_oneV  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   rC   r   Frg   r&   N)
r   randomuniformrj   r	   r   r   r   r   r   )r   rW   r   r"   r"   r#   test_adjust_gamma_zero]  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   r8   r   r   (   r   r             $   '   *   -   0   2   5   7   :   <   >   @   B   D   F   r   I   K   M   N   P   Q   S   T   V   W   Y   rH   \   ]   ^   `   a   b   r   r%   r2   g   i   j   k   l   m   o   p   q   r   s   t   u   v   w   y   z   {   |   }   ~   r   r>      r                  r4        r?                        r=                    rC     r            rG              rK              rO           rR           rU           rX           r[           r^        r`        rb           re        rg        ri        rk        rm        ro        rq     rr        rt        rv     rw        ry        r{     r|        r~     r        r     r        r     r        r     r     r        r     r     r     r@   r@   rA   rA      r     r        r     r     r     r     r     r        r     r     r     r     r     r     r     r     r     r     r     r     r     r     r  rC   rK   Nr   r)   r:   r   r   r	   r   r   rW   rU   r   r"   r"   r#   test_adjust_gamma_less_oneg  &             r  c                  C   r   )z[Verifying the output with expected results for gamma
    correction with gamma equal to twor   r8   r   r   (   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r&   r&   r&   r&   r&   rS   rS   rS   rS   rS   rS   rM   rM   rM   rM   r   r   r   r   r1   r1   r1   r1      r  r     r  r  r   r   r   	   r  r  r.   r.      r  r  r   r      r     r  r   r   r   r      r     r     r  rp   rp      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   r2   r  h   r  r  r  r  r   r!  r"  r$  r%  r&  r(  x   r)  r+  r,  r.  r   r>   r   r0  r2  r3  r5  r6  r7  r8  r:  r;  r=  r>  r@  rA  rC  rD  rE  rF  rH  rI  rK  rM  rN  rP  rQ  rS  rU  rV  rX  rZ  r[  r]  r_  r`  rb  rd  re  rg  ri  rk  rl  rn  rp  rr  rs  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  rC   rS   Nr  r  r"   r"   r#   test_adjust_gamma_greater_onev  r  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   rC   r   r   r   )	r   r)   r:   r   r   r   r   r	   r   rW   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 )NrC   r   r   r&   ro   )gammaZgain)r   r   r:   rm   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_logr5   r   r   rb   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   rC   r   r   )r   r1   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  r9  r=  )rA  r   rH  rK  rO  rS  rW  rZ  )r^  ra  re  rh  rl  ro  rr  rv  )ry  r|  r  r  r  r  r  r@   )r  r  r  r  r  r  r  r  r   r&   Nr   r)   r:   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   rC   r   r   )r   rS   r1   r   r  r  r  rp   )r   r  r  r   r  r  r  r   )r   r   r  r  r  r  r  H   )r  r  r  r  rH   r  r  r2   )r  n   r#  r'  r*  r.  r   r3  )r?   r;  r?  rC  rG  rK  rP  rU  )rY  r^  rc  rg  rl  rq  rv  r{  )r  r  r  rA   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   r1   N)r   r   r	   adjust_sigmoidr5   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   rC   r   r   )r&   r&   r&   rS   rS   rS   rS   rS   )rM   rM   rM   r   r   r   r1   r1   )r1   r  r  r  r  r   r  r.   )r.   r  r   r  r  r   r   r  )r  rp   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&   r1   Nr   r)   r:   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   rC   r   r   )r   r6  r?  rG  rQ  rZ  rb  rj  )rq  rx  r~  r  r  r  rA   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   rC   r   r   )r&   r&   rS   rS   rM   rM   r   r1   )r1   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  rR  r[  rc  rk  )rr  rx  r~  r  r  r  rA   r  )r  r  r  r  r  r  r  r  r  r   rK   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   rC   r   r   )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r  r  rA   r  r  r  r}  rw  )rp  ri  ra  rY  rP  rF  r>  r5  )r.  r%  r  r  r  r  r  r  )r  r  r  r  r  r   r  r  )r  r   r  r   r.   r   r  r  )r1   r   r   rM   rM   rS   rS   r&   r   rK   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_percentilerC   r8   )r   rD   r	   is_low_contrastrj   r:   r   r  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&   r1   )r   rT   boolr	   r  r  r"   r"   r#   test_is_low_contrast_boolean?  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   rj   r}   r   r   r   )r  rW   r"   r"   r#   test_negative_inputK  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 installedr   r   r&   rS   )r&   rS   )chunks)r   r&   rS   )r&   rS   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_histogramY  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   r:   r	   r   r   r   r   r  )r  rW   ru   r"   r"   r#   test_dask_rescalef  s   
r  )yr   numpyr   r   Znumpy.testingr   r   r   r   r   Zpackaging.versionr   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-   r0   r7   r;   rB   rE   rG   r   r}   rL   rQ   rV   r:   Zint16r[   r   seedcamerar]   ri   r_   r   r^   rf   rk   rn   ra   rv   r~   r   r   r   r   r   r   r   r   r   Zint32r   r   r   r   r   r   r   r   Zskipif__version__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   
			







 
 
	







	    




