
    1-Ph.                     (   d dl Zd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZmZmZmZ  ej         e
j                              Zedk    Zd Zd	 Zd
 Zd Zd Zd Zd Zd6dZej         !                    dg d          ej         !                    dd          ej         !                    dd          ej         !                    dddg          d                                                 Z"ej         !                    dg d          ej         !                    dd          ej         !                    dd          ej         !                    ddg          ej         #                    d          d                                                             Z$ej         !                    dg d          ej         !                    dd           ej         !                    ddg          d!                                     Z%ej         !                    dg d          ej         !                    d"d#d$g          ej         !                    dddg          ej         #                    d          d%                                                 Z&ej         !                    dg d          ej         !                    dd&          ej         !                    ddg          d'                                     Z'd( Z(d) Z)ej*        ej+        ej,        ej-        gZ.ej         !                    d*e.          ej         !                    d+g d,          d-                         Z/ej         !                    d*e.          ej         !                    d+g d.          d/                         Z0ej         !                    de.          d0             Z1d1 Z2ej,        ej-        gZ3ej         !                    de3          d2             Z4d3 Z5d4 Z6d5 Z7dS )7    N)assert_array_equalassert_equal)ndimage)datacolor
morphology)img_as_bool)binary
footprintsgrayfootprint_rectangleg?c                      t          d          } t          j        t          d dd df         |           }t	          t          j        t          d dd df         |                     }t          ||           d S )N   r   d      r   r
   binary_erosionbw_imgr	   r   erosionr   	footprint
binary_resgray_ress      d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/morphology/tests/test_binary.pytest_non_square_imager      sr    #F++I&vdsdDSDj'99EEJ4<ttTcTz(:IFFGGHz8,,,,,    c                      t          d          } t          j        t          |           }t	          t          j        t          |                     }t          ||           d S Nr   r   r   s      r   test_binary_erosionr       P    #F++I&vy99J4<	::;;Hz8,,,,,r   c                      t          d          } t          j        t          |           }t	          t          j        t          |                     }t          ||           d S r   )r   r
   binary_dilationr   r	   r   dilationr   r   s      r   test_binary_dilationr%      sP    #F++I'	::J4=;;<<Hz8,,,,,r   c                      t          d          } t          j        t          |           }t	          t          j        t          |                     }t          ||           d S r   )r   r
   binary_closingr   r	   r   closingr   r   s      r   test_binary_closingr)   $   r!   r   c                  *   t          j        g dg dg dg          } t          j        t          |           }t          j        |t          k              sJ t          j        t          | d          }t          j        |t          k              rJ d S )Nr   r      r   r,   r,   r,   r,   r,   r   minr   mode)nparrayr
   r'   r   allimg)r   result_default
result_mins      r   test_binary_closing_extensiver9   +   s    )))YYY			:;;I*6YGGGN6.F*+++++ &sieLLLJvjF*+++++++r   c                      t          d          } t          j        t          |           }t	          t          j        t          |                     }t          ||           d S r   )r   r
   binary_openingr   r	   r   openingr   r   s      r   test_binary_openingr=   6   r!   r   c                  *   t          j        g dg dg dg          } t          j        t          |           }t          j        |t          k              sJ t          j        t          | d          }t          j        |t          k              rJ d S )Nr+   r-   r.   r/   maxr1   )r3   r4   r
   r;   r   r5   )r   r7   
result_maxs      r   "test_binary_opening_anti_extensiverA   =   s    )))YYY			:;;I*6YGGGN6.F*+++++ &vOOOJvjF*+++++++r      c                     | dk    r)t          j        d|z  t           j                  }d|d<   nF| dk    r)t          j        d|z  t           j                  }d|d<   nt	          j        d|d	          }|S )
Nr   )   dtyper   )   rG   r#   r,       )n_dimrng)r3   onesuint8zerosr   binary_blobs)functionndimr6   s      r   _get_decomp_test_datarQ   H   s    ###gedl"(333D			&	&	&hut|28444D		$A666Jr   rO   )r   r#   r'   r;   nrows)r         ncolsdecomposition	separablesequencec                     t          ||fd          }t          ||f|          }t          |           }t          t          |           } |||          } |||          }	t	          ||	           dS tValidate footprint decomposition for various shapes.

    comparison is made to the case without decomposition.
    NrV   r/   r   rQ   getattrr
   r   )
rO   rR   rU   rV   footprint_ndarrayr   r6   funcexpectedouts
             r   test_rectangle_decompositionrc   T   s     ,UEN$OOO#UEN-PPPI

)
)C68$$DtC#4555H
$si
(
(
(Cx%%%%%r   m)r   r,   rB   r         nzFignore:.*falling back to decomposition='separable':UserWarning:skimagec                    |dk    rQ|dk    rKt          j        t                    5  t          j        |||           ddd           dS # 1 swxY w Y   dS t          j        ||d          }t          j        |||          }t          |           }t          t          |           } |||          } |||          }	t          ||	           dS )r[   r   r\   Nr/   )	pytestraises
ValueErrorr   octagonrQ   r^   r
   r   )
rO   rd   rg   rV   r_   r   r6   r`   ra   rb   s
             r   test_octagon_decompositionrm   i   sA    	Avv!q&&]:&& 	B 	Bq!=AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B '.q!4HHH&q!=III	#H--vx((4'8999d3),,,8S)))))s   AAAradius)r,   rB   rf   c                     t          j        |d          }t          j        ||          }t          |           }t          t          |           } |||          } |||          }t          ||           dS rZ   )r   diamondrQ   r^   r
   r   	rO   rn   rV   r_   r   r6   r`   ra   rb   s	            r   test_diamond_decompositionrr      s     #*6FFF"6GGGI

)
)C68$$DtC#4555H
$si
(
(
(Cx%%%%%r   shaper   r   r   )r   re   rf   c                     t          |d          }t          ||          }t          | d          }t          t          |           } |||          } |||          }t	          ||           dS r[   Nr\   r   )rP   r/   r]   )	rO   rs   rV   r_   r   r6   r`   ra   rb   s	            r   test_cube_decompositionrw      s     ,EFFF#EGGGI
q
1
1
1C68$$DtC#4555H
$si
(
(
(Cx%%%%%r   )r,   rB   r   c                     t          j        |d          }t          j        ||          }t          | d          }t          t          |           } |||          } |||          }t          ||           dS rv   )r   
octahedronrQ   r^   r
   r   rq   s	            r   test_octahedron_decompositionrz      s     #-fDIII%fMJJJI
q
1
1
1C68$$DtC#4555H
$si
(
(
(Cx%%%%%r   c                      t          j        dt           j                  } t          j        dt                    }d|ddddf<   t          j        ||           }t          t          j	        ||                     }t          ||           d S )N)rD   rD   rE   )   r|   TrB      )r3   rK   rL   rM   boolr
   r   r	   r   r   r   )r   r6   r   r   s       r   test_footprint_overflowr      s    111I
(84
(
(
(CC"ad
O&sI66J4<Y7788Hz8,,,,,r   c                  x   t           j        t           j        fD ]} t          j        dt          j                  }t          j        d          }t          j        |          }|                                } | |||           t          j        ||k              sJ t          | | ||                     d S )Nr   rE   
   r   rb   )
r
   r   r#   r3   rK   rL   
zeros_likecopyanyr   )r`   r   r6   rb   	out_saveds        r   test_out_argumentr      s    &(>? 6 6GF"(333	ghmC  HHJJ	S)%%%%vcY&'''''3S) 4 455556 6r   r`   r2   )r?   r0   ignorec                 V    t          j        dt                    } | ||           d S )Nr   rE   r2   )r3   rK   r~   r`   r2   r6   s      r   test_supported_moder      s3     '($
'
'
'CD4r   )reflectr   Nc                     t          j        d          }t          j        t          d          5   | ||           d d d            d S # 1 swxY w Y   d S )Nr   zunsupported mode)matchr   )r3   rK   ri   rj   rk   r   s      r   test_unsupported_moder      s     '(

C	z);	<	<	<  St                 s   AAAc                 
   t          j        d          }t          j        g dg dg dg dg dg dg dg dg dg dg dg dg dgt          j                  } | ||          } | |          }t          ||           d S )Nr,   )rn   )
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   rp   r3   r4   rL   r   )rO   r   imageim_expectedim_tests        r   test_default_footprintr      s    "!,,,IH***************************************	
 	! E$ (5),,KhuooG{G,,,,,r   c                     t          j        dt                    } d| ddddddf<   t          j        |           }t          j        dt                    }t          j        dd          |ddddddf<   t          ||           d S )NrS   rS   rS   r,   rB   rE   r   rf   )r3   rM   r~   r
   r;   ndigenerate_binary_structurer   )r   openedimage_expecteds      r   "test_3d_fallback_default_footprintr   	  s    HY%%EE!B$"ad
"5))F Xit444N$'$A!Q$G$GN1Q3!QqS=!v~.....r   c                     t          j        dt                    }d|ddddddf<   t          j        dt           j                  } | ||          }t          ||           d S )Nr   r,   rB   r   rt   rE   )r3   rM   r~   rK   rL   r   )rO   r   cube	new_images       r   test_3d_fallback_cube_footprintr     so     HY%%EE!B$"ad
79BH---D%%Iy%(((((r   c                     t          j        dt           j                  } d| ddddf<   d| ddddf<   d| d	<   t          j        |           }t          j        |           }t          j        dd
          }t          j        | |          }t          j        | |          }t          ||           t          ||           d S )N	   r    @  rB   r      r     re   re   r,   )	structure)	r3   rM   uint16r
   r;   r'   r   r   r   )r   
bin_opened
bin_closedr   ndimage_openedndimage_closeds         r   test_2d_ndimage_equivalencer   %  s    HVRY''EE!B$"*E!B$"*E$K&u--J&u--J-a33I'CCCN'CCCNz>222z>22222r   c                     t          j        dt           j                  } d| ddddf<   d| ddddf<   d| d	<   t          j        |           }t          j        |           }t          j        | t           j        
          }t          j        | t           j        
          }t          j        | |           t          j        | |           t          |j	        t                     t          |j	        t                     t          |j	        t           j                   t          |j	        t           j                   d S )Nr   r   rB   r   r   r   r   r   r   rE   r   r3   rM   r   r
   r;   r'   
empty_likerL   r   rF   r~   r   r   r   
int_opened
int_closeds        r   test_binary_output_2dr   6  s   HVRY''EE!B$"*E!B$"*E$K&u--J&u--JuBH555JuBH555J
%Z0000
%Z0000!4(((!4(((!28,,,!28,,,,,r   c                     t          j        dt           j                  } d| ddddddf<   d| ddddddf<   d| d	<   t          j        |           }t          j        |           }t          j        | t           j        
          }t          j        | t           j        
          }t          j        | |           t          j        | |           t          |j	        t                     t          |j	        t                     t          |j	        t           j                   t          |j	        t           j                   d S )N)r   r   r   r   rB   r   r   r   r   r   )re   re   re   rE   r   r   r   s        r   test_binary_output_3dr   K  s&   HY	**E#E!B$"ad
#E!B$"ad
E'N&u--J&u--JuBH555JuBH555J
%Z0000
%Z0000!4(((!4(((!28,,,!28,,,,,r   )rB   )8numpyr3   ri   numpy.testingr   r   scipyr   r   skimager   r   r   skimage.utilr	   skimage.morphologyr
   r   r   r   rgb2gray	astronautr6   r   r   r    r%   r)   r9   r=   rA   rQ   markparametrizerc   filterwarningsrm   rr   rw   rz   r   r   r   r#   r;   r'   binary_functionsr   r   r   r   binary_3d_fallback_functionsr   r   r   r    r   r   <module>r      s        : : : : : : : :             + + + + + + + + + + $ $ $ $ $ $ L L L L L L L L L L L L en^T^%%&&	{	- - -- - -- - -- - -, , ,- - -, , ,	 	 	 	 MMM  *--*--;
*CDD& & ED .- .-	 & MMM  011011:,77L * *  87 21 21	 *$ MMM  9--:,77& & 87 .-	 & MMM  9i"899;
*CDDL & &  ED :9	 & MMM  9--:,77& & 87 .-	 &- - -6 6 6 


	  !122!9!9!9::  ;: 32
 !122!5!5!566  76 32 %566- - 76-2
/ 
/ 
/ !' 5v7LM  %ABB) ) CB)3 3 3"- - -*- - - - -r   