
    9i}                     `    S SK rS SKJr  SSKJrJr      S\R                  S.S jjr	S	S jr
g)
    N)ndimage   )_validate_interpolation_order_fix_ndimage_mode)reduce_funcc                4   [        U R                  U5      n[        U5      n[        XUS9nU R                  S:X  as  [        U R                  S   5       V	s/ s H$  n	[        R                  " U SU	4   UUS:  UUUS9PM&     n
n	[        R                  " [        R                  " U
5      S5      n
O[        R                  " XUS:  XEUS9n
[        R                  " U
SS9n
Uc  U
nU$  U" U
SS9nU$ s  sn	f ! [         a    [        R                  " XzSS	9n U$ f = f)
a  Return the intensity profile of an image measured along a scan line.

Parameters
----------
image : ndarray, shape (M, N[, C])
    The image, either grayscale (2D array) or multichannel
    (3D array, where the final axis contains the channel
    information).
src : array_like, shape (2,)
    The coordinates of the start point of the scan line.
dst : array_like, shape (2,)
    The coordinates of the end point of the scan
    line. The destination point is *included* in the profile, in
    contrast to standard numpy indexing.
linewidth : int, optional
    Width of the scan, perpendicular to the line
order : int in {0, 1, 2, 3, 4, 5}, optional
    The order of the spline interpolation, default is 0 if
    image.dtype is bool and 1 otherwise. The order has to be in
    the range 0-5. See `skimage.transform.warp` for detail.
mode : {'constant', 'nearest', 'reflect', 'mirror', 'wrap'}, optional
    How to compute any values falling outside of the image.
cval : float, optional
    If `mode` is 'constant', what constant value to use outside the image.
reduce_func : callable, optional
    Function used to calculate the aggregation of pixel values
    perpendicular to the profile_line direction when `linewidth` > 1.
    If set to None the unreduced array will be returned.

Returns
-------
return_value : array
    The intensity profile along the scan line. The length of the profile
    is the ceil of the computed length of the scan line.

Examples
--------
>>> x = np.array([[1, 1, 1, 2, 2, 2]])
>>> img = np.vstack([np.zeros_like(x), x, x, x, np.zeros_like(x)])
>>> img
array([[0, 0, 0, 0, 0, 0],
       [1, 1, 1, 2, 2, 2],
       [1, 1, 1, 2, 2, 2],
       [1, 1, 1, 2, 2, 2],
       [0, 0, 0, 0, 0, 0]])
>>> profile_line(img, (2, 1), (2, 4))
array([1., 1., 2., 2.])
>>> profile_line(img, (1, 0), (1, 6), cval=4)
array([1., 1., 1., 2., 2., 2., 2.])

The destination point is included in the profile, in contrast to
standard numpy indexing.
For example:

>>> profile_line(img, (1, 0), (1, 6))  # The final point is out of bounds
array([1., 1., 1., 2., 2., 2., 2.])
>>> profile_line(img, (1, 0), (1, 5))  # This accesses the full first row
array([1., 1., 1., 2., 2., 2.])

For different reduce_func inputs:

>>> profile_line(img, (1, 0), (1, 3), linewidth=3, reduce_func=np.mean)
array([0.66666667, 0.66666667, 0.66666667, 1.33333333])
>>> profile_line(img, (1, 0), (1, 3), linewidth=3, reduce_func=np.max)
array([1, 1, 1, 2])
>>> profile_line(img, (1, 0), (1, 3), linewidth=3, reduce_func=np.sum)
array([2, 2, 2, 4])

The unreduced array will be returned when `reduce_func` is None or when
`reduce_func` acts on each pixel value individually.

>>> profile_line(img, (1, 2), (4, 2), linewidth=3, order=0,
...     reduce_func=None)
array([[1, 1, 2],
       [1, 1, 2],
       [1, 1, 2],
       [0, 0, 0]])
>>> profile_line(img, (1, 0), (1, 3), linewidth=3, reduce_func=np.sqrt)
array([[1.        , 1.        , 0.        ],
       [1.        , 1.        , 0.        ],
       [1.        , 1.        , 0.        ],
       [1.41421356, 1.41421356, 0.        ]])
)	linewidth   r   .   )	prefilterordermodecval)r   r   r   )axis)arrr   )r   dtyper   _line_profile_coordinatesndimrangeshapendimap_coordinatesnp	transposeasarrayflip	TypeErrorapply_along_axis)imagesrcdstr	   r   r   r   r   
perp_linesipixelsintensitiess               W/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/measure/profile.pyprofile_liner'      s:   ~ *%++u=ET"D*3yIJzzQ 5;;q>*

 + c1f!) + 	 

 bjj0)<$$%QU

 WWV!$F 	O%f15K 9

2  	O--kANK	Os   +C/&C4 4DDc           
      @   [         R                  " U [        S9=u  p4n [         R                  " U[        S9=u  pVnX-
  u  px[         R                  " Xx5      n	[	        [         R
                  " [         R                  " Xx5      S-   5      5      n
[         R                  " XFU
5      n[         R                  " X5U
5      nUS-
  [         R                  " U	* 5      -  S-  nUS-
  [         R                  " U	5      -  S-  n[         R                  " U Vs/ s H  n[         R                  " X-
  X-   U5      PM!     sn5      n[         R                  " U Vs/ s H!  n[         R                  " UU-
  UU-   U5      PM#     sn5      n[         R                  " UU/5      $ s  snf s  snf )a  Return the coordinates of the profile of an image along a scan line.

Parameters
----------
src : 2-tuple of numeric scalar (float or int)
    The start point of the scan line.
dst : 2-tuple of numeric scalar (float or int)
    The end point of the scan line.
linewidth : int, optional
    Width of the scan, perpendicular to the line

Returns
-------
coords : array, shape (2, N, C), float
    The coordinates of the profile along the scan line. The length of the
    profile is the ceil of the computed length of the scan line.

Notes
-----
This is a utility method meant to be used internally by skimage functions.
The destination point is included in the profile, in contrast to
standard numpy indexing.
)r   r   r   )r   r   floatarctan2intceilhypotlinspacesincosstack)r    r!   r	   src_rowsrc_coldst_rowdst_cold_rowd_colthetalengthline_colline_row	col_width	row_widthrow_i	perp_rowscol_i	perp_colss                      r&   r   r      sj   0  ZZ599GsZZ599Gs9LEJJu$E%/!345F {{7V4H{{7V4H
 Q"&&%.014IQ"&&-/!3I "	
! KK)5+<iH!	
I  "	
! KK	)59+<iH!	
I 88Y	*++	
	
s   &F(F)r   Nreflectg        )r   )numpyr   scipyr   r   _shared.utilsr   r   meanr'   r        r&   <module>rI      s7       L 
		@ @F4,rH   