Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 198новых вакансий за сутки·81 048вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании6 803
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 400 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python15 317
  • Облачные технологии11 512
  • QA вакансии3 347
  • Backend вакансии1 829
  • Инженер данных1 397
  • Продакт-менеджер842

Разработка

  • Android1 758
  • iOS1 639
  • AI вакансии875
  • Fullstack вакансии727
  • Frontend вакансии631
  • Mobile вакансии31

По стеку

  • Go8 413
  • Java5 383
  • Node.js1 730
  • Kotlin1 427
  • Rust1 387
  • .NET1 303
  • PHP554
  • C++394
  • C#373

DevOps и инфраструктура

  • Kubernetes6 474
  • DevOps вакансии4 845
  • Linux-инфраструктура4 834
  • Terraform / IaC3 590
  • Мониторинг и Observability1 636
  • CI/CD1 557
  • SRE504
  • Кибербезопасность245

Аналитика и данные

  • Data Scientist769
  • Аналитик данных748
  • Бизнес-аналитик722
  • Системный аналитик94

Другие направления

  • Проджект-менеджер338
  • UI/UX дизайн105
  • Ручное тестирование14

По регионам

  • Вакансии в США40 526
  • Вакансии в Европе16 981
  • Вакансии в Канаде3 889
  • Работа в России3 872

По формату

  • Удалённые вакансии64 846
  • Релокация в США40 528
  • Гибридная работа9 711
  • Офисная работа6 760

По уровню

  • Senior вакансии36 345
  • Middle вакансии17 248
  • Junior вакансии5 866

Сейчас нанимают

Все компании
  • Wise193 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме OpenCVВсе вопросы
OpenCVMiddleКодинг

Что такое гистограмма в обработке изображений и как её вычислять и выравнивать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

cv2.calcHist вычисляет гистограмму по каналам; cv2.equalizeHist выравнивает глобально (только uint8 grayscale); для локального и щадящего выравнивания используйте CLAHE через cv2.createCLAHE.

Вычисление гистограммы через cv2.calcHist

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("photo.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# cv2.calcHist(images, channels, mask, histSize, ranges)
hist = cv2.calcHist(
    [gray],         # список изображений
    [0],            # индекс канала (0 для одноканального)
    None,           # маска (None = всё изображение)
    [256],          # число бинов
    [0, 256]        # диапазон значений
)
# hist.shape == (256, 1), dtype == float32

plt.plot(hist)
plt.xlabel("Яркость")
plt.ylabel("Количество пикселей")
plt.title("Гистограмма")
plt.show()

Гистограммы в обработке изображений: вычисление и выравнивание

Гистограмма изображения показывает, сколько пикселей имеют каждое значение яркости (0–255). Она используется для оценки экспозиции, контраста, а также как основа для нормализации и порогового метода Otsu.

Гистограмма для цветного изображения (по каналам)

colors = {"b": 0, "g": 1, "r": 2}
for color_name, ch_idx in colors.items():
    hist = cv2.calcHist([img], [ch_idx], None, [256], [0, 256])
    plt.plot(hist, color=color_name, label=color_name.upper())

plt.legend()
plt.title("Гистограмма по каналам BGR")
plt.show()

Глобальное выравнивание гистограммы: cv2.equalizeHist

Перераспределяет яркости так, чтобы гистограмма стала примерно равномерной. Работает только с одноканальным uint8-изображением.

equalized = cv2.equalizeHist(gray)

# Сравнение до/после
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
axes[0, 0].imshow(gray, cmap="gray")
axes[0, 0].set_title("Оригинал")
axes[0, 1].imshow(equalized, cmap="gray")
axes[0, 1].set_title("После equalizeHist")
axes[1, 0].plot(cv2.calcHist([gray], [0], None, [256], [0, 256]))
axes[1, 0].set_title("Гистограмма оригинала")
axes[1, 1].plot(cv2.calcHist([equalized], [0], None, [256], [0, 256]))
axes[1, 1].set_title("Гистограмма после выравнивания")
plt.tight_layout()
plt.show()

Адаптивное выравнивание: CLAHE

Глобальное выравнивание может пересветить одни области и затемнить другие. CLAHE (Contrast Limited Adaptive Histogram Equalization) работает на тайлах и ограничивает усиление контраста.

# Создать объект CLAHE
clahe = cv2.createCLAHE(
    clipLimit=2.0,         # максимальное усиление контраста в тайле
    tileGridSize=(8, 8)    # изображение разбивается на сетку 8x8 тайлов
)

clahe_result = clahe.apply(gray)

# Для цветного изображения применяем только к L-каналу в LAB
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l, a, b = cv2.split(lab)
l_clahe = clahe.apply(l)
lab_clahe = cv2.merge([l_clahe, a, b])
result_bgr = cv2.cvtColor(lab_clahe, cv2.COLOR_LAB2BGR)

Сравнение методов

  • equalizeHist: быстро, глобально, агрессивно — хорошо для документов и QR-кодов.
  • CLAHE: адаптивно, плавнее — рекомендуется для медицинских снимков, лиц, природных сцен.
  • cv2.normalize: просто растягивает диапазон до [0,255] — самый мягкий вариант.
# normalize как простейшая альтернатива
norm = cv2.normalize(gray, None, 0, 255, cv2.NORM_MINMAX)

Подводные камни

  • equalizeHist только для uint8: передача float32 или uint16 вызовет ошибку или неверный результат.
  • Применение к BGR напрямую: equalizeHist/CLAHE к каждому BGR-каналу независимо искажает цвет — переводите в LAB или HSV и обрабатывайте только яркостный канал.
  • clipLimit слишком мал: clipLimit=1.0 в CLAHE почти не меняет изображение; слишком большой (>4.0) — вносит шум.
  • tileGridSize больше объектов: если тайл содержит только фон, выравнивание усилит шум, а не детали.
  • Маска в calcHist: маска должна быть uint8 с значениями 0 и 255, не bool — иначе результат неверен.
  • histSize и ranges несогласованы: histSize=[256] с ranges=[0,256] — стандарт; но histSize=[128] с ranges=[0,256] даст бины по 2 единицы — нужно знать, что считаете.
  • Нет визуального сравнения: оценивать выравнивание только по метрикам (std яркости) недостаточно — артефакты могут быть незаметны в числах, но очевидны визуально.
  • Применение к уже нормализованным данным: если изображение уже имеет равномерное распределение яркостей, повторное equalizeHist введёт артефакты.

Частые вопросы на собеседовании

  • Что такое пороговая обработка (thresholding) в OpenCV и каковы её типы (binary, Otsu, adaptive)?
  • Что такое OpenCV и каковы его основные области применения?
  • Как преобразовать цветное изображение в оттенки серого в OpenCV?
  • В каких data/AI-задачах OpenCV даёт реальный выигрыш, а где лучше выбрать другой инструмент или более простой pipeline?

Типичные ошибки

  • Объяснять histograms equalization только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать histograms equalization с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме OpenCV →

Источники

  • https://docs.opencv.org/4.x/d1/db7/tutorial_py_histogram_begins.html
←Предыдущий вопросКак проверять корректность решения на OpenCV, а не только успешное выполнение кода?Следующий вопрос→Представьте, pipeline на OpenCV даёт хорошие результаты в dev, но плохо работает на новых данных. Как вы будете разбираться?

Связанные темы

OpenCVdata-aidata-processingperformance-debugging