1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-25 13:23:02 +04:00
Commit Graph

3624 Commits

Author SHA1 Message Date
raimbekovm a41857f3c2 docs: fix spelling errors
- 'tirangle' -> 'triangle'
- 'cirlce' -> 'circle'
- 'gradiantSize' -> 'gradientSize'
- 'unnotied' -> 'unnoticed'
- 'consistensy' -> 'consistency'
- 'implemention' -> 'implementation'
- 'suppported/Unsuppported/suppport' -> 'supported/Unsupported/support'
2025-12-25 15:45:08 +06:00
raimbekovm 2fb95415dd Fix typos in documentation: 'algorighm' -> 'algorithm', 'necesary' -> 'necessary' 2025-12-24 22:11:28 +06:00
Dheeraj Alamuri d3c539bf71 Merge pull request #28227 from dheeraj25406:docs-moments-degenerate
docs(imgproc): clarify cv::moments behavior for degenerate contours #28227

relates to https://github.com/opencv/opencv/issues/28222
Clarifies that for degenerate contours (single point or collinear points),
cv::moments() returns m00 == 0 and centroid is undefined.
Documents common workarounds such as boundingRect center or point averaging.
2025-12-23 20:53:43 +03:00
Alexander Smorkalov 4705320496 Merge pull request #28239 from AdwaithBatchu:optimize-stitching-allocations
optimize: replace push_back with emplace_back in core loops
2025-12-23 15:05:35 +03:00
Abhishek Shinde ea9b183d9b Merge pull request #28259 from falloficarus22:fix/bilateral-filter-oob
Fix the out-of-bounds read in cv::bilateralFilter for 32f images #28259

### Root Cause Analysis

The issue was caused by a discrepancy between the image range used to allocate the color weight look-up table (LUT) and the actual range of pixel values encountered during filtering, especially near the image borders.

- Range Computation: `cv::bilateralFilter` computes the min/max values of the source image and allocates a `LUT (expLUT)` of size `kExpNumBins + 2` based on this range.
- Border Padding: If `cv::BORDER_CONSTANT` is used (defaulting to 0), and 0 is outside the image's original range (e.g., an image with values between 100 and 200), the padded image will contain values (0) that create differences larger than those accounted for in the `LUT`.
- Out-of-Bounds Access: When calculating the color weight, the code computes an index `idx` from the absolute difference. If this difference exceeds the expected range, `idx` can reach or exceed `kExpNumBins + 1`. Since the code performs linear interpolation using `expLUT[idx]` and `expLUT[idx + 1]`, an `idx` of `kExpNumBins + 1` causes an access to `expLUT[kExpNumBins + 2]`, which is out of bounds.

### Fix

I implemented a robust clamping mechanism in both the SIMD (AVX/SSE) and scalar paths of the bilateral filter invoker:

- Signature Update: Updated `bilateralFilterInvoker_32f` to accept `kExpNumBins` (the maximum valid `LUT` index).
- Clamping: Clamped the computed color difference (alpha) to `kExpNumBins` before calculating the `LUT` index. This ensures that any difference exceeding the planned range is safely treated as the maximum difference in the `LUT` (which usually corresponds to a weight of 0), avoiding any out-of-bounds memory access.

### Modified Files

Modified Files:
`modules/imgproc/src/bilateral_filter.simd.hpp`: Updated the invoker class and SIMD/scalar loops to clamp the LUT index.
`modules/imgproc/src/bilateral_filter.dispatch.cpp`: Updated the dispatch call site to pass the correct LUT size.

Closes #28254 

### Pull Request Readiness Checklist

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-12-22 20:41:58 +03:00
satyam yadav 15fe69b5af Merge pull request #28250 from satyam102006:fix/stackblur-overflow-28233
imgproc: fix heap-buffer-overflow in stackBlur #28233 #28250

### Summary
Fixes a heap-buffer-overflow in `cv::stackBlur` when the kernel size is larger than the image dimensions 
### Changes
* Added input validation to clamp the kernel size to the image dimensions.
* Added a regression test (`regression_28233`) covering 1x1 and small image cases.

Fixes #28233
2025-12-22 11:22:12 +03:00
Alexander Smorkalov 8cf2e774b7 Merge pull request #28208 from asmorkalov:as/filters_stateless
Stateless HAL for filters and morphology. #28208

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-12-20 13:30:09 +03:00
Alexander Smorkalov a3380cc128 Code review fixes. 2025-12-19 14:59:45 +03:00
Dmitry Kurtaev 43074571af Merge pull request #28163 from dkurt:d.kurtaev/convexHull_repeats
Keep convexHull output indices monotone if possible #28163

### Pull Request Readiness Checklist

resolves https://github.com/opencv/opencv/issues/24907 ?
resolves https://github.com/opencv/opencv/issues/4954

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-12-19 14:41:21 +03:00
AdwaithBatchu 5f0bd387db optimize: replace push_back with emplace_back in core loops
Replaces wasteful temporary object construction with in-place construction using emplace_back. Covers hot paths in objdetect, imgproc, and stitching modules.
2025-12-19 11:56:20 +05:30
Alexander Smorkalov 721bb7289d Merge pull request #28185 from asmorkalov:as/static_analysys_fix
Fixed issues identified by PVS Studio #28185

Partially fixes https://github.com/opencv/opencv/issues/28167
Paper: https://pvs-studio.com/en/blog/posts/cpp/1321/

Closed items: N2, N4, N5, N6, N7, N8, N10, N11, N13, N14.

To be continued...

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-12-18 11:32:19 +03:00
Alexander Smorkalov a858fb7cff Stateless HAL for filters and morphology. 2025-12-18 09:36:54 +03:00
zdenyhraz c5d70a7f22 Merge pull request #28146 from zdenyhraz:iterative-phase-correlation
Iterative Phase Correlation #28146

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-12-13 12:45:05 +03:00
Ghazi-raad f704001eb7 Merge pull request #28120 from Ghazi-raad:test/line-connectivity-26413
Test: Add regression test for LINE_4 vs LINE_8 connectivity #28120 

Add test to verify correct behavior of LINE_4 (4-connected) and LINE_8 (8-connected) line drawing. This test ensures:

- LINE_4 produces staircase pattern (more pixels) for diagonal lines
- LINE_8 produces diagonal steps (fewer pixels)
- LINE_4 pixels have only horizontal/vertical neighbors (no diagonal-only)

Regression test for issue #26413 where LINE_4 and LINE_8 behaviors were swapped.
2025-12-09 15:59:24 +03:00
Alexander Smorkalov 0e2373557b Merge pull request #28119 from galinabykova:approxPolyDP_fix_distance_segment
fix bug in approxPolyDP: calculate distance to a segment, not to a straight line
2025-12-09 10:59:33 +03:00
Vincent Rabaud 4d7ce375fc Increase minAreaRect accuracy
Just keep doubles all the way and avoid arithmetic with CV_PI/2
2025-12-08 09:44:02 +01:00
Kumataro 7971cbc7d0 doc: add supported src type info for each ColorConversionCodes 2025-12-07 00:33:02 +09:00
Galina Bykova fc7e70ef4a fix bug in approxPolyDP: calculate distance to a segment, not to a line 2025-12-01 21:22:11 +03:30
Ghazi-raad a27a13921b Fix LINE_4/LINE_8 swap in drawContours (issue #26413)
Changed condition to correctly route LINE_8 to Line() instead of Line2().

The condition 'line_type == 1 || line_type == 4' was causing LINE_8 (value 8)
to be processed by Line2() which implements 4-connectivity, and LINE_4 (value 4)
to be processed by Line() which was implementing 8-connectivity behavior. This
resulted in swapped line connectivity.

Changed to 'line_type == 1 || line_type == 8' so LINE_8 goes to Line() with
8-connectivity and LINE_4 goes to Line2() with 4-connectivity, matching the
documented behavior where LINE_4 should produce 4-connected lines and LINE_8
should produce 8-connected lines.

Fixes #26413
2025-11-26 21:41:28 +00:00
Dmitry Kurtaev 621ad482d6 Merge pull request #28051 from dkurt:minAreaRect_angle
Correct minAreaRect angle to be in range [-90, 0) #28051

### Pull Request Readiness Checklist

Box angle range over all imgproc tests is in interval `[-90, -0.0581199]`

resolves https://github.com/opencv/opencv/issues/27667
resolves https://github.com/opencv/opencv/issues/19472
resolves https://github.com/opencv/opencv/issues/24436

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-11-25 15:56:59 +03:00
Alexander Smorkalov 49607438bd Merge pull request #28048 from asmorkalov:as/stateless_hal_filtering
Improved HAL status check for filter, sepFilter and morphology operations to support stateless HAL
2025-11-22 12:41:05 +03:00
Dmitry Kurtaev 2cc5b69fd1 Merge pull request #28043 from dkurt:d.kurtaev/convexHull_eps
Handle near-zero convexity in convexHull #28043

### Pull Request Readiness Checklist

resolves https://github.com/opencv/opencv/issues/21482
closes https://github.com/opencv/opencv/issues/14401

Also skip a code that determines orientation inside rotatingCalipers and rely on the order after convexHull

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-11-21 10:54:38 +03:00
Alexander Smorkalov 308631197f Improved HAL status check for filter, sepFilter and morphology operations to support stateless HAL. 2025-11-20 08:55:03 +03:00
harunresit f26d7e1bf4 Merge pull request #28014 from harunresit:fix-28002-clahe
Added BitShift option to CLAHE #28014

Briefly, this PR is the fix of https://github.com/opencv/opencv/issues/28002

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-11-16 14:45:50 +03:00
penghuiho 4c1f32e716 Fix the issue of obtaining the size of the _src 2025-11-13 13:57:41 +08:00
Yuantao Feng 78adab13e9 Merge pull request #27479 from fengyuentau:4x/imgproc/boundingRect-simd
imgproc: supports CV_SIMD_SCALABLE in pointSetBoundingRect #27479

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-11-12 18:44:41 +03:00
Alexander Smorkalov a31a52adef Merge pull request #27992 from asmorkalov:as/HoughLines_bias
Fixed standard HoughLines output shift for rho. #27992

Closes: https://github.com/opencv/opencv/issues/25038
Replaces: https://github.com/opencv/opencv/pull/25043

Merge with https://github.com/opencv/opencv_extra/pull/1288

The original implementation introduces systematic shift (-rho/2) for odd indexes. Integer division just gives proper rounding.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-11-12 11:30:14 +03:00
Samaresh Kumar Singh 603bc58d3b Fix #27968: Eliminate unnecessary type conversions in GrabCut initGMMs
Remove performance bottleneck caused by redundant type conversions in the
initGMMs() function's tight nested loops that iterate over all image pixels.

Changes:
- Changed storage vectors from Vec3f to Vec3b to store pixel data directly
  without intermediate conversion
- Modified kmeans preparation to convert Vec3b data to CV_32FC1 only when
  creating the Mat for clustering (using convertTo instead of per-pixel cast)
- Explicitly convert Vec3b to Vec3d only when calling addSample() method

Performance Impact:
Previously: Vec3b -> Vec3f (in loop) -> Vec3d (implicit in addSample)
Now: Vec3b (in loop) -> Vec3d (explicit, only in addSample call)

This eliminates one unnecessary type conversion per pixel in the tight loop,
reducing computational overhead especially for large images.

Fixes #27968
2025-11-08 13:16:01 -06:00
Pierre Chatelier 9fc556a83e Merge pull request #27366 from chacha21:arrowedLine_clipped
Try to fix distant points to save time when ThickLine() calls FillConvexPoly() #27366

Proposal for #27365

cv::clipLine() is useful, but one should take care of a margin to preserve line caps.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [X] The PR is proposed to the proper branch
- [X] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-11-07 10:34:52 +03:00
MaximSmolskiy e45d07e95b Refactor minEnclosingCircle 2025-10-16 22:18:39 +03:00
MaximSmolskiy b4d3488b02 Add corner cases tests for minEnclosingCircle 2025-10-15 22:27:27 +03:00
Alexander Smorkalov 563ef8ff97 Merge pull request #27904 from MaximSmolskiy:fix_minEnclosingCircle
Fix minEnclosingCircle
2025-10-15 11:00:18 +03:00
Maxim Smolskiy 8f0373816a Merge pull request #27900 from MaximSmolskiy:refactor-minEnclosingCircle-tests
Refactor minEnclosingCircle tests #27900

### Pull Request Readiness Checklist

Separate input points for tests

Before this, next input points depended on previous ones and it was not obvious which input points specific test checked

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-10-15 09:48:49 +03:00
MaximSmolskiy 1b09d7390f Fix minEnclosingCircle 2025-10-15 01:34:14 +03:00
ashish-sriram 19c41c2936 Merge pull request #27822 from amd:fast_blur_simd
Improved blur #27822

* Perform row and column filter operations in a single pass.
* Temporary storage of intermediate results are avoided.
* Impacts 32F and 64F inputs for ksize <=5.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-10-06 11:00:30 +03:00
SaraKuhnert 79793e169e Merge pull request #27369 from SaraKuhnert:minEnclosingPolygon
imgproc: add minEnclosingConvexPolygon #27369

### Pull Request Readiness Checklist

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-09-23 22:14:12 +03:00
Madan mohan Manokar 691b1bdc05 Merge pull request #27795 from amd:fast_gaussian_simd
Improved Gaussian Blur #27795

- Horizontal and vertical kernels of 3N131 and 5N14641 are combined for non-border(inner) regions.
- Temporary storage of intermediate results are avoided by combining the kernels.
- Further refinement of other 3N, 5N to be added later.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-09-22 17:30:28 +03:00
underdevelopedprefrontalcortex 3372286c7b Update imgproc.hpp, fix "algorighm" typo in approxPolyN docstring 2025-09-20 19:29:12 -04:00
Nadezhda Mizonova 9663b582a2 Merge pull request #27720 from nmizonov:fix_ipp_bilateral_tiling
Set limitation to IPP Bilateral Filter tiles number to avoid too small tiles #27720

### Pull Request Readiness Checklist

This PR fixes the following issue in Bilateral Filter tiling in IPP integration: image ROI can't be closer to the image border than the filter window radius. This issue shows itself during separation of the image to tiles for multithreaded processing. If the tile size small enough, the second tile is closer to the upper image border than the bilateral filter radius, which leads to the incorrect result. To fix this, we need a limitation to the tile size - done in this PR.

_Note: red build status looks like unrelated to the current change_

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-09-08 16:11:20 +03:00
MaximSmolskiy 518735b509 Remove useless variables from fitEllipse tests 2025-08-30 00:42:33 +03:00
Maxim Smolskiy 6d889ee74c Merge pull request #27717 from MaximSmolskiy:improve_fitellipsedirect_tests
Improve fitEllipseDirect tests #27717

### Pull Request Readiness Checklist

Previous `fit_and_check_ellipse` implementation was very weak - it only checks that points center lies inside ellipse.
Current implementation `fit_and_check_ellipse` checks that points RMS (Root Mean Square) algebraic distance is quite small. It means that on average points are near boundary of ellipse. Because for points on ellipse algebraic distance is equal to `0` and for points that are close to boundary of ellipse is quite small

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-08-29 13:16:22 +03:00
Alexander Smorkalov 0e9c3b5a3b Fixed Subdiv2D constructor overload. 2025-08-27 11:37:39 +03:00
Maxim Smolskiy ad560f69f4 Merge pull request #27704 from MaximSmolskiy:fix_checking_that_point_lies_inside_ellipse
Fix checking that point lies inside ellipse #27704

### Pull Request Readiness Checklist

Previous `check_pt_in_ellipse` implementation was incorrect. For points on ellipse `cv::norm(to_pt)` should be equal to `el_dist`.

I tested current implementation with following Python script:
```
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

def check_pt_in_ellipse(pt, el):
    center, axes, angle = ellipse
    to_pt = pt - center
    el_angle = angle * np.pi / 180
    to_pt_r_x = to_pt[0] * np.cos(-el_angle) - to_pt[1] * np.sin(-el_angle)
    to_pt_r_y = to_pt[0] * np.sin(-el_angle) + to_pt[1] * np.cos(-el_angle)
    pt_angle = np.arctan2(to_pt_r_y / axes[1], to_pt_r_x / axes[0])
    x_dist = 0.5 * axes[0] * np.cos(pt_angle)
    y_dist = 0.5 * axes[1] * np.sin(pt_angle)
    el_dist = np.sqrt(x_dist * x_dist + y_dist * y_dist)
    assert abs(np.linalg.norm(to_pt) - el_dist) < 1e-10

# TEST(Imgproc_FitEllipse_Issue_4515, accuracy) {
points = np.array([
    [327, 317],
    [328, 316],
    [329, 315],
    [330, 314],
    [331, 314],
    [332, 314],
    [333, 315],
    [333, 316],
    [333, 317],
    [333, 318],
    [333, 319],
    [333, 320],
])

ellipse = cv2.fitEllipseDirect(points)

center, axes, angle = ellipse

angle_rad = np.deg2rad(angle)
points_on_ellipse = []
for point_angle_deg in range(0, 360, 10):
    point_angle = np.deg2rad(point_angle_deg)
    point = np.array([0., 0.])
    point_x = axes[0] * 0.5 * np.cos(point_angle)
    point_y = axes[1] * 0.5 * np.sin(point_angle)
    point[0] = point_x * np.cos(angle_rad) - point_y * np.sin(angle_rad)
    point[1] = point_x * np.sin(angle_rad) + point_y * np.cos(angle_rad)
    point[0] += center[0]
    point[1] += center[1]
    points_on_ellipse.append(point)

points_on_ellipse = np.array(points_on_ellipse)

for point in points_on_ellipse:
    check_pt_in_ellipse(point, ellipse)

plt.figure(figsize=(8, 8))
plt.scatter(points[:, 0], points[:, 1], c='red', label='points')
plt.scatter(points_on_ellipse[:, 0], points_on_ellipse[:, 1], c='yellow', label='ellipse')
ellipse = Ellipse(xy=center, width=axes[0], height=axes[1], 
                  angle=angle, facecolor='none', edgecolor='b')
plt.gca().add_patch(ellipse)
plt.gca().set_aspect('equal')
plt.legend()
plt.show()
```

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-08-26 14:02:53 +03:00
Alexander Smorkalov 0b84a54a65 Fixed duplicate declaration issue in Swift/ObjC bindings. 2025-08-20 11:14:03 +03:00
Aditya Jha 7a1ec54c43 Merge pull request #27641 from Ma-gi-cian:subdiv2d-rect2f-clean
Subdiv2d rect2f clean #27641

Closes https://github.com/opencv/opencv/issues/27623

Changes:

- Added Subdiv2D(Rect2f) constructor overload
- Added initDelaunay(Rect2f) method overload

- No changes to the previous implementation to keep it backward compatible
- Added tests for init and testing with edge case of extremely small coordinates

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake

See original pull request at : https://github.com/opencv/opencv/pull/27631
2025-08-15 15:05:27 +03:00
Madan mohan Manokar 2762ffe7cc Merge pull request #27433 from amd:fast_bilateral_simd
imgproc: Bilateral filter performance improvement #27433

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-08-12 17:50:44 +03:00
Pierre Chatelier e31ff00104 Merge pull request #27599 from chacha21:drawing_stack_alloc
optimize some drawing with stack allocation #27599

Some drawings can try a stack allocation instead of a std::vector

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [X] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-08-07 17:19:55 +03:00
Maxim Smolskiy 615ceefd0c Merge pull request #27582 from MaximSmolskiy:take_into_account_overflow_for_connected_components
Take into account overflow for connected components #27582

### Pull Request Readiness Checklist

Fix #27568 

The problem was caused by a label type overflow (`debug_example.npy` contains `92103` labels, that doesn't fit in the `CV_16U` (`unsigned short`) type). If pass `CV_32S` instead of `CV_16U` as `ltype` - everything will be calculated successfully

Added overflow detection to throw exception with a clear error message instead of strange segfault/assertion error

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-07-29 13:10:01 +03:00
Alexander Smorkalov ec9b8de3fa Merge pull request #27569 from asmorkalov:as/counters_build_fix
Fixed build issue with some old GCC versions #27569

Fixes build for GCC 4.8.5 at least. Looks like the method default signature differs cross GCC versions or newer version has softer checker.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-07-24 11:23:21 +03:00
ekharkov d19dd94dee Moved IPP remap to HAL 2025-07-08 12:31:40 +02:00