
    a6d3                         d dl Zd dlZd dlmZmZ d dlmZmZm	Z	m
Z
 d dlmZ  G d d          Z G d d          Z G d	 d
          ZdS )    N)expected_warningstest_parallel)graycomatrixgraycopropslocal_binary_patternmultiblock_lbp)integral_imagec                       e Zd Zd Z e            d             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestGLCMc                 h    t          j        g dg dg dg dgt           j                  | _        d S )N)r   r      r   )r      r   r   )r   r      r   dtypenparrayuint8imageselfs    Blib/python3.11/site-packages/skimage/feature/tests/test_texture.pysetup_methodzTestGLCM.setup_method   sE    X|||+||+||+||- 57H> > >


    c           	      |   t          | j        dgdt          j        dz  t          j        dz  dt          j        z  dz  gd          }|j        dk    sJ t          j        g dg dg d	g d
gt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           d S )Nr   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   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   	r   r   r   pishaper   uint32testingassert_array_equal)r   result	expected1	expected2	expected3	expected4s         r   test_output_angleszTestGLCM.test_output_angles   s   JaBEAIq25y1}Eq
 
 ||++++Hlll)\\)\\)\\+ 35)= = =	 	
%%fQQQ1aZ&8)DDDHlll)\\)\\)\\+ 35)= = =	 	
%%fQQQ1aZ&8)DDDHlll)\\)\\)\\+ 35)= = =	 	
%%fQQQ1aZ&8)DDDHlll)\\)\\)\\+ 35)= = =	 	
%%fQQQ1aZ&8)DDDDDr   c                 $   t          | j        dgt          j        dz  gdd          }|j        dk    sJ t          j        g dg dg d	g d
gt          j                  }t          j                            |d d d d ddf         |           d S Nr   r   r   T	symmetric)r   r   r   r   )   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r    )r   r&   expecteds      r   test_output_symmetric_1z TestGLCM.test_output_symmetric_1-   s    dj1#	{A(,. . .||++++8\\\)\\)\\)\\+ 35)= = = 	
%%fQQQ1aZ&8(CCCCCr   c                 B   t           t          j        t          j        t          j        t          j        fD ]i}t          j        t                    5  t          | j
                            |          dgt          j        gd           d d d            n# 1 swxY w Y   jd S Nr   r   )floatr   doublefloat16float32float64pytestraises
ValueErrorr   r   astyper!   r   r   s     r   test_error_raise_floatzTestGLCM.test_error_raise_float7   s    ry"*bj"* 	H 	HE z** H HTZ..u55sRUGQGGGH H H H H H H H H H H H H H H	H 	Hs   7BB	B	c                 `   t           j        t           j        t           j        t           j        t           j        t           j        fD ]h}t          j        t                    5  t          | j                            |          dgt           j        g           d d d            n# 1 swxY w Y   id S )Nr   )r   int16int32int64uint16r#   uint64r:   r;   r<   r   r   r=   r!   r>   s     r   test_error_raise_int_typesz#TestGLCM.test_error_raise_int_types>   s    "(BHbiBI 	E 	EE z** E ETZ..u55sRUGDDDE E E E E E E E E E E E E E E	E 	Es    6B""B&	)B&	c                     t          j        t                    5  t          | j                            t          j                  dz
  dgt          j        gd           d d d            d S # 1 swxY w Y   d S r4   )	r:   r;   r<   r   r   r=   r   rA   r!   r   s    r   test_error_raise_negativez"TestGLCM.test_error_raise_negativeE   s    ]:&& 	K 	K**2844q81#wJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   AA++A/2A/c                     t          j        t                    5  t          | j        dz
  dgt
          j        gd           d d d            d S # 1 swxY w Y   d S )Nr   r   )r:   r;   r<   r   r   r   r!   r   s    r   #test_error_raise_levels_smaller_maxz,TestGLCM.test_error_raise_levels_smaller_maxI   s    ]:&& 	: 	:a!rugq999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   'AAAc                    t           j        t           j        t           j        t           j        t           j        t           j        fD ]}| j                            |          }t          |dgt           j
        dz  gdd          }|j        dk    sJ t          j        g dg dg d	g d
gt           j                  }t           j                            |d d d d ddf         |           d S r-   )r   rD   r#   rE   rA   rB   rC   r   r=   r   r!   r"   r   r$   r%   )r   r   imgr&   r1   s        r   test_image_data_typeszTestGLCM.test_image_data_typesM   s    Iry")RXrx
 	H 	HE *##E**C!#sRUQYK,02 2 2F<<////x!-!-!-!/ 79iA A AH J))&AAAq!*<hGGGGr   c                 >   t          j        g dg dg dg dgt           j                  }t          |dgdgdd	
          }t          j        g dg dg dg dgt           j                  }t           j                            |d d d d ddf         |           d S )Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   Fr.   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r#   r$   r%   )r   imr&   r1   s       r   test_output_distancezTestGLCM.test_output_distance]   s    X|||#||#||#||% -/H6 6 6 b1#sA???8\\\)\\)\\)\\+ 35)= = = 	
%%fQQQ1aZ&8(CCCCCr   c                    t          j        dgdgdgdggt           j                  }t          |ddgdt           j        dz  gd          }|j        dk    sJ t          j        dt           j                  }t          j        g d	g d
g dg dgt           j                  }t          j        g d
g dg dg dgt           j                  }t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           d S )Nr   r   r   r   r   r   )r   r   r   r   r   r   rO   rP   r   r   )
r   r   r   r   r!   r"   zerosr#   r$   r%   )r   rQ   r&   ze1e2s         r   test_output_combozTestGLCM.test_output_comboi   s   Xssss $&8- - - b1a&1beai.!<<||++++HV29---X|||#||#||#||% -/I7 7 7 X|||#||#||#||% -/I7 7 7
 	
%%fQQQ1aZ&8!<<<

%%fQQQ1aZ&8!<<<

%%fQQQ1aZ&8"===

%%fQQQ1aZ&8"=====r   c                    t          | j        dgdgd          }t          j                            |d d d d ddf         t          j        dt          j                             t          | j        dgdgdd          }t          j                            |d d d d ddf         t          j        dt          j                             d S )N
   r   r   rT   r   T)normed)r   r   r   r$   r%   rU   r#   r   r&   s     r   test_output_emptyzTestGLCM.test_output_empty   s    dj2$Q77

%%fQQQ1aZ&8&(hvRY&G&G&G	I 	I 	Idj2$QtDDD

%%fQQQ1aZ&8&(hvRY&G&G&G	I 	I 	I 	I 	Ir   c           
         t          | j        g ddt          j        dz  t          j        gddd          }t	          |j        d                   D ]}t	          |j        d                   D ]}t          j                            |d d d d ||f                                         d           t          j        	                    |d d d d ||f         |d d d d ||f         
                                           d S )	N)r   r   r   r   r   r   Tr\   r/   r         ?)r   r   r   r!   ranger"   r$   assert_almost_equalsumr%   	transpose)r   r&   das       r   test_normed_symmetriczTestGLCM.test_normed_symmetric   s)   dj))) "%!)RU3Q%)T; ; ; v|A'' 	N 	NA6<?++ N N
..vaaaAqj/A/E/E/G/G/24 4 4
--fQQQ1aZ.@.4QQQ1aZ.@.J.J.L.LN N N NN	N 	Nr   c                     t          | j        ddgdgddd          }t          j        |d          }t	          |d          }t          j                            |d	         d
d           d S )Nr   r   r   r   Tr`   r   contrastr   r   gQ?decimal)r   r   r   roundr   r$   rc   )r   r&   rj   s      r   test_contrastzTestGLCM.test_contrast   sr    dj1a&1#q%)T; ; ;&!$$vz22

&&x~ua&HHHHHr   c                     t          | j        dgdt          j        dz  gddd          }t          j        |d          }t          |d          }t          j                            |d	         d
d           d S )Nr   r   r   r   Tr`   r   dissimilarityrk   gn?rl   r   r   r   r!   rn   r   r$   rc   r   r&   rq   s      r   test_dissimilarityzTestGLCM.test_dissimilarity   sy    dj1#2519~q%)T; ; ;&!$$#FO<<

&&}T':E1&MMMMMr   c                     t          | j        ddgt          j        dz  gddd          }t          j        |d          }t          |d          d         }t          j                            |d	d
           d S )Nr   r   r   r   Tr`   rq   rk   gHzG?rl   rr   rs   s      r   test_dissimilarity_2zTestGLCM.test_dissimilarity_2   sy    dj1a&2519+q%)T; ; ;&!$$#FO<<TB

&&}eQ&GGGGGr   c                 8   t           j                            d          dz                      t           j                  }t	          |g dg dd          }t           j                            t          j        t          |d                    dk                d S )N)d   rx      )r   r   r      )r   g      ?r   g      ?)levelscorrelationra   )	r   randomr=   r   r   r$   assert_maxr   )r   rL   ps      r   test_non_normalized_glcmz!TestGLCM.test_non_normalized_glcm   s    y
++a/77AAlll,=,=,=aHHH

26+a"?"?@@3FGGGGGr   c                     t          | j        dgdgd          }t          j        t                    5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   ABC)r   r   r:   r;   r<   r   r]   s     r   test_invalid_propertyzTestGLCM.test_invalid_property   s    dj1#sA66]:&& 	' 	'&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AAAc                     t          | j        dgddgddd          }t          |d          d         }t          j                            |d	           d S )
Nr   r   r0   r   Tr`   homogeneityrk   g?r   r   r   r   r$   rc   )r   r&   r   s      r   test_homogeneityzTestGLCM.test_homogeneity   s]    dj1#1vq(,. . .!&-88>

&&{J?????r   c                     t          | j        dgddgddd          }t          |d          d         }t          j                            |d           d S )	Nr   r   r   Tr`   energyrk   g3YNp?r   r   r&   r   s      r   test_energyzTestGLCM.test_energy   s]    dj1#1vq(,. . .VX..t4

&&vz:::::r   c                     t          | j        ddgdgddd          }t          |d          }t          j                            |d         d	           t          j                            |d
         d           d S )Nr   r   r   r   Tr`   r|   rk   g
U i?)r   r   gl	TZZ?r   r   s      r   test_correlationzTestGLCM.test_correlation   sx    dj1a&1#q(,. . .V]33

&&vd|Z@@@

&&vd|Z@@@@@r   c                     t          j        dt           j                  }t          |g ddt           j        dz  gddd          }d	D ]}t          ||           d S )
NrT   r   )r   r   ry   r   r   r   Tr`   )rj   rq   r   r   r|   ASM)r   onesr   r   r!   r   )r   rQ   r&   props       r   test_uniform_propertiesz TestGLCM.test_uniform_properties   su    WV28,,,b)))a^Qt(,. . .5 	& 	&D%%%%	& 	&r   N)__name__
__module____qualname__r   r   r+   r2   r?   rF   rH   rJ   rM   rR   rY   r^   rh   ro   rt   rv   r   r   r   r   r   r    r   r   r   r   
   s       > > > ]__E E _E4D D DH H HE E EK K K: : :   
D 
D 
D> > >.I I I	N 	N 	NI I IN N NH H HH H H
' ' '
@ @ @; ; ;A A A& & & & &r   r   c                       e Zd Zd Z e            d             Zd Zej        	                    de
j        e
j        e
j        g          d             Zd Zd Zd Zd	S )
TestLBPc           	      t    t          j        g dg dg dg dg dg dgt           j                  | _        d S )N)   r0   r   r      r   )0               ?   )ry   r      2   r      )   r   r   (      r   )r   r   r   "   r      )      r   r      ~   r   r   r   s    r   r   zTestLBP.setup_method   sa    X>>>>>>>>>>>>>>>>>>@ %'H. . .


r   c           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   default)r      r   r   `   r   )   r         @   8   )   r         r      )   g      P@>   r      r   )r   r   r      r      )r   rz   r   r   r   r   r   r   r   r   r$   r%   r   lbprefs      r   test_defaultzTestLBP.test_default   s    "4:q!Y??h6666666667776666668 9 9 	
%%c3/////r   c           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   rorr      r   r   r   r      r   rz   3   r      w   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _   r   r   r   rz   r   r   r   r   r   r   s      r   test_rorzTestLBP.test_ror   s    "4:q!U;;h6666666666666666668 9 9 	
%%c3/////r   r   c           	      >   | j                             |          }d}t          |g          5  t          |ddd          }d d d            n# 1 swxY w Y   t	          j        g dg dg dg dg d	g d
g          }t          j                            ||           d S )N8Applying `local_binary_pattern` to floating-point imagesry   r   r   r   r   r   r   r   r   )r   r=   r   r   r   r   r$   r%   )r   r   r   msgr   r   s         r   test_float_warningzTestLBP.test_float_warning   s    
!!%((Hu%% 	; 	;&uaE::C	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;h6666666666666666668 9 9 	
%%c3/////s   AAAc           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   uniform)r   r   r   ry   r   ry   )rz   r   	   r   r   r   )r   ry   r   r   r   r0   )r   r   rz   r0   rz   r   )ry   r   ry   r   r   r   )r   r   r   ry   r   r   r   r   s      r   test_uniformzTestLBP.test_uniform   s    "4:q!Y??h******************, - - 	
%%c3/////r   c                    t           j                            d           t           j                            dd          }d}||                                z  |z  }d\  }}d}t          |g          5  t          |||d          }d d d            n# 1 swxY w Y   |ddddf         }|d	z  |d
z
  z  |z  }t           j                            |	                                |d           d S )Ni i  g333333?)r   r   r   varrz   r   r   r   )
r   r}   seedrandstdr   r   r$   rc   mean)r   r   
target_stdPRr   r   r1   s           r   test_varzTestLBP.test_var  s+    		x    	sC((
		#j0 1Hu%% 	; 	;&uaE::C	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; !B$"*o q=AaC(*

&&sxxzz8Q?????s   3BBBc           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   nri_uniform)r   6   r   9   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$   assert_array_almost_equalr   s      r   test_nri_uniformzTestLBP.test_nri_uniform  s    "4:q!]CCh0000000000000000002 3 3 	
,,S#66666r   N)r   r   r   r   r   r   r   r:   markparametrizer   r7   r8   r9   r   r   r   r   r   r   r   r   r      s        . . . ]__0 0 _00 0 0 [Wrz2:rz&JKK0 0 LK00 0 0@ @ @27 7 7 7 7r   r   c                       e Zd Zd ZdS )	TestMBLBPc                     t          j        dd          }d|ddddf<   d|d dd df<   d|dd dd f<   d}t          |          }t          |d	d	dd          }t           j                            ||           d S )
N)r   r   r   r   r   r   r0   r      r   )r   rU   r	   r   r$   assert_equal)r   test_imgcorrect_answerint_imglbp_codes        r   test_single_mblbpzTestMBLBP.test_single_mblbp,  s    
 8F'2221ac!RaRQRR $ **!'1aA66

.99999r   N)r   r   r   r   r   r   r   r   r   *  s#        : : : : :r   r   )numpyr   r:   skimage._shared.testingr   r   skimage.featurer   r   r   r   skimage.transformr	   r   r   r   r   r   r   <module>r     s         D D D D D D D DC C C C C C C C C C C C , , , , , ,A& A& A& A& A& A& A& A&HY7 Y7 Y7 Y7 Y7 Y7 Y7 Y7x: : : : : : : : : :r   