Ë
    îì�i£  ã                   ó,   — d Z ddlZddlZddlZd„ Zd„ Zy)a)  Analytical transformations from raw image moments to central moments.

The expressions for the 2D central moments of order <=2 are often given in
textbooks. Expressions for higher orders and dimensions were generated in SymPy
using ``tools/precompute/moments_sympy.py`` in the GitHub repository.

é    Nc                 óÀ  — | j                   }| j                  d   dz
  }| j                  }| j                  t        j
                  d¬«      } t	        j                  | «      }|dk\  s|dvrt        d«      ‚| }|dk(  �r|d	   |d
   z  }|d   |d
   z  }|d
   |d
<   |dkD  r3|d   ||d   z  z
  |d<   |d   ||d	   z  z
  |d<   |d   ||d   z  z
  |d<   |dkD  �rô|d   d|z  |d   z  z
  ||d   z  z
  |dz  |d   z  z   ||z  |d	   z  z   |d<   |d   d|z  |d   z  z
  ||d   z  z
  d|z  |z  |d   z  z   |d<   |d   d|z  |d   z  z
  d|dz  z  |d	   z  z   |d<   |d   d|z  |d   z  z
  d|dz  z  |d   z  z   |d<   �nK|d   |d   z  }|d   |d   z  }|d   |d   z  }|d   |d<   |dkD  rl| |d   z  |d   z   |d<   | |d   z  |d   z   |d<   | |d   z  |d   z   |d<   | |d   z  |d   z   |d<   | |d   z  |d   z   |d<   | |d   z  |d   z   |d<   |dkD  �r«d|dz  z  |d   z  d|z  |d   z  z
  |d   z   |d<   | |d   z  d|z  ||d   z  |d   z
  z  z   |d   z   |d<   |dz  |d   z  d|z  |d   z  z
  |||d   z  |d   z
  z  z   |d    z   |d <   d|dz  z  |d   z  d|z  |d   z  z
  |d!   z   |d!<   | |d   z  d|z  ||d   z  |d   z
  z  z   |d"   z   |d"<   | |d   z  |||d   z  |d   z
  z  z   |||d   z  |d   z
  z  z   |d#   z   |d#<   | |d   z  d|z  | |d   z  |d   z   z  z
  |d$   z   |d$<   |dz  |d   z  d|z  |d   z  z
  |||d   z  |d   z
  z  z   |d%   z   |d%<   |dz  |d   z  d|z  |d   z  z
  |||d   z  |d   z
  z  z   |d&   z   |d&<   d|dz  z  |d   z  d|z  |d   z  z
  |d'   z   |d'<   |j                  |d¬«      S )(aO  Analytical formulae for 2D and 3D central moments of order < 4.

    `moments_raw_to_central` will automatically call this function when
    ndim < 4 and order < 4.

    Parameters
    ----------
    moments_raw : ndarray
        The raw moments.

    Returns
    -------
    moments_central : ndarray
        The central moments.
    r   é   F)Úcopyé   ©é   é   z:This function only supports 2D or 3D moments of order < 4.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   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r	   r   r   )ÚndimÚshapeÚdtypeÚastypeÚnpÚfloat64Ú
zeros_likeÚ
ValueError)	Úmoments_rawr
   ÚorderÚfloat_dtypeÚmoments_centralÚmÚcxÚcyÚczs	            úˆ/var/www/ITT-ServiceAPI-Services/ITT-Document-Scan/mrzscanner/mrzenv/lib/python3.12/site-packages/skimage/measure/_moments_analytical.pyÚ_moments_raw_to_central_fastr      s>  € ð  ×Ñ€DØ×Ñ˜aÑ  1Ñ$€EØ×#Ñ#€Kà×$Ñ$¤R§Z¡Z°eÐ$Ó<€KÜ—m‘m KÓ0€OØ�‚z�T Ñ'ÜÐUÓVÐVØ€AØˆqƒyØˆt‰W�q˜‘wÑˆØˆt‰W�q˜‘wÑˆØ ! $¡ˆ˜Ñà�1Š9à$% d¡G¨b°1°T±7©lÑ$:ˆO˜DÑ!Ø$% d¡G¨b°1°T±7©lÑ$:ˆO˜DÑ!Ø$% d¡G¨b°1°T±7©lÑ$:ˆO˜DÑ!Ø�1‹9ð �$‘Ø�b‘&˜1˜T™7Ñ"ñ#à�q˜‘w‘,ñð �a‘%˜!˜D™'‘/ñ"ð �r‘'˜A˜d™GÑ#ñ	$ð ˜DÑ!ð �$‘˜!˜b™& 1 T¡7Ñ*Ñ*¨R°!°D±'©\Ñ9¸AÀ¹FÀR¹KÈ!ÈDÉ'Ñ<QÑQð ˜DÑ!ð %& d¡G¨a°"©f°q¸±wÑ.>Ñ$>ÀÀRÈÁUÁÈQÈtÉWÑATÑ$TˆO˜DÑ!Ø$% d¡G¨a°"©f°q¸±wÑ.>Ñ$>ÀÀRÈÁUÁÈQÈtÉWÑATÑ$TˆO˜DÓ!ð ˆw‰Z˜!˜G™*Ñ$ˆØˆw‰Z˜!˜G™*Ñ$ˆØˆw‰Z˜!˜G™*Ñ$ˆØ#$ W¡:ˆ˜Ñ à�1Š9à(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø(* s¨Q¨w©ZÑ'7¸!¸G¹*Ñ'DˆO˜GÑ$Ø�1‹9ð �B˜‘E‘	˜A˜g™JÑ&¨¨R©°!°G±*Ñ)<Ñ<¸qÀ¹zÑIð ˜GÑ$ð ��a˜‘jÑ  1 r¡6¨R°!°G±*©_¸qÀ¹zÑ-IÑ#JÑJÈQÈwÉZÑWð ˜GÑ$ð �A‘˜˜'™
Ñ"Ø�b‘&˜1˜W™:Ñ%ñ&à˜˜Q˜w™Z™¨!¨G©*Ñ4Ñ5ñ6ð �G‘*ñð ˜GÑ$ð �B˜‘E‘	˜A˜g™JÑ&¨¨R©°!°G±*Ñ)<Ñ<¸qÀ¹zÑIð ˜GÑ$ð ��a˜‘jÑ  1 r¡6¨R°!°G±*©_¸qÀ¹zÑ-IÑ#JÑJÈQÈwÉZÑWð ˜GÑ$ð ��a˜‘jÑ Ø˜˜Q˜w™Z™¨!¨G©*Ñ4Ñ5ñ6à˜˜Q˜w™Z™¨!¨G©*Ñ4Ñ5ñ6ð �G‘*ñð ˜GÑ$ð ��a˜‘jÑ  1 r¡6¨b¨S°1°W±:Ñ-=ÀÀ'Á
Ñ-JÑ#KÑKÈaÐPWÉjÑXð ˜GÑ$ð �A‘˜˜'™
Ñ"Ø�b‘&˜1˜W™:Ñ%ñ&à˜˜Q˜w™Z™¨!¨G©*Ñ4Ñ5ñ6ð �G‘*ñð ˜GÑ$ð �A‘˜˜'™
Ñ"Ø�b‘&˜1˜W™:Ñ%ñ&à˜˜Q˜w™Z™¨!¨G©*Ñ4Ñ5ñ6ð �G‘*ñð ˜GÑ$ð �B˜‘E‘	˜A˜g™JÑ&¨¨R©°!°G±*Ñ)<Ñ<¸qÀ¹zÑIð ˜GÑ$ð ×!Ñ! +°EÐ!Ó:Ð:ó    c                 óü  — | j                   }| j                  d   dz
  }|dv r|dk  rt        | «      S t        j                  | «      }| }t        |t        t        j                  |t        ¬«      «         |d|z     z  «      }|dk(  r»t        |dz   «      D ]¨  }t        |dz   «      D ]•  }||z   |kD  rŒt        |dz   «      D ]y  }t        j                  ||«      }	|	|d    ||z
  z  z  }	t        |dz   «      D ]A  }
t        j                  ||
«      }||d    ||
z
  z  z  }|||fxx   |	|z  |||
f   z  z  cc<   ŒC Œ{ Œ— Œª |S t        j                  t        |dz   «      f|z  Ž D ]�  }t        |«      |kD  rŒt        j                  |D �cg c]  }t        |dz   «      ‘Œ c}Ž D ]O  }||   }t        |||«      D ]+  \  }}}|t        j                  ||«      z  }|| ||z
  z  z  }Œ- ||xx   |z  cc<   ŒQ Œ‘ |S c c}w )Nr   r   r   r   )r   )r   r   )r
   r   r   r   r   ÚtupleÚeyeÚintÚrangeÚmathÚcombÚ	itertoolsÚproductÚsumÚzip)r   r
   r   r   r   ÚcentersÚpÚqÚiÚterm1ÚjÚterm2ÚordersÚoÚidxsÚvalÚi_orderÚcÚidxs                      r   Úmoments_raw_to_centralr6      sM  € Ø×Ñ€DØ×Ñ˜aÑ  1Ñ$€EØˆv�~˜% !š)Ü+¨KÓ8Ð8ä—m‘m KÓ0€OØ€Aä�A”eœBŸF™F 4¬sÔ3Ó4Ñ5¸¸$À¹+¹ÑFÓG€Gàˆq‚yô �u˜q‘yÓ!ò 
	IˆAÜ˜5 1™9Ó%ò 	I�Ø�q‘5˜5’=ØÜ˜q 1™u›ò I�AÜ ŸI™I a¨›O�EØ˜w q™z˜k¨q°1©uÑ5Ñ5�EÜ" 1 q¡5›\ò I˜Ü $§	¡	¨!¨Q£˜Ø 7¨1¡: +°1°q±5Ñ!9Ñ9˜Ø'¨¨1¨Ó-°¸±ÀÀ1ÀaÀ4ÁÑ1HÑHÔ-ñIñIñ	Ið
	Ið Ðô ×#Ñ#¤u¨U°Q©YÓ'7Ð&9¸DÑ&@ÐBò +ˆäˆv‹;˜Òàä×%Ñ%¸fÖ'E¸¬¨a°!©e­Ò'EÐFò 	+ˆDØ�D‘'ˆCÜ#& v¨w¸Ó#=ò /‘�˜˜CØ”t—y‘y ¨#Ó.Ñ.�Ø˜˜ ¨#¡Ñ.Ñ.‘ð/ð ˜FÓ# sÑ*Ô#ñ	+ð+ð Ðùò (Fs   Æ
G9
)Ú__doc__r$   r"   Únumpyr   r   r6   © r   r   ú<module>r:      s!   ðñó Û ã òm;ó`,r   