УРОВЕНЬ ТЕХНИКИ
[0001] Настоящее раскрытие относится, в общем случае, к устройствам формирования цифрового изображения и, в частности, к системам и способу для обработки данных изображения, полученных с использованием датчика изображения устройства формирования цифрового изображения.
[0002] Этот раздел предназначен для ознакомления читателя с различными аспектами уровня техники, которые могут быть связаны с различными аспектами настоящего изобретения, которые описаны и/или заявлены ниже. Предполагается, что данное рассмотрение будет полезно для предоставления читателю основополагающей информацией для облегчения лучшего понимания различных аспектов настоящего раскрытия. Соответственно, следует понимать, что эти положения следует воспринимать в этом свете, а не как допущения уровня техники.
[0003] В последние годы устройства формирования цифрового изображения приобретают все большую популярность в силу, по меньшей мере, частично, того, что такие устройства становятся все более доступными по цене для среднего потребителя. Кроме того, помимо ряда автономных цифровых камер, доступных в настоящее время на рынке, существует тенденция интеграции устройств формирования цифрового изображения в другое электронное устройство, например, стационарный или переносной компьютер, сотовый телефон или портативный медиаплеер.
[0004] Для получения данных изображения большинство устройств формирования цифрового изображения включают в себя датчик изображения, который обеспечивает ряд световоспринимающих элементов (например, фотодетекторов), сконфигурированных для преобразования света, регистрируемого датчиком изображения, в электрический сигнал. Датчик изображения также может включать в себя матрицу цветовых фильтров, которая фильтрует свет, улавливаемый датчиком изображения для захвата информации цвета. Данные изображения, захваченные датчиком изображения, могут затем обрабатываться конвейером обработки изображений, который может применять различные операции обработки изображений к данным изображения для генерации полноцветного изображения, которое может отображаться для просмотра на устройстве отображения, например мониторе.
[0005] В то время как традиционные методы обработки изображений, в общем случае, нацелены на формирование наблюдаемого изображения, которое объективно и субъективно доставляют удовольствие наблюдателю, такие традиционные методы могут не адекватно справляться с ошибками и/или искажениями в данных изображения, вносимыми устройством формирования изображения и/или датчиком изображения. Например, дефектные пиксели на датчике изображения, которые могут быть обусловлены производственными дефектами или отказом при эксплуатации, могут не позволять точно воспринимать уровни света и, в отсутствие коррекции, могут проявляться как артефакты, возникающие в результирующем обработанном изображении. Дополнительно, спад интенсивности света на краях датчика изображения, который может быть обусловлен дефектами при изготовлении объектива, может негативно сказываться на характеристических измерениях и может приводить к формированию изображения, в котором общая интенсивность света неоднородна. Конвейер обработки изображений также может осуществлять один или более процессов для повышения резкости изображения. Однако традиционные методы повышения резкости могут не адекватно учитывать существующий шум в сигнале изображения, или могут быть не способны различать шум от краев и текстурированных областей в изображении. В таких случаях, традиционные методы повышения резкости могут фактически повышать заметность шума в изображении, что, в общем случае, нежелательно. Кроме того, можно осуществлять различные дополнительные этапы обработки изображений, некоторые из которых могут опираться на статистику изображения, собранную машиной сбора статистики.
[0006] Другая операция обработки изображений, которая может применяться к данным изображения, захваченным датчиком изображения, является операцией демозаики (преобразования RGB массива в цветное изображение). Поскольку матрица цветовых фильтров в общем случае обеспечивает цветовые данные на одной длине волны для каждого пикселя датчика, полный набор цветовых данных, в общем случае, интерполируется для каждого цветового канала для воспроизведения полноцветного изображения (например, RGB-изображения). Традиционные методы демозаики, в общем случае, интерполируют значения для отсутствующих цветовых данных в горизонтальном или вертикальном направлении, в общем случае, в зависимости от некоторого типа фиксированного порога. Однако такие традиционные методы демозаики могут не адекватно учитывать положения и направление краев в изображении, что может приводить к краевым артефактам, например, ступенчатости, шахматным артефактам или радужным артефактам, вносимым в полноцветное изображение, в особенности вдоль диагональных краев в изображении.
[0007] Соответственно, различными соображениями следует руководствоваться при обработке цифрового изображения, полученного с помощью цифровой камеры или другого устройства формирования изображения для улучшения внешнего вида результирующего изображения. В частности, некоторые аспекты нижеприведенного раскрытия призваны устранять один или более недостатков, кратко упомянутых выше.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0008] Ниже представлено краткое изложение раскрытых здесь некоторых вариантов осуществления. Следует понимать, что эти аспекты представлены лишь для снабжения читателя краткой сводкой этих некоторых вариантов осуществления, и что эти аспекты не призваны ограничивать объем этого раскрытия. В действительности, это раскрытие может охватывать различные аспекты, которые могут быть не изложены ниже.
[0009] Настоящее раскрытие обеспечивает и иллюстрирует различные варианты осуществления методов обработки сигнала изображения. В частности, раскрытые варианты осуществления этого раскрытия могут относиться к обработке данных изображения с использованием блока окончательной обработки изображений, компоновке и конфигурации линейных буферов для реализации логики обработки первичных пикселей, методу управления перемещением пиксельных данных при наличии условий переполнения (также именуемого перегрузкой), методам синхронизации видео- и аудиоданных, а также методам, относящимся к использованию различных форматов пиксельной памяти, которые можно использовать для сохранения пиксельных данных в памяти и считывания пиксельных данных из памяти.
[0010] В отношении окончательной обработки, раскрытые варианты осуществления предусматривают систему обработки сигнала изображения, которая включает в себя блок окончательной обработки пикселей, который принимает пиксельные данные после обработки, по меньшей мере, одним из блока предварительной обработки пикселей и конвейера обработки пикселей. В некоторых вариантах осуществления, блок окончательной обработки принимает данные яркости/цветности изображения и может быть сконфигурирован для применения операций распознавания лиц, локального тонального отображения, регулировок яркости, контрастности, цвета, а также масштабирования. Кроме того, блок окончательной обработки также может включать в себя блок окончательной статистики, который может собирать частотную статистику. Частотная статистика может поступать на кодер и может использоваться для определения параметров квантования, которые следует применять к кадру изображения.
[0011] Дополнительный аспект раскрытия относится к реализации блока обработки первичных пикселей с использованием набора линейных буферов. В одном варианте осуществления, набор линейных буферов может включать в себя первый поднабор и второй поднабор. Различные логические блоки блока обработки первичных пикселей можно реализовать с использованием первого и второго поднаборов линейных буферов в режиме обобществления. Например, в одном варианте осуществления, логику коррекции и обнаружения дефектных пикселей можно реализовать с использованием первого поднабора линейных буферов. Второй поднабор линейных буферов можно использовать для реализации логики коррекции затенения объектива, логики коэффициента усиления, смещения и ограничения и логики демозаики. Кроме того, шумопонижение можно также реализовать с использованием, по меньшей мере, части каждого из первого и второго поднаборов линейных буферов.
[0012] Другой аспект раскрытия может относиться к системе обработки сигнала изображения, включает в себя логику управления переполнением, которая обнаруживает условие переполнения, когда блок назначения, когда входная очередь датчика и/или блок предварительной обработки принимает противодавление от находящегося после него блока назначения. Система обработки сигнала изображения также может включать в себя контроллер вспышки, который сконфигурирован для активации устройства вспышки до начала целевого кадра изображения с использованием сигнала тактирования датчика. В одном варианте осуществления, контроллер вспышки принимает задержанный сигнал тактирования датчика и определяет время начала активации вспышки посредством использования задержанного сигнала тактирования датчика для идентификации времени, соответствующего концу предыдущего кадра, увеличения этого времени на время вертикального гашения, и затем вычитания первого смещения для компенсации задержки между сигналом тактирования датчика и задержанным сигналом тактирования датчика. Затем контроллер вспышки вычитает второе смещение для определения времени активации вспышки, таким образом, гарантируя, что вспышка активируется до приема первого пикселя целевого кадра. Кроме того, аспекты раскрытия предусматривают методы, связанные с синхронизацией аудио-видео. В одном варианте осуществления, регистр временного кода обеспечивает текущую метку времени при дискретизации. Значение регистра временного кода может увеличиваться с регулярными интервалами на основании тактового сигнала системы обработки сигнала изображения. В начале текущего кадра, полученного датчиком изображения, регистр временного кода дискретизируется, и метка времени сохраняется в регистре меток времени, связанном с датчиком изображения. Затем метка времени считывается из регистра меток времени и записывается в набор метаданных, связанных с текущим кадром. Затем метку времени, хранящуюся в метаданных кадра, можно использовать для синхронизации текущего кадра с соответствующим набором аудиоданных.
[0013] Дополнительный аспект настоящего раскрытия предусматривает контроллер гибкого ввода/вывода в/из памяти, который сконфигурирован для сохранения и считывания множественных типов пикселей и форматов пиксельной памяти. Например, контроллер I/O памяти может поддерживать сохранение и считывание пикселей первичного изображения на различных битовых точностях, например, 8 битов, 10 битов, 12 битов, 14 битов и 16 битов. Пиксельные форматы, которые не согласуются с байтами памяти (например, не являются кратными 8 битам) могут храниться упакованными. Контроллер I/O памяти также может поддерживать различные форматы наборов пикселей RGB и наборов пикселей YCC.
[0014] В связи с различными аспектами настоящего раскрытия могут существовать различные уточнения вышеупомянутых признаков. Кроме того, признаки также могут быть включены в эти различные аспекты. Эти уточнения и дополнительные признаки могут существовать по отдельности или в любой комбинации. Например, различные признаки, рассмотренные ниже в связи с одним или более из проиллюстрированных вариантов осуществления, могут быть включены в любой из вышеописанных аспектов настоящего раскрытия по отдельности или в любой комбинации. Опять же, представленная выше краткая сводка предназначена лишь для ознакомления читателя с некоторыми аспектами и контекстами вариантов осуществления настоящего раскрытия без ограничения заявленным предметом изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0015] Файл патента или заявки содержит, по меньшей мере, один чертеж, выполненный в цвете. Копии этого патента или опубликованной патентной заявки с цветными чертежами будут предоставлены патентным ведомством по запросу и после оплаты необходимых сборов.
[0016] Различные аспекты этого раскрытия можно лучше понять, ознакомившись с нижеследующим подробным описанием и обратившись к чертежам, в которых:
[0017] фиг.1 - упрощенная блок-схема, изображающая компоненты примера электронного устройства, которое включает в себя устройство формирования изображения и схему обработки изображений, сконфигурированную для реализации одного или более методов обработки изображений, изложенных в настоящем раскрытии;
[0018] фиг.2 - графическое представление пиксельного блока 2×2 матрицы байеровских цветовых фильтров, которую можно реализовать в устройстве формирования изображения, показанном на фиг.1;
[0019] фиг.3 - вид в перспективе электронного устройства, показанного на фиг.1 в форме портативного вычислительного устройства, в соответствии с аспектами настоящего раскрытия;
[0020] фиг.4 - вид спереди электронного устройства, показанного на фиг.1, в форме стационарного вычислительного устройства, в соответствии с аспектами настоящего раскрытия;
[0021] фиг.5 - вид спереди электронного устройства, показанного на фиг.1, в форме карманного портативного электронного устройства, в соответствии с аспектами настоящего раскрытия;
[0022] фиг.6 - вид сзади электронного устройства, показанного на фиг.5;
[0023] фиг.7 - блок-схема, иллюстрирующая вариант осуществления схемы обработки изображений, показанной на фиг.1, которая включает в себя логику предварительной обработки сигнала изображения (ISP) и логику конвейерной обработки ISP, в соответствии с аспектами настоящего раскрытия;
[0024] фиг.8 - блок-схема, иллюстрирующая другой вариант осуществления схемы обработки изображений, показанной на фиг.1 которая включает в себя логику предварительной обработки сигнала изображения (ISP), логику конвейерной обработки (конвейера) ISP, и логику окончательной обработки ISP, в соответствии с аспектами настоящего раскрытия;
[0025] фиг.9 - блок-схема операций, изображающая способы обработки данных изображения с использованием схемы обработки изображений, показанной на фиг.7 или фиг.8, в соответствии с аспектами настоящего раскрытия;
[0026] фиг.10 - более детализированная блок-схема, демонстрирующая вариант осуществления логики предварительной обработки ISP, который можно реализовать согласно фиг.7 или фиг.8, в соответствии с аспектами настоящего раскрытия;
[0027] фиг.11 - блок-схема операций, изображающая способ обработки данных изображения в логике предварительной обработки ISP, показанной на фиг.10, в соответствии с вариантом осуществления;
[0028] фиг.12 - блок-схема, иллюстрирующая конфигурацию регистров двойной буферизации и регистров управления, которые можно использовать для обработки данных изображения в логике предварительной обработки ISP, в соответствии с одним вариантом осуществления;
[0029] фиг.13-15 - временные диаграммы, изображающие различные режимы для запуска обработки кадра изображения, в соответствии с вариантами осуществления настоящего изобретения;
[0030] фиг.16 - схема, более подробно изображающая регистр управления, в соответствии с одним вариантом осуществления;
[0031] фиг.17 - блок-схема операций, изображающая способ использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP, показанная на фиг.10, работает в однодатчиковом режиме;
[0032] фиг.18 - блок-схема операций, изображающая способ использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP, показанная на фиг.10, работает в двухдатчиковом режиме;
[0033] фиг.19 - блок-схема операций, изображающая способ использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP, показанная на фиг.10, работает в двухдатчиковом режиме;
[0034] фиг.20 - блок-схема операций, изображающая способ, в котором оба датчика изображения активны, но в котором первый датчик изображения посылает кадры изображения на блок предварительной обработки пикселей, тогда как второй датчик изображения посылает кадры изображения на блок статистической обработки, благодаря статистике формирования изображения для второго датчика доступна сразу, когда второй датчик изображения продолжает посылать кадры изображения на блок предварительной обработки пикселей в более позднее время, в соответствии с одним вариантом осуществления;
[0035] фиг.21 - графическое представление линейного формата адресации памяти, который может применяться к пиксельным форматам, хранящимся в памяти электронного устройства, показанного на фиг.1, в соответствии с аспектами настоящего раскрытия;
[0036] фиг.22 - графическое представление мозаичного формата адресации памяти, который может применяться к пиксельным форматам, хранящимся в памяти электронного устройства, показанного на фиг.1, в соответствии с аспектами настоящего раскрытия;
[0037] фиг.23 - графическое представление различных областей формирования изображения, которые можно задать в исходном кадре изображения, захваченном датчиком изображения, в соответствии с аспектами настоящего раскрытия;
[0038] фиг.24 - графическое представление метода для использования блока предварительной обработки ISP для обработки перекрывающихся вертикальных плосок кадра изображения;
[0039] фиг.25 - схема, изображающая, как можно применять байтовый обмен к входным пиксельным данным изображения из памяти с использованием обменного кода, в соответствии с аспектами настоящего раскрытия;
[0040] фиг.26-29 показывают примеры форматов памяти для первичных данных изображения, которые могут поддерживаться схемой обработки изображений, показанной на фиг.7 или фиг.8, в соответствии с вариантами осуществления настоящего раскрытия;
[0041] фиг.30-34 показывают примеры форматов памяти для данных полноцветного RGB-изображения, которые могут поддерживаться схемой обработки изображений, показанной на фиг.7 или фиг.8, в соответствии с вариантами осуществления настоящего раскрытия;
[0042] фиг.35-36 показывают примеры форматов памяти для данных яркости/цветности изображения (YUV/YC1C2), которые могут поддерживаться схемой обработки изображений, показанной на фиг.7 или фиг.8, в соответствии с вариантами осуществления настоящего раскрытия;
[0043] фиг.37 показывает пример того, как определять положение кадра в памяти в линейном формате адресации, в соответствии с аспектами настоящего раскрытия;
[0044] фиг.38 показывает пример того, как определять положение кадра в памяти в мозаичном формате адресации, в соответствии с аспектами настоящего раскрытия
[0045] фиг.39 - блок-схема схемы ISP, показанной на фиг.8, изображающая, как может осуществляться обработка переполнения, в соответствии с вариантом осуществления настоящего раскрытия;
[0046] фиг.40 - блок-схема операций, изображающая способ обработки переполнения, когда наступает условие переполнения в ходе считывания пиксельных данных изображения из памяти изображений, в соответствии с аспектами настоящего раскрытия;
[0047] фиг.41 - блок-схема операций, изображающая способ обработки переполнения, когда наступает условие переполнения в ходе считывания пиксельных данных изображения из интерфейса датчика изображения, в соответствии с одним вариантом осуществления настоящего раскрытия;
[0048] фиг.42 - блок-схема операций, изображающая другой способ обработки переполнения, когда наступает условие переполнения в ходе считывания пиксельных данных изображения из интерфейса датчика изображения, в соответствии с дополнительным вариантом осуществления настоящего раскрытия;
[0049] фиг.43 - графическое представление изображения (например, видео) и соответствующих аудиоданных, которые могут захватываться и сохраняться электронным устройством, показанным на фиг.1;
[0050] фиг.44 иллюстрирует набор регистров, который можно использовать для обеспечения меток времени для синхронизации аудио- и видеоданных на фиг.43, в соответствии с одним вариантом осуществления;
[0051] фиг.45 - упрощенное представление кадра изображения, который может захватываться как часть видеоданных на фиг.43, демонстрирующее, как информация метки времени может храниться как часть метаданных кадра изображения, в соответствии с аспектами настоящего раскрытия;
[0052] фиг.46 - блок-схема операций, изображающая способ использования меток времени на основании сигнала VSYNC для синхронизации данных изображения с аудиоданными, в соответствии с одним вариантом осуществления;
[0053] фиг.47 - блок-схема схемы ISP, показанной на фиг.8, изображающая, как может осуществляться управление тактированием вспышки, в соответствии с вариантом осуществления настоящего раскрытия;
[0054] фиг.48 изображает метод определения времен активации и деактивации вспышки, в соответствии с вариантом осуществления настоящего раскрытия;
[0055] фиг.49 - блок-схема операций, изображающая способ определения времен активации вспышки на основании метода, показанного на фиг.48;
[0056] фиг.50 - блок-схема операций, изображающая способ использования предварительной вспышки для обновления статистики изображения до получения сцены изображения с использованием вспышки, в соответствии с аспектами настоящего раскрытия;
[0057] фиг.51 - блок-схема, которая обеспечивает более детализированный вид одного вариант осуществления блока предварительной обработки пикселей ISP, показанного в логике предварительной обработки ISP, показанной на фиг.10, в соответствии с аспектами настоящего раскрытия;
[0058] фиг.52 - схема обработки, демонстрирующая возможное применение временной фильтрации к пиксельным данным изображения, принятым блоком предварительной обработки пикселей ISP, показанным на фиг.51, в соответствии с одним вариантом осуществления;
[0059] фиг.53 иллюстрирует набор пикселей опорного изображения и набор соответствующих пикселей текущего изображения, которые можно использовать для определения одного или более параметров для процесса временной фильтрации, показанного на фиг.52;
[0060] фиг.54 - блок-схема операций, демонстрирующая процесс для применения временной фильтрации к пикселю текущего изображения набора данных изображения, в соответствии с одним вариантом осуществления;
[0061] фиг.55 - блок-схема операций, демонстрирующая метод вычисления значения дельты движения для использования во временной фильтрации пикселя текущего изображения, показанного на фиг.54, в соответствии с одним вариантом осуществления;
[0062] фиг.56 - блок-схема операций, демонстрирующая другой процесс для применения временной фильтрации к пикселю текущего изображения набора данных изображения, который включает в себя использование разных коэффициентов усиления для каждой цветовой компоненты данных изображения, в соответствии с другим вариантом осуществления;
[0063] фиг.57 - схема обработки, демонстрирующая, как метод временной фильтрации, который использует отдельные таблицы движения и яркости для каждой цветовой компоненты пиксельных данных изображения, принятых блоком предварительной обработки пикселей ISP, показанным на фиг.51, в соответствии с дополнительным вариантом осуществления;
[0064] фиг.58 - блок-схема операций, демонстрирующая процесс для применения временной фильтрации к пикселю текущего изображения набора данных изображения с использованием таблиц движения и яркости, показанных на фиг.57, в соответствии с дополнительным вариантом осуществления;
[0065] фиг.59 изображает дискретизацию первичных данных изображения с полным разрешением, которое может быть захвачено датчиком изображения, в соответствии с аспектами настоящего раскрытия;
[0066] фиг.60 иллюстрирует датчик изображения, который может быть сконфигурирован для применения биннинга к первичным данным изображения с полным разрешением, показанным на фиг.59, для вывода выборки подвергнутых биннингу первичных данных изображения, в соответствии с вариантом осуществления настоящего раскрытия;
[0067] фиг.61 изображает выборку подвергнутых биннингу первичных данных изображения, которая может обеспечиваться датчиком изображения, показанным на фиг.60, в соответствии с аспектами настоящего раскрытия;
[0068] фиг.62 изображает подвергнутые биннингу первичные данные изображения из фиг.61 после осуществления повторной дискретизации фильтром компенсации биннинга для обеспечения, в соответствии с аспектами настоящего раскрытия;
[0069] фиг.63 изображает фильтр компенсации биннинга, который можно реализовать в блоке предварительной обработки пикселей ISP, показанном на фиг.51, в соответствии с одним вариантом осуществления;
[0070] фиг.64 - графическое представление различных величин шага, которые могут применяться к дифференциальному анализатору для выбора центральных входных пикселей и индекса/фазы для фильтрации с компенсацией биннинга, в соответствии с аспектами настоящего раскрытия;
[0071] фиг.65 - блок-схема операций, демонстрирующая процесс для масштабирования данных изображения с использованием фильтра компенсации биннинга, показанного фиг.63, в соответствии с одним вариантом осуществления;
[0072] фиг.66 - блок-схема операций, демонстрирующая процесс для определения текущего входного исходного центрального пикселя для горизонтальной и вертикальной фильтрации, осуществляемой фильтром компенсации биннинга, показанным на фиг.63, в соответствии с одним вариантом осуществления;
[0073] фиг.67 - блок-схема операций, демонстрирующая процесс для определения индекса для выбора коэффициентов фильтрации для горизонтальной и вертикальной фильтрации, осуществляемой фильтром компенсации биннинга, показанным на фиг.63, в соответствии с одним вариантом осуществления.
[0074] фиг.68 - более детализированная блок-схема, демонстрирующая вариант осуществления блока статистической обработки, который можно реализовать в логике предварительной обработки обработки ISP, показанной на фиг.10, в соответствии с аспектами настоящего раскрытия;
[0075] фиг.69 демонстрирует различные случаи границы кадра изображения, которые можно рассматривать при применении методов обнаружения и коррекции дефектных пикселей в ходе статистической обработки блоком статистической обработки, показанным на фиг.68, в соответствии с аспектами настоящего раскрытия;
[0076] фиг.70 - блок-схема операций, демонстрирующая процесс для осуществления обнаружения и коррекции дефектных пикселей в ходе статистической обработки, в соответствии с одним вариантом осуществления;
[0077] фиг.71 демонстрирует трехмерный профиль, изображающий зависимость интенсивности света от позиции пикселя для традиционного объектива устройства формирования изображения;
[0078] фиг.72 - цветной чертеж, который демонстрирует неоднородное распределение интенсивности света по изображению, что может быть результатом неравномерностей затенения объектива;
[0079] фиг.73 - графическая иллюстрация первичного кадра формирования изображения, который включает в себя область коррекции затенения объектива и сетку коэффициентов усиления, в соответствии с аспектами настоящего раскрытия;
[0080] фиг.74 иллюстрирует интерполяцию значения коэффициента усиления для пикселя изображения, окруженного четырьмя граничными точками сетки коэффициентов усиления, в соответствии с аспектами настоящего раскрытия;
[0081] фиг.75 - блок-схема операций, демонстрирующая процесс для определения интерполированных значений коэффициента усиления, которые могут применяться к пикселям формирования изображения в ходе операции коррекции затенения объектива, в соответствии с вариантом осуществления настоящего изобретения;
[0082] фиг.76 - трехмерный профиль, изображающий интерполированные значения коэффициента усиления, которые могут применяться к изображению, который демонстрирует характеристики интенсивности света, показанные на фиг.71 при осуществлении коррекции затенения объектива, в соответствии с аспектами настоящего раскрытия;
[0083] фиг.77 демонстрирует цветной чертеж из фиг.72, который демонстрирует повышенную однородность интенсивности света после применения операции коррекции затенения объектива, в соответствии с аспектами настоящего раскрытия;
[0084] фиг.78 графически иллюстрирует, как радиальное расстояние между текущим пикселем и центром изображения можно вычислять и использовать для определения радиальной компоненты коэффициента усиления для коррекции затенения объектива, в соответствии с одним вариантом осуществления;
[0085] фиг.79 - блок-схема операций, демонстрирующая процесс, позволяющий использовать радиальные коэффициенты усиления и интерполированные коэффициенты усиления из сетки коэффициентов усиления для определения полного коэффициента усиления, который может применяться к пикселям формирования изображения в ходе операции коррекции затенения объектива, в соответствии с вариантом осуществления настоящего изобретения;
[0086] фиг.80 - график, демонстрирующий области белого и оси низкой и высокой цветовой температуры в цветовом пространстве;
[0087] фиг.81 - таблица, демонстрирующая, как можно сконфигурировать коэффициенты усиления баланса белого для различных условий опорного источника света, в соответствии с одним вариантом осуществления;
[0088] фиг.82 - блок-схема, демонстрирующая машину сбора статистики, которую можно реализовать в логике предварительной обработки обработки ISP, в соответствии с вариантом осуществления настоящего раскрытия;
[0089] фиг.83 иллюстрирует понижающую дискретизацию первичных байеровских RGB данных, в соответствии с аспектами настоящего раскрытия;
[0090] фиг.84 изображает двухмерную цветовую гистограмму, которая может быть собрана машиной сбора статистики, показанной на фиг.82, в соответствии с одним вариантом осуществления;
[0091] фиг.85 изображает трансфокацию и панорамирование в двухмерной цветовой гистограмме;
[0092] фиг.86 - более детализированный вид, демонстрирующий логику для реализации пиксельного фильтра машины сбора статистики, в соответствии с одним вариантом осуществления;
[0093] фиг.87 - графическое представление возможного оценивания положения пикселя в цветовом пространстве C1-C2 на основании пиксельного условия, заданного для пиксельного фильтра, в соответствии с одним вариантом осуществления;
[0094] фиг.88 - графическое представление возможного оценивания положения пикселя в цветовом пространстве C1-C2 на основании пиксельного условия, заданного для пиксельного фильтра, в соответствии с другим вариантом осуществления;
[0095] фиг.89 - графическое представление возможного оценивания положения пикселя в цветовом пространстве C1-C2 на основании пиксельного условия, заданного для пиксельного фильтра, в соответствии с еще одним дополнительным вариантом осуществления;
[0096] фиг.90 - график, демонстрирующий, как можно определить времена интегрирования датчика изображения для компенсации мерцания, в соответствии с одним вариантом осуществления;
[0097] фиг.91 - подробная блок-схема, демонстрирующая логику, которую можно реализовать в машине сбора статистики, показанной на фиг.82, и сконфигурированную для сбора статистики автофокусировки в соответствии с одним вариантом осуществления;
[0098] фиг.92 - график изображающий метод осуществления автофокусировки с использованием значений показателей грубой и точной автофокусировки, в соответствии с одним вариантом осуществления;
[0099] фиг.93 - блок-схема операций, изображающая процесс для осуществления автофокусировки с использованием значений показателей грубой и точной автофокусировки, в соответствии с одним вариантом осуществления;
[00100] фиг.94 и 95 демонстрируют прореживание первичных байеровских данных для получения значения яркости, сбалансированного по уровню белого;
[00101] фиг.96 демонстрирует метод осуществления автофокусировки с использованием относительных значений показателей автофокусировки для каждой цветовой компоненты, в соответствии с одним вариантом осуществления;
[00102] фиг.97 - более детализированный вид блока статистической обработки, показанного на фиг.68, демонстрирующий, как можно использовать байеровские RGB данные гистограммы для помощи в компенсации уровня черного, в соответствии с одним вариантом осуществления;
[00103] фиг.98 - блок-схема, демонстрирующая вариант осуществления логики конвейерной обработки ISP, показанной на фиг.7, в соответствии с аспектами настоящего раскрытия;
[00104] фиг.99 - более детализированный вид, демонстрирующий вариант осуществления блока обработки первичных пикселей, который можно реализовать в логике конвейерной обработки ISP, показанной на фиг.98, в соответствии с аспектами настоящего раскрытия;
[00105] фиг.100 демонстрирует различные случаи границы кадра изображения, которые можно рассматривать при применении методов обнаружения и коррекции дефектных пикселей в ходе обработки блоком обработки первичных пикселей, показанным на фиг.99, в соответствии с аспектами настоящего раскрытия;
[00106] фиг.101-103 - блок-схемы операций, которые изображают различные процессы для обнаружения и коррекции дефектных пикселей, которые могут осуществляться в блоке обработки первичных пикселей, показанном на фиг.99, в соответствии с одним вариантом осуществления;
[00107] фиг.104 демонстрирует положение двух пикселей зеленого в пиксельном блоке 2×2 байеровского датчика изображения, которые можно интерполировать при применении методов коррекции неоднородности зеленого в ходе обработки логикой обработки первичных пикселей, показанной на фиг.99, в соответствии с аспектами настоящего раскрытия;
[00108] фиг.105 иллюстрирует набор пикселей, который включает в себя центральный пиксель и связанные с ним горизонтально соседние пиксели, которые можно использовать как часть процесса горизонтальной фильтрации для шумопонижения, в соответствии с аспектами настоящего раскрытия;
[00109] фиг.106 иллюстрирует набор пикселей, который включает в себя центральный пиксель и связанные с ним вертикальный соседние пиксели, которые можно использовать как часть процесса вертикальной фильтрации для шумопонижения, в соответствии с аспектами настоящего раскрытия;
[00110] фиг.107 - упрощенная блок-схема операций, которая изображает, как можно применять демозаику к шаблону первичного байеровского изображения для формирования полноцветного RGB-изображения;
[00111] фиг.108 изображает набор пикселей шаблона байеровского изображения, из которого можно вывести горизонтальные и вертикальные энергетические компоненты для интерполяции значений зеленого цвета в ходе демозаики шаблона байеровского изображения, в соответствии с одним вариантом осуществления;
[00112] фиг.109 демонстрирует набор горизонтальных пикселей, к которым может применяться фильтрация для определения горизонтальной компоненты интерполированного значения зеленого цвета в ходе демозаики шаблона байеровского изображения, в соответствии с аспектами настоящего изобретения;
[00113] фиг.110 демонстрирует набор вертикальных пикселей, к которым может применяться фильтрация для определения вертикальной компоненты интерполированного значения зеленого цвета в ходе демозаики шаблона байеровского изображения, в соответствии с аспектами настоящего изобретения;
[00114] фиг.111 демонстрирует различные пиксельные блоки 3×3, к которым может применяться фильтрация для определения интерполированные значения красного и синего в ходе демозаики шаблона байеровского изображения, в соответствии с аспектами настоящего изобретения;
[00115] фиг.112-115 демонстрируют блок-схемы операций, которые изображают различные процессы для интерполяции значений зеленого, красного и синего цвета в ходе демозаики шаблона байеровского изображения, в соответствии с одним вариантом осуществления;
[00116] фиг.116 демонстрирует цветной чертеж сцены исходного изображения, которая может захватываться датчиком изображения и обрабатываться в соответствии с аспектами раскрытых здесь методов демозаики;
[00117] фиг.117 демонстрирует цветной чертеж шаблона байеровского изображения сцены изображения, показанной на фиг.116;
[00118] фиг.118 демонстрирует цветной чертеж RGB-изображения, реконструированного с использованием традиционного метода демозаики на основании шаблона байеровского изображения, показанного на фиг.117;
[00119] фиг.119 демонстрирует цветной чертеж RGB-изображения, реконструированного из шаблона байеровского изображения, показанного на фиг.117 в соответствии с аспектами раскрытых здесь методов демозаики;
[00120] фиг.120-123 изображают конфигурацию и компоновку линейных буферов, которые можно использовать в реализации блока обработки первичных пикселей, показанного на фиг.99, в соответствии с одним вариантом осуществления;
[00121] фиг.124 - блок-схема операций, демонстрирующая способ обработки первичных пиксельных данных с использованием конфигурации линейного буфера, показанной на фиг.120-123, в соответствии с одним вариантом осуществления;
[00122] фиг.125 - более детализированный вид, демонстрирующий один вариант осуществления блока обработки RGB, который можно реализовать в логике конвейерной обработки ISP, показанной на фиг.98, в соответствии с аспектами настоящего раскрытия;
[00123] фиг.126 - более детализированный вид, демонстрирующий один вариант осуществления блока обработки YCbCr, который можно реализовать в логике конвейерной обработки ISP, показанной на фиг.98, в соответствии с аспектами настоящего раскрытия;
[00124] фиг.127 - графическое представление активных областей источника для яркости и цветности, заданных в буфере источника с использованием 1-плоскостного формата, в соответствии с аспектами настоящего раскрытия;
[00125] фиг.128 - графическое представление активных областей источника для яркости и цветности, заданных в буфере источника с использованием 2-плоскостного формата, в соответствии с аспектами настоящего раскрытия;
[00126] фиг.129 - блок-схема, иллюстрирующая логика повышения резкости изображения который можно реализовать в блоке обработки YCbCr, показанном на фиг.126, в соответствии с одним вариантом осуществления;
[00127] фиг.130 - блок-схема, иллюстрирующая логику подчеркивания краев, которую можно реализовать в блоке обработки YCbCr, показанном на фиг.126, в соответствии с одним вариантом осуществления;
[00128] фиг.131 - график, демонстрирующий соотношение коэффициентов ослабления цветности со значениями яркости при повышенной резкости, в соответствии с аспектами настоящего раскрытия;
[00129] фиг.132 - блок-схема, иллюстрирующая логику регулировки яркости, контрастности и цвета (BCC) изображения, которую можно реализовать в блоке обработки YCbCr, показанном на фиг.126, в соответствии с одним вариантом осуществления;
[00130] фиг.133 демонстрирует цветовой круг тона и насыщенности в цветовом пространстве YCbCr, задающий различные углы тона и значения насыщенности, который можно применять в ходе регулировки цвета в логике регулировки BCC, показанной на фиг.132;
[00131] фиг.134 - блок-схема, демонстрирующая вариант осуществления логики окончательной обработки ISP, показанной на фиг.8, которая может быть сконфигурирована для осуществления различных этапов последующей обработки после конвейера ISP, в соответствии с аспектами настоящего раскрытия;
[00132] фиг.135 - графическая иллюстрация, демонстрирующая традиционный метод глобального тонального отображения;
[00133] фиг.136 - графическая иллюстрация, демонстрирующая другой традиционный метод глобального тонального отображения;
[00134] фиг.137 изображает, как можно сегментировать области изображения для применения методов локального тонирования, в соответствии с аспектами настоящего раскрытия;
[00135] фиг.138 графически иллюстрирует, как традиционное локальное тональное отображение может приводить к ограниченному использованию выходного диапазона тонов;
[00136] фиг.139 графически иллюстрирует метод локального тонального отображения, в соответствии с вариантами осуществления настоящего раскрытия;
[00137] фиг.140 - более детализированная блок-схема, демонстрирующая вариант осуществления логики локального тонального отображения LTM, которая может быть сконфигурирована для реализации процессов тонального отображения в логике окончательной обработки ISP, показанной на фиг.134, в соответствии с аспектами настоящего раскрытия;
[00138] фиг.141 - блок-схема операций, демонстрирующая способ обработки данных изображения с использованием логики окончательной обработки ISP, показанной на фиг.134, в соответствии с одним вариантом осуществления; и
[00139] фиг.142 - блок-схема операций, демонстрирующая способ применения тонального отображения с использованием логики LTM, показанной на фиг.140, в соответствии с одним вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ КОНКРЕТНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[00140] Ниже будут описаны один или более конкретных вариантов осуществления настоящего раскрытия. Эти описанные варианты осуществления являются лишь примерами описанного здесь изобретения. Дополнительно, с целью обеспечения краткого описания этих вариантов осуществления, в описании изобретения могут быть описаны не все признаки фактической реализации. Очевидно, что при разработке любой такой фактической реализации, как в любом инженерном или конструкторском проекте, многочисленные решения, зависящие от реализации, должны быть приняты для достижения конкретных целей разработчиков, например, согласования с ограничениями, связанными с системой и предприятием, которые могут изменяться от реализации к реализации. Кроме того, очевидно, что такие конструкторские работы могут быть сложными и занимать много времени, но, тем не менее, будет рутинным делом проектирования, изготовления и производства для специалистов, изучивших это раскрытие.
[00141] При первичном упоминании элементов различных вариантов осуществления настоящего раскрытия, употребление их названий в единственном числе подразумевает наличие одного или более элементов. Термины “содержащий”, “включающий в себя” и “имеющий” имеют включительный смысл и подразумевают, что могут существовать дополнительные элементы кроме перечисленных элементов. Дополнительно, следует понимать, что ссылки на “один вариант осуществления” или “вариант осуществления” настоящего раскрытия не следует интерпретировать как исключающие наличие дополнительных вариантов осуществления, которые тоже включают в себя упомянутые признаки.
[00142] Как будет рассмотрено ниже, настоящее раскрытие относится, в общем случае, к методам обработки данных изображения, полученный через одно или более устройств считывания изображения. В частности, некоторые аспекты настоящего раскрытия могут относиться к методам обнаружения и коррекции дефектных пикселей, методам демозаики шаблона первичного изображения, методам повышения резкости яркостного изображения с использованием многомасштабной нерезкой маски, и методам применения коэффициентов усиления затенения объектива для коррекции неравномерностей затенения объектива. Кроме того, следует понимать, что описанное здесь изобретение можно применять, как к неподвижным изображениям, так и к движущимся изображениям (например, видео), и можно использовать в приложении формирования изображения любого пригодного типа, например, цифровой камере, электронном устройстве со встроенной цифровой камерой, системе безопасности или видеонаблюдения, системе медицинского формирования изображения и т.д.
[00143] Имея в виду все вышесказанное, обратимся к фиг.1, где показана блок-схема, иллюстрирующая пример электронного устройства 10, которое может обеспечивать обработку данных изображения с использованием одного или более методов обработки изображений, кратко упомянутых выше. Электронное устройство 10 может представлять собой электронное устройство любого типа, например, переносной или стационарный компьютер, мобильный телефон, цифровой медиаплеер, и т.п., которое сконфигурировано для приема и обработки данных изображения, например, данных, полученных с использованием одного или более компонентов считывания изображения. Исключительно в порядке примера, электронное устройство 10 может представлять собой портативное электронное устройство, например, модель iPod® или iPhone®, доступную от Apple Inc. Купертино, Калифорния. Дополнительно, электронное устройство 10 может представлять собой переносной или стационарный компьютер, например, модель MacBook®, MacBook® Pro, MacBook Air®, iMac®, Mac® Mini или Mac Pro®, доступную от Apple Inc. В других вариантах осуществления, электронное устройство 10 также может представлять собой модель электронного устройства другого производителя, которое способно получать и обрабатывать данные изображения.
[00144] Следует понимать, что электронное устройство 10, независимо от его формы (например, портативной или непортативной), может обеспечивать обработку данных изображения с использованием одного или более методов обработки изображений, кратко рассмотренных выше, которые могут включать в себя, в том числе, методы коррекции и/или обнаружения дефектных пикселей, методы коррекции затенения объектива, методы демозаики или методы повышения резкости изображения. В некоторых вариантах осуществления, электронное устройство 10 может применять такие методы обработки изображений к данным изображения, хранящимся в памяти электронного устройства 10. В дополнительных вариантах осуществления, электронное устройство 10 может включать в себя одно или более устройств формирования изображения, например, встроенную или внешнюю цифровую камеру, сконфигурированную для получения данных изображения, которые могут затем обрабатываться электронным устройством 10 с использованием одного или более из вышеупомянутых методов обработки изображений. Варианты осуществления, демонстрирующие, как портативные, так и непортативные варианты осуществления электронного устройства 10 будут далее рассмотрены ниже на фиг.3-6.
[00145] Как показано на фиг.1, электронное устройство 10 может включать в себя различные внутренние и/или внешние компоненты, которые участвуют в функции устройства 10. Специалистам в данной области техники очевидно, что различные функциональные блоки, показанные на фиг.1, могут содержать аппаратные элементы (включающие в себя схему), программные элементы (включающие в себя компьютерный код, хранящийся на машиночитаемом носителе) или комбинация аппаратных и программных элементов. Например, в проиллюстрированном здесь варианте осуществления, электронное устройство 10 может включать в себя порты 12 ввода/вывода (I/O), структуры 14 ввода, один или более процессоров 16, запоминающее устройство 18, энергонезависимое хранилище 20, плату(ы) 22 расширения, сетевое устройство 24, источник 26 питания и дисплей 28. Дополнительно, электронное устройство 10 может включать в себя одно или более устройств 30 формирования изображения, например, цифровую камеру и схему 32 обработки изображений. Как будет дополнительно описано ниже, схема 32 обработки изображений может быть сконфигурирована для реализации одного или более из рассмотренных выше методов обработки изображений при обработке данных изображения. Очевидно, что, данные изображения, обработанные схемой 32 обработки изображений, можно извлекать из памяти 18 и/или устройство(а) 20 энергонезависимого хранения, или можно получать с использованием устройства 30 формирования изображения.
[00146] Прежде чем продолжить, следует понять, что системная блок-схема устройства 10, показанного на фиг.1, призвана быть схемой управления высокого уровня, изображающей различные компоненты, которые могут быть включены в такое устройство 10. Таким образом, соединительные линии между отдельными компонентами, показанными на фиг.1, не всегда представляют пути или направления переноса или передачи данных между различными компонентами устройства 10. Действительно, как рассмотрено ниже, изображенный(е) процессор(ы) 16 может(ут), в некоторых вариантах осуществления, включать в себя множественные процессоры, например, главный процессор (например, ЦП), и специализированные процессоры изображения и/или видео. В таких вариантах осуществления, обработка данных изображения может, в основном, осуществляться этими специализированными процессорами, таким образом, эффективно снимая такие задания с главного процессора (ЦП).
[00147] В отношении каждой из компонент, проиллюстрированных на фиг.1, порты 12 ввода/вывода могут включать в себя порты, сконфигурированные для подключения к различным внешним устройствам, например, источнику питания, устройству вывода аудио (например, головной гарнитуре или наушникам), или другим электронным устройствам (например, карманным устройствам и/или компьютерам, принтерам, проекторам, внешним дисплеям, модемам, док-станциям, и т.д.). В одном варианте осуществления, порты 12 ввода/вывода могут быть сконфигурированы для подключения к внешнему устройству формирования изображения, например, цифровой камере, для получения данных изображения, которые можно обрабатывать с использованием схемы 32 обработки изображений. Порты 12 ввода/вывода могут поддерживать любой пригодный тип интерфейса, например, порт универсальной последовательной шины (USB), порт последовательного соединения, порт IEEE-1394 (FireWire), порт Ethernet или модема, и/или порт подключения адаптера питания.
[00148] В некоторых вариантах осуществления, некоторые порты 12 ввода/вывода могут быть сконфигурированы для обеспечения более чем одной функции. Например, в одном варианте осуществления, порты 12 ввода/вывода могут включать в себя фирменный порт от Apple Inc., который может функционировать не только для облегчения переноса данных между электронным устройством 10 и внешним источником, но и для подключения устройства 10 к интерфейсу зарядки/питания, например адаптеру питания, предназначенному для подачи мощности от электрической розетки, или интерфейсный кабель, сконфигурированный для отбора мощности от другого электрического устройства, например, переносного или стационарного компьютера, для зарядки источника 26 питания (который может включать в себя один или более аккумуляторов). Таким образом, порт 12 ввода/вывода может быть сконфигурирован для двойного функционирования, как порт переноса данных и как порт подключения адаптера питания в зависимости, например, от того, какой внешний компонент подключен к устройству 10 через порт 12 ввода/вывода.
[00149] Структуры 14 ввода могут обеспечивать процессор(ы) 16 пользовательским вводом или обратной связью. Например, структуры 14 ввода могут быть сконфигурированы для управления одной или более функциями электронного устройства 10, например, приложениями, выполняющимися на электронном устройстве 10. Исключительно в порядке примера, структуры 14 ввода могут включать в себя кнопки, ползунки, переключатели, панели управления, клавиши, ручки, колесики прокрутки, клавиатуры, мыши, сенсорные панели и т.д. или некоторую их комбинацию. В одном варианте осуществления, структуры 14 ввода могут позволять пользователю осуществлять навигацию по графическому пользовательскому интерфейсу (GUI), отображаемому на устройстве 10. Дополнительно, структуры 14 ввода могут включать в себя тактильно-чувствительный механизм, обеспеченный совместно с дисплеем 28. В таких вариантах осуществления, пользователь может выбирать отображаемые элементы интерфейса или взаимодействовать с ними через тактильно-чувствительный механизм.
[00150] Структуры 14 ввода могут включать в себя различные устройства, схемы и каналы для подачи пользовательского ввода или обратной связи на один или более процессоров 16. Такие структуры 14 ввода могут быть сконфигурированы для управления функцией устройства 10, приложений, выполняющихся на устройстве 10, и/или любых интерфейсов или устройств, подключенных к электронному устройству 10 или используемых им. Например, структуры 14 ввода могут позволять пользователю осуществлять навигацию по отображаемому пользовательскому интерфейсу или интерфейсу приложения. Примеры структур 14 ввода могут включать в себя кнопки, ползунки, переключатели, панели управления, клавиши, ручки, колесики прокрутки, клавиатуры, мыши, сенсорные панели и т.д.
[00151] В некоторых вариантах осуществления, структура 14 ввода и устройство 28 отображения могут быть обеспечены совместно, например, в случае “сенсорного экрана”, благодаря чему, тактильно-чувствительный механизм обеспечивается совместно с дисплеем 28. В таких вариантах осуществления, пользователь может выбирать отображаемые элементы интерфейса или взаимодействовать с ними через тактильно-чувствительный механизм. Таким образом, отображаемый интерфейс может обеспечивать интерактивные функциональные возможности, позволяющие пользователю осуществлять навигацию по отображаемому интерфейсу, прикасаясь к дисплею 28. Например, взаимодействие пользователя со структурами 14 ввода, например, для взаимодействия с пользовательским интерфейсом или интерфейсом приложения, отображаемым на дисплее 28, может генерировать электрические сигналы, указывающие пользовательский ввод. Эти входные сигналы могут маршрутизироваться через пригодные каналы, например, входной концентратор или шину данных, на один или более процессоров 16 для дальнейшей обработки.
[00152] В одном варианте осуществления, структуры 14 ввода может включать в себя устройство ввода аудиосигнала. Например, одно или более устройств захвата аудио, например, один или более микрофонов, могут быть обеспечены с электронным устройством 10. Устройства захвата аудио могут быть объединены с электронным устройством 10 или могут быть внешним устройством, подключенным к электронному устройству 10, например, посредством портов 12 ввода/вывода. Как дополнительно рассмотрено ниже, электронное устройство 10 может одновременно являться устройством ввода аудиосигнала и устройством 30 формирования изображения для захвата данных звука и изображения (например, видеоданных), и может включать в себя логику, сконфигурированную для обеспечения синхронизации захваченных видео- и аудиоданных.
[00153] Помимо обработки различных входных сигналов, принятых через структуру(ы) 14 ввода, процессор(ы) 16 может(ут) управлять работой устройства 10 в целом. Например, процессор(ы) 16 может(ут) обеспечивать возможности обработки для выполнения операционной системы, программ, пользовательских интерфейсов и интерфейсов приложений и любых других функций электронного устройства 10. Процессор(ы) 16 может(ут) включать в себя один или более микропроцессоров, например, один или более микропроцессоров “общего назначения”, один или более микропроцессоров специального назначения и/или микропроцессоров для конкретного приложения (ASIC) или комбинацию таких компонентов обработки. Например, процессор(ы) 16 может(ут) включать в себя один или более процессоров с фиксированным набором команд (например, RISC), а также графических процессоров (ГП), видеопроцессоров, аудиопроцессоров и/или соответствующие чипсеты. Очевидно, что, процессор(ы) 16 может(ут) быть подключен(ы) к одной или более шинам данных для переноса данных и инструкций между различными компонентами устройства 10. В некоторых вариантах осуществления, процессор(ы) 16 может(ут) обеспечивать возможности обработки для выполнения приложений формирования изображения на электронном устройстве 10, например, Photo Booth®, Aperture®, iPhoto® или предварительный просмотр®, доступных от Apple Inc., или приложений “Camera” и/или “Photo”, обеспеченных Apple Inc. и доступных на моделях iPhone®.
[00154] Инструкции или данные, подлежащие обработке процессором(ами) 16, могут храниться на машиночитаемом носителе, например, запоминающем устройстве 18. Запоминающее устройство 18 может быть обеспечено как энергозависимая память, например оперативная память (ОЗУ), или как энергонезависимая память, например постоянная память (ПЗУ), или как комбинация одного или более устройств ОЗУ и ПЗУ. В памяти 18 может храниться различная информация, и ее можно использовать в различных целях. Например, в памяти 18 могут храниться программно-аппаратное обеспечение для электронного устройства 10, например, базовая система ввода/вывода (BIOS), операционная система, различные программы, приложения, или любые другие процедуры, которые могут выполняться на электронном устройстве 10, включающие в себя функции пользовательского интерфейса, функции процессора и т.д. Кроме того, память 18 можно использовать для буферизации или кэширования в ходе эксплуатации электронного устройства 10. Например, в одном варианте осуществления, память 18 включают в себя один или более кадровые буферы для буферизации видеоданных при выводе их на дисплей 28.
[00155] Помимо запоминающего устройства 18, электронное устройство 10 может дополнительно включать в себя энергонезависимое хранилище 20 для постоянного хранения данных и/или инструкций. Энергонезависимое хранилище 20 может включать в себя флэш-память, жесткий диск или любые другие оптические, магнитные и/или твердотельные носители данных, или некоторую их комбинацию. Таким образом, хотя для наглядности на фиг.1 изображено единичное устройство, следует понимать, что устройство(а) 20 энергонезависимого хранения может(ут) включать в себя комбинацию одного или более из вышеперечисленных запоминающих устройств, действующих совместно с процессором(ами) 16. Энергонезависимое хранилище 20 можно использовать для хранения программно-аппаратного обеспечения, файлов данных, данных изображения, программ и приложений, информации беспроводного соединения, персональной информации, пользовательских предпочтений и любых других пригодных данных. В соответствии с аспектами настоящего раскрытия, данные изображения, хранящиеся в энергонезависимом хранилище 20 и/или запоминающем устройстве 18, могут обрабатываться схемой 32 обработки изображений до вывода на дисплей.
[00156] Вариант осуществления, представленный на фиг.1, также может включать в себя одно или более гнезд для платы или расширения. Гнезда для платы могут быть сконфигурированы для приема платы 22 расширения, которую можно использовать для добавления функциональных возможностей, например, дополнительной памяти, функциональных возможностей ввода/вывода или сетевых возможностей, в электронное устройство 10. Такая плата 22 расширения может подключаться к устройству через любой тип пригодного разъема, и доступ к ней можно осуществлять внутренне или внешне относительно корпуса электронного устройства 10. Например, в одном варианте осуществления, платой 24 расширения может быть карта флэш-памяти, например, карта SecureDigital (SD), mini- или microSD, плата CompactFlash и т.п., или может быть устройство PCMCIA. Дополнительно, платой 24 расширения может быть карта модуля идентификации абонента (SIM), для использования согласно варианту осуществления электронного устройства 10, которое обеспечивает возможности мобильного телефона.
[00157] Электронное устройство 10 также включает в себя сетевое устройство 24, которым может быть сетевой контроллер или карта сетевого интерфейса (NIC), которая может обеспечивать возможность сетевой связи согласно стандарту беспроводной связи 802.11 или любому другому пригодному стандарту сетевой связи, например, локальной сети (LAN), глобальной сети (WAN), например, сети Повышенной скорости передачи данных для эволюции GSM (край), сети передачи данных 3G или интернета. В некоторых вариантах осуществления, сетевое устройство 24 может обеспечивать соединение с онлайновым поставщиком цифрового медиаконтента, например, музыкальным сервисом iTunes®, доступным от Apple Inc.
[00158] Источник 26 питания устройства 10 может включать в себя возможности обеспечения питания устройства 10, как в непортативном, так и в портативном исполнении. Например, в портативном исполнении, устройство 10 может включать в себя одну или более батарей, например, литий-ионную батарею, для обеспечения питания устройства 10. Батарею можно перезаряжать, подключая устройство 10 к внешнему источнику питания, например, к электрической розетке. В непортативном исполнении, источник 26 питания может включать в себя блок электропитания (PSU), сконфигурированный для отбора мощности от электрической розетки, и для раздачи мощности на различные компоненты непортативного электронного устройства, например, стационарной вычислительной системы.
[00159] Дисплей 28 можно использовать для отображения различных изображений, генерируемых устройством 10, например, GUI для операционной системы, или данных изображения (включающих в себя неподвижные изображения и видеоданные), обработанных схемой 32 обработки изображений, как будет дополнительно описано ниже. Как упомянуто выше, данные изображения могут включать в себя данные изображения, полученные с использованием устройства 30 формирования изображения, или данные изображения, извлеченные из памяти 18 и/или энергонезависимого хранилища 20. Дисплеем 28 может быть любой пригодный тип дисплея, например, жидкокристаллический дисплей (ЖКД), плазменный дисплей, или, например, органо-светодиодный (ОСИД) дисплей. Дополнительно, как рассмотрено выше, дисплей 28 может быть обеспечен совместно с рассмотренным выше тактильно-чувствительным механизмом (например, сенсорным экраном), который может функционировать как часть интерфейса управления для электронного устройства 10.
[00160] Проиллюстрированное(ые) устройство(а) 30 формирования изображения может(ут) быть обеспечено(ы) в виде цифровой камеры, сконфигурированной для получения неподвижных изображений и движущихся изображений (например, видео). Камера 30 может включать в себя объектив и один или более датчиков изображения, сконфигурированных для захвата и преобразования света в электрические сигналы. Исключительно в порядке примера, датчик изображения может включать в себя датчик изображения на основе КМОП (например, датчик с активными пикселями (APS) на основе КМОП) или датчик на основе ПЗС (прибор с зарядовой связью). В общем случае, датчик изображения в камере 30 включает в себя интегральную схему, имеющую матрицу пикселей, в которой каждый пиксель включает в себя фотодетектор, улавливающий свет. Специалистам в данной области техники очевидно, что фотодетекторы в пикселях формирования изображения, в общем случае, регистрируют интенсивность света, улавливаемого через линзы камеры. Однако фотодетекторы, сами по себе, в общем случае, не способны регистрировать длину волны захваченного света и, таким образом, не способны определять информацию цвета.
[00161] Соответственно, датчик изображения может дополнительно включать в себя матрицу цветовых фильтров (CFA), которая может перекрывать или располагаться поверх пиксельной матрицы датчика изображения для захвата информации цвета. Матрица цветовых фильтров может включать в себя матрицу малых цветовых фильтров, каждый из которых может перекрывать соответствующий пиксель датчика изображения и фильтровать захваченный свет по длине волны. Таким образом, при совместном использовании, матрица цветовых фильтров и фотодетекторы могут обеспечивать информацию длины волны и интенсивности в отношении света, улавливаемого посредством камеры, которая может представлять захваченное изображение.
[00162] В одном варианте осуществления, матрица цветовых фильтров может включать в себя матрицу байеровских цветовых фильтров, которая обеспечивает шаблон фильтра, который на 50% состоит из зеленых элементов, на 25% из красных элементов и на 25% из синих элементов. Например, фиг.2 демонстрирует, что пиксельный блок 2×2 байеровской CFA включает в себя 2 зеленых элемента (Gr и Gb), 1 красный элемент (R), и 1 синий элемент (B). Таким образом, датчик изображения, который использует матрицу байеровских цветовых фильтров, может обеспечивать информацию, касающуюся интенсивности света, принятого камерой 30 на длинах волны зеленого, красного и синего цветов, благодаря чему, каждый пиксель изображения регистрирует только один из трех цветов (RGB). Эта информация, которая может именоваться “первичными данными изображения” или данными в “первичной области”, может затем обрабатываться с использованием одного или более методов демозаики для преобразования первичных данных изображения в полноцветное изображение, в общем случае, посредством интерполяции набора значений красного, зеленого и синего для каждого пикселя. Как будет дополнительно описано ниже, такие методы демозаики могут осуществляться схемой 32 обработки изображений.
[00163] Как упомянуто выше, схема 32 обработки изображений может обеспечивать различные этапы обработки изображений, например, операции обнаружения/коррекции дефектных пикселей, коррекции затенения объектива, демозаики и повышения резкости изображения, шумопонижения, гамма-коррекции, улучшения изображения, преобразования цветового пространства, сжатия изображения, цветовой субдескритизации и масштабирования изображение, и т.д. В некоторых вариантах осуществления, схема 32 обработки изображений может включать в себя различные подкомпоненты и/или дискретные блоки логики, которые совместно образуют “конвейер” обработки изображений для осуществления каждого из различных этапов обработки изображений. Эти подкомпоненты можно реализовать с использованием оборудования (например, процессоров цифрового сигнала или ASIC) или программного обеспечения, или посредством комбинации аппаратных и программных компонентов. Различные операции обработки изображений, которые могут обеспечиваться схемой 32 обработки изображений и, в частности, операции обработки, относящиеся к обнаружению/коррекции дефектных пикселей, коррекции затенения объектива, демозаике и повышению резкости изображения, будут более подробно рассмотрены ниже.
[00164] Прежде чем продолжить, следует отметить, что хотя различные варианты осуществления различных методов обработки изображений, рассмотренных ниже, могут использовать байеровскую CFA, описанное здесь изобретение не подлежит ограничению в связи с этим. Действительно, специалистам в данной области техники очевидно, что обеспеченные здесь методы обработки изображений можно применять к любому пригодному типу матрицы цветовых фильтров, включающих в себя фильтры RGBW, фильтры CYGM и т.д.
[00165] Возвращаясь к электронному устройству 10, фиг.3-6 иллюстрируют различные формы, которые может принимать электронное устройство 10. Как упомянуто выше, электронное устройство 10 может принимать форму компьютера, включающего в себя компьютеры, которые, в общем случае, являются портативными (например, компьютеры типа лэптоп, ноутбук и планшет), а также компьютеры, которые, в общем случае, являются непортативными (например, стационарные компьютеры, рабочие станции и/или серверы), или другой тип электронного устройства, например карманные портативные электронные устройства (например, цифровой медиаплеер или мобильный телефон). В частности, на фиг.3 и 4 изображено электронное устройство 10 в форме портативного компьютера 40 и стационарного компьютера 50, соответственно. Фиг.5 и 6 демонстрируют виды спереди и сзади, соответственно, электронного устройства 10 в форме карманного портативного устройства 60.
[00166] Как показано на фиг.3, изображенный портативный компьютер 40 включает в себя корпус 42, дисплей 28, порты 12 ввода/вывода и структуры 14 ввода. Структуры 14 ввода могут включать в себя клавиатуру и сенсорную панель с функцией мыши, которые объединены с корпусом 42. Дополнительно, структура 14 ввода может включать в себя различные другие кнопки и/или переключатели, которые можно использовать для взаимодействия с компьютером 40, например, для включения питания или запуска компьютера, для эксплуатации GUI или приложения, выполняющегося на компьютере 40, а также регулировки различных других аспектов, относящихся к работе компьютера 40 (например, громкости звука, яркости дисплея и т.д.). Компьютер 40 также может включать в себя различные порты 12 ввода/вывода, которые обеспечивают возможность подключения к дополнительным устройствам, рассмотренным выше, например, порт FireWire® или USB, порт мультимедийного интерфейса высокой четкости (HDMI), или любой другой тип порта, который пригоден для подключения к внешнему устройству. Дополнительно, компьютер 40 может включать в себя возможность сетевой связи (например, сетевое устройство 26), память (например, память 20), и возможности хранения (например, запоминающее устройство 22), как описано выше со ссылкой на фиг.1.
[00167] Кроме того, портативный компьютер 40, в проиллюстрированном варианте осуществления, может включать в себя встроенное устройство 30 формирования изображения (например, камеру). В других вариантах осуществления, портативный компьютер 40 может использовать внешнюю камеру (например, внешнюю USB-камеру или “веб-камеру”), подключенную к одному или более из портов 12 ввода/вывода вместо встроенной камеры 30 или совместно с ней. Например, внешней камерой может быть камера iSight®, доступная от Apple Inc. Камера 30, встроенная или внешняя, может обеспечивать захват и запись изображений. Пользователь может просматривать такие с использованием приложения просмотра изображений, или эти изображения могут использовать другие приложения, включающие в себя приложения видеоконференцсвязи, например iChat®, и приложения просмотра/редактирования изображений, например Photo Booth®, Aperture®, iPhoto® или Preview®, доступные от Apple Inc. В некоторых вариантах осуществления, изображенный портативный компьютер 40 может представлять собой модель MacBook®, MacBook® Pro, MacBook Air® или PowerBook®, доступную от Apple Inc. Дополнительно, компьютер 40, в одном варианте осуществления, может представлять собой портативное планшетное вычислительное устройство, например модель планшетного компьютера iPad®, также доступного от Apple Inc.
[00168] Фиг.4 дополнительно иллюстрирует вариант осуществления, в котором электронное устройство 10 обеспечено как стационарный компьютер 50. Очевидно, что стационарный компьютер 50 может включать в себя ряд признаков, которые могут быть, в общем случае, аналогичны тем, которые обеспечены портативным компьютером 40, показанным на фиг.4, но могут иметь, в общем случае, больший общий формфактор. Как показано, стационарный компьютер 50 может быть заключен в оболочку 42, которая включает в себя дисплей 28, а также различные другие компоненты, рассмотренные выше в отношении блок-схемы, показанной на фиг.1. Кроме того, стационарный компьютер 50 может включать в себя внешнюю клавиатуру и мышь (структуры 14 ввода), которые могут быть подключены к компьютеру 50 через один или более портов 12 ввода/вывода (например, USB) или может сообщаться с компьютером 50 без помощи проводов (например, РЧ, Bluetooth и т.д.). Стационарный компьютер 50 также включает в себя устройство 30 формирования изображения, которое может представлять собой внутреннюю или внешнюю камеру, как рассмотрено выше. В некоторых вариантах осуществления, изображенный стационарный компьютер 50 может представлять собой модель iMac®, Mac® mini или Mac Pro®, доступную от Apple Inc.
[00169] Как дополнительно показано, дисплей 28 может быть сконфигурирован для генерации различных изображений, которые может просматривать пользователь. Например, в ходе эксплуатации компьютера 50, дисплей 28 может отображать графический пользовательский интерфейс (“GUI”) 52, который позволяет пользователю взаимодействовать с операционной системой и/или приложением, выполняющимся на компьютере 50. GUI 52 может включать в себя различные слои, окна, экраны, шаблоны или другие графические элементы, которые могут отображаться на всем, или участке, устройства 28 отображения. Например, в представленном варианте осуществления, GUI 52 операционной системы может включать в себя различные графические пиктограммы 54, каждая из которых может соответствовать различным приложениям, которые могут открываться или выполняться при обнаружении выбора пользователя (например, посредством ввода с помощью клавиатуры/мыши или сенсорного экрана). Пиктограммы 54 могут отображаться в док-панели 56 или в одном или более графических оконных элементах 58, отображаемых на экране. В некоторых вариантах осуществления, выбор пиктограммы 54 может приводить к иерархическому навигационному процессу, благодаря чему, выбор пиктограммы 54 приводит к экрану или открывает другое графическое окно, которое включает в себя одно или более дополнительных пиктограмм или других элементов GUI. Исключительно в порядке примера, GUI 52 операционной системы, отображаемый на фиг.4, может формировать версию операционной системы Mac OS®, доступной от Apple Inc.
[00170] На фиг.5 и 6, электронное устройство 10 дополнительно проиллюстрировано в форме портативного карманного электронного устройства 60, которое может представлять собой модель iPod® или iPhone®, доступную от Apple Inc. В представленном варианте осуществления, карманное устройство 60 включает в себя оболочку 42, которая может функционировать для защиты внутренних компонентов от физического повреждения и для их экранирования от электромагнитной помехи. Оболочку 42 можно сформировать из любого пригодного материала или комбинации материалов, например, пластика, металла или композитного материала, и могут позволять некоторым частотам электромагнитного излучения, например, сигналам беспроводной сети, проникать к схеме беспроводной связи (например, сетевому устройству 24), которая может располагаться в оболочке 42, как показано на фиг.5.
[00171] Оболочка 42 также включает в себя различные структуры 14 пользовательского ввода, посредством которых пользователь может взаимодействовать с карманным устройством 60. Например, такая структура 14 ввода может быть сконфигурирована для управления одной или более функциями соответствующего устройства при нажатии или активации. В порядке примера, одна или более структур 14 ввода могут быть сконфигурированы для вызова “главного” экрана 42 или меню, подлежащего отображению, для переключения между режимами сна, пробуждения или включения/отключения питания, для отключения звонка для приложения сотового телефона, для увеличения или уменьшения уровня громкости и т.д. Следует понимать, что проиллюстрированные структуры 14 ввода являются всего лишь примерными, и что карманное устройство 60 может включать в себя любое количество пригодных структур пользовательского ввода, существующих в различных формах, включающих в себя кнопки, переключатели, клавиши, ручки, колесики прокрутки и т.д.
[00172] Как показано на фиг.5, карманное устройство 60 может включать в себя различные порты 12 ввода/вывода. Например, изображенные порты 12 ввода/вывода могут включать в себя фирменный соединительный порт 12a для передачи и приема файлов данных или для зарядки источника 26 питания и соединительный порт 12b аудио для подключения устройства 60 к устройству вывода аудио (например, наушникам или громкоговорителям). Кроме того, в вариантах осуществления, где карманное устройство 60 обеспечивает функциональные возможности мобильного телефона, устройство 60 может включать в себя порт 12c ввода/вывода для приема карты модуля идентификации абонента (SIM) (например, платы 22 расширения).
[00173] Устройство 28 отображения, которое может представлять собой ЖКД, ОСИД или любой пригодный тип дисплея, может отображать различные изображения, генерируемые карманным устройством 60. Например, дисплей 28 может отображать различные системные индикаторы 64, обеспечивающие обратную связь с пользователем в отношении одного или более состояний карманного устройства 60, например, состояния питания, интенсивности сигнала, соединений внешнего устройства и т.д. Дисплей также может отображать GUI 52, который позволяет пользователю взаимодействовать с устройством 60, как рассмотрено выше со ссылкой на фиг.4. GUI 52 может включать в себя графические элементы, например пиктограммы 54, которые могут соответствовать различным приложениям, которые могут открываться или выполняться при обнаружении выбора пользователем соответствующей пиктограммы 54. В порядке примера, одна из пиктограмм 54 может представлять приложение 66 камеры, которое можно использовать совместно с камерой 30 (показанной пунктирными линиями на фиг.5) для получения изображений. Кратко обратившись к фиг.6, проиллюстрирован вид сзади карманного электронного устройства 60, изображенного на фиг.5, который демонстрирует камеру 30, встроенную в корпус 42 и расположенную на тыльной стороны карманного устройства 60.
[00174] Как упомянуто выше, данные изображения, полученные с использованием камеры 30 можно обрабатывать с использованием схемы 32 обработки изображений, которая может включать в себя оборудование (например, расположенный в оболочке 42) и/или программное обеспечение, хранящееся на одном или более запоминающих устройствах (например, память 18 или энергонезависимое хранилище 20) устройства 60. Изображения, полученные с использованием приложения 66 камеры и камеры 30, могут храниться на устройстве 60 (например, в запоминающем устройстве 20) и могут просматриваться в более позднее время с использованием приложение 68 просмотра фотографий.
[00175] Карманное устройство 60 также может включать в себя различные элементы ввода и вывода аудио. Например, элементы ввода/вывода аудио, указанные, в общем случае, ссылочной позицией 70, может включать в себя приемник ввода, например один или более микрофонов. Например, когда карманное устройство 60 включает в себя функциональные возможности сотового телефона, приемники ввода могут быть сконфигурированы для приема пользовательского ввода аудио, например, голоса пользователя. Дополнительно, элементы 70 ввода/вывода аудио могут включать в себя один или более передатчиков вывода. Такие передатчики вывода могут включать в себя один или более громкоговорителей, которые могут функционировать для передачи аудиосигналов пользователю, например при воспроизведении музыкальных данных с использованием приложения 72 медиаплеера. Кроме того, в вариантах осуществления, где карманное устройство 60 включает в себя приложение сотового телефона, может быть обеспечен дополнительный передатчик 74 вывода аудио, как показано на фиг.5. Наподобие передатчиков вывода элементов 70 ввода/вывода аудио, передатчик 74 вывода также может включать в себя один или более громкоговорителей, сконфигурированных для передачи аудиосигналов пользователю, например голосовых данных, принятых в ходе телефонного вывода. Таким образом, элементы 70 и 74 ввода/вывода аудио могут действовать совместно с такой функцией, как элементы приема и передачи аудио телефона.
[00176] Предоставив некоторый контекст в отношении различных форм, которые может принимать электронное устройство 10, сосредоточимся на схеме 32 обработки изображений, изображенной на фиг.1. Как упомянуто выше, схему 32 обработки изображений можно реализовать с использованием аппаратных и/или программных компонентах, и может включать в себя различные блоки обработки, которые образуют конвейер обработки сигнала изображения (ISP). В частности, можно рассмотреть аспекты методов обработки изображений, изложенных в настоящем раскрытии, в частности, относящиеся к методам обнаружения/коррекции дефектных пикселей, методам коррекции затенения объектива, методам демозаики и методам повышения резкости изображения.
[00177] На фиг.7 проиллюстрирована упрощенная блок-схема высокого уровня, изображающая несколько функциональных компонентов, которые можно реализовать как часть схемы 32 обработки изображений, в соответствии с одним вариантом осуществления описанного здесь изобретения. В частности, фиг.7 призвана иллюстрировать, как данные изображения могут течь через схему 32 обработки изображений, в соответствии с, по меньшей мере, одним вариантом осуществления. Для обеспечения общего обзора схемы 32 обработки изображений, здесь обеспечено общее описание действия этих функциональных компонентов для обработки данных изображения со ссылкой на фиг.7, хотя более конкретное описание каждого из проиллюстрированных функциональных компонентов, а также их соответствующих подкомпонентов, будет дополнительно обеспечено ниже.
[00178] Согласно проиллюстрированному варианту осуществления, схема 32 обработки изображений может включать в себя логику 80 предварительной обработки для обработки сигнала изображения (ISP), логику 82 конвейерной обработки ISP и управляющую логику 84. Данные изображения, захваченные устройством 30 формирования изображения, могут сначала обрабатываться логикой 80 предварительной обработки ISP и анализироваться для захвата статистики изображения, которую можно использовать для определения одного или более параметров управления для логики 82 конвейерной обработки ISP и/или устройства 30 формирования изображения. Логика 80 предварительной обработки ISP может быть сконфигурирована для захвата данных изображения из входного сигнала датчика изображения. Например, как показано на фиг.7, устройство 30 формирования изображения может включать в себя камеру, имеющую одну или более линз 88 и датчик(и) 90 изображения. Как рассмотрено выше, датчик(и) 90 изображения может(ут) включать в себя матрицу цветовых фильтров (например, байеровский фильтр) и, таким образом, обеспечивать информацию интенсивности и длины волны света, улавливаемого каждым пикселем формирования изображения датчиков 90 изображения для обеспечения набора первичных данных изображения, которые могут обрабатываться логикой 80 предварительной обработки ISP. Например, выходной сигнал 92 устройства 30 формирования изображения может приниматься интерфейса 94 датчика, которые затем могут передавать первичные данные 96 изображения логике 80 предварительной обработки ISP на основании, например, типа интерфейса датчика. В порядке примера, интерфейс 94 датчика может использовать интерфейс стандартной архитектуры формирования изображения для мобильных устройств (SMIA) или другие последовательные или параллельные интерфейсы камеры или некоторую их комбинацию. В некоторых вариантах осуществления, логика 80 предварительной обработки ISP может действовать в своей собственной области тактового сигнала и может обеспечивать асинхронный интерфейс к интерфейсу 94 датчика для поддержки датчиков изображения разных размеров и требований к тактированию. Интерфейс 94 датчика может включать в себя, в некоторых вариантах осуществления, субинтерфейс со стороны датчика (например, интерфейс со стороны датчика) и субинтерфейс со стороны логики предварительной обработки ISP, и эти субинтерфейсы образуют интерфейс 94 датчика.
[00179] Первичные данные 96 изображения могут передаваться логике 80 предварительной обработки ISP и обрабатываться на попиксельной основе в нескольких форматах. Например, каждый пиксель изображения может иметь битовую глубину 8, 10, 12 или 14 битов. Ниже будут более подробно рассмотрены различные примеры форматов памяти, демонстрирующие, как можно осуществлять хранение и адресацию пиксельных данных в памяти. Логика 80 предварительной обработки ISP может осуществлять одну или более операций обработки изображений на первичных данных 96 изображения, а также собирать статистику по данным 96 изображения. Операции обработки изображений, а также сбора статистических данных, может осуществляться при одном и том же или при разных значениях точности по битовой глубине. Например, в одном варианте осуществления, обработка первичных пиксельных данных 96 изображения может осуществляться с 14-битовой точностью. В таких вариантах осуществления, первичные пиксельные данные, принятые логикой 80 предварительной обработки ISP, которые имеют битовую глубину менее 14 битов (например, 8 битов, 10 битов, 12 битов), могут подвергаться повышающей дискретизации до 14 битов в целях обработки изображений. В другом варианте осуществления, статистическая обработка может происходить с точностью 8 битов и, таким образом, первичные пиксельные данные, имеющие более высокую битовую глубину, могут подвергаться понижающей дискретизации до 8-битового формата в целях статистики. Очевидно, что, понижающая дискретизация до 8 битов может уменьшать размер (например, площадь) оборудования и также снижать сложность обработки/вычислений для статистических данных. Дополнительно, первичные данные изображения можно подвергать пространственному усреднению, чтобы статистические данных были более устойчивы к шуму.
[00180] Кроме того, как показано на фиг.7, логика 80 предварительной обработки ISP также может принимать пиксельные данные из памяти 108. Например, как указано ссылочной позицией 98, первичные пиксельные данные могут отправляться в память 108 из интерфейса 94 датчика. Первичные пиксельные данные, присутствующие в памяти 108, могут затем поступать на логику 80 предварительной обработки ISP для обработки, что указано ссылочной позицией 100. Память 108 может входить в состав запоминающего устройства 18, запоминающего устройства 20 или может быть отдельной специализированной памятью в электронном устройстве 10 и может включать в себя признаки прямого доступа к памяти (DMA). Кроме того, в некоторых вариантах осуществления, логика 80 предварительной обработки ISP может действовать в своей собственной области тактового сигнала и обеспечивать асинхронный интерфейс к интерфейсу 94 датчика для поддержки датчики разных размеров и имеющих разные требования к тактированию.
[00181] Приняв первичные данные 96 изображения (от интерфейса 94 датчика) или 100 (из памяти 108), логика 80 предварительной обработки ISP может осуществлять одну или более операций обработки изображений, например, временную фильтрацию и/или фильтрацию с компенсацией биннинга. Обработанные данные изображения могут затем передаваться логике 82 конвейерной обработки ISP (выходной сигнал 109) для дополнительной обработки до отображения (например, на устройстве 28 отображения), или могут отправляться в память (выходной сигнал 110). Логика 82 конвейерной обработки ISP принимает “предварительно” обработанные данные, либо непосредственно от логики 80 предварительной обработки ISP, либо из памяти 108 (входной сигнал 112), и может обеспечивать для дополнительной обработки данных изображения в первичной области, а также в цветовых пространствах RGB и YCbCr. Данные изображения, обработанные логикой 82 конвейерной обработки ISP, могут затем выводиться (сигнал 114) на дисплей 28 для просмотра пользователем и/или могут дополнительно обрабатываться машиной графики или ГП. Дополнительно, выходной сигнал логики 82 конвейерной обработки ISP может отправляться в память 108 (сигнал 115), и дисплей 28 может считывать данные изображения из памяти 108 (сигнал 116), которая, в некоторых вариантах осуществления, может быть сконфигурирована для реализации одного или более кадровых буферов. Кроме того, в некоторых реализациях, выходной сигнал логики 82 конвейерной обработки ISP также могут поступать на машину 118 сжатия/снятия сжатия (сигнал 117) для кодирования/декодирования данных изображения. Кодированные данные изображения могут сохраняться и затем подвергаться снятию сжатия до отображения на устройстве 28 отображения (сигнал 119). В порядке примера, машина сжатия или “кодер” 118 может представлять собой машину сжатия JPEG для кодирования неподвижных изображений или машину сжатия H.264 для кодирования видеоизображений, или некоторую их комбинацию, а также соответствующую машину снятие сжатия для декодирования данных изображения. Дополнительная информация в отношении операций обработки изображений, которые могут обеспечиваться в логике 82 конвейерной обработки ISP, будут более подробно рассмотрены ниже в отношении фиг.98-133. Также, следует отметить, что логика 82 конвейерной обработки ISP также может принимать первичные данные изображения из памяти 108, изображенные в виде входного сигнала 112.
[00182] Статистические данные 102, определяемые логикой 80 предварительной обработки ISP, могут передаваться блоку 84 управляющей логики. Статистические данные 102 могут включать в себя, например, статистику датчика изображения, относящуюся к автоматической установке экспозиции, автоматическому балансу белого, автофокусировке, обнаружению мерцания, компенсации уровня черного (BLC), коррекции затенения объектива и т.д. Управляющая логика 84 может включать в себя процессор и/или микроконтроллер, сконфигурированный для выполнения одной или более процедур (например, программно-аппаратного обеспечения), которые могут быть сконфигурированы для определения, на основании принятых статистических данных 102, параметров 104 управления для устройства 30 формирования изображения, а также параметров 106 управления для логики 82 конвейерной обработки ISP. Исключительно в порядке примера, параметры 104 управления могут включать в себя параметры управления датчиком (например, коэффициенты усиления, время интегрирования для управления экспозиции), параметры управления вспышкой камеры, параметры управления объективом (например, фокусное расстояние для фокусировки или трансфокации), или комбинацию таких параметров. Параметры 106 управления ISP могут включать в себя уровни усиления и коэффициенты матрицы цветовой коррекции (CCM) для автоматического баланса белого и регулировки цвета (например, при обработке RGB), а также параметры коррекции затенения объектива, которые, как рассмотрено ниже, можно определить на основании параметров баланса белого по точкам. В некоторых вариантах осуществления управляющая логика 84 может, помимо анализа статистических данных 102, также анализировать историческую статистику, которая могут храниться на электронном устройстве 10 (например, в памяти 18 или хранилище 20).
[00183] Согласно проиллюстрированному варианту осуществления, схема 32 обработки изображений может включать в себя логику 80 предварительной обработки для обработки сигнала изображения (ISP), логику 82 конвейерной обработки ISP и управляющую логику 84. Данные изображения, захваченные устройством 30 формирования изображения, могут сначала обрабатываться логикой 80 предварительной обработки ISP и анализироваться для захвата статистики изображения, которую можно использовать для определения одного или более параметров управления для логики 82 конвейерной обработки ISP и/или устройства 30 формирования изображения. Логика 80 предварительной обработки ISP может быть сконфигурирована для захвата данных изображения из входного сигнала датчика изображения. Например, как показано на фиг.7, устройство 30 формирования изображения может включать в себя камеру, имеющую одну или более линз 88 и датчик(и) 90 изображения. Как рассмотрено выше, датчик(и) 90 изображения может(ут) включать в себя матрицу цветовых фильтров (например, байеровский фильтр) и, таким образом, обеспечивать информацию интенсивности и длины волны света, улавливаемого каждым пикселем формирования изображения датчиков 90 изображения для обеспечения набора первичных данных изображения, которые могут обрабатываться логикой 80 предварительной обработки ISP. Например, выходной сигнал 92 устройства 30 формирования изображения может приниматься интерфейса 94 датчика, которые затем могут передавать первичные данные 96 изображения логике 80 предварительной обработки ISP на основании, например, типа интерфейса датчика. В порядке примера, интерфейс 94 датчика может использовать интерфейс стандартной архитектуры формирования изображения для мобильных устройств (SMIA) или другие последовательные или параллельные интерфейсы камеры или некоторую их комбинацию. В некоторых вариантах осуществления, логика 80 предварительной обработки ISP может действовать в своей собственной области тактового сигнала и может обеспечивать асинхронный интерфейс к интерфейсу 94 датчика для поддержки датчиков изображения разных размеров и требований к тактированию.
[00184] На фиг.8 показана блок-схема, изображающая другой вариант осуществления схемы 32 обработки изображений, в которой одинаковые компоненты обозначены одинаковыми ссылочными позициями. В общем случае принцип действия и функциональные возможности схемы 32 обработки изображений, показанной на фиг.8, аналогичны схеме 32 обработки изображений, показанной на фиг.7, за исключением того, что вариант осуществления, показанный на фиг.8, дополнительно включает в себя блок 120 логики окончательной обработки ISP, который может быть подключен после конвейера 82 ISP и может предусматривать дополнительные этапы последующей обработки.
[00185] В проиллюстрированном варианте осуществления, логика 120 окончательной обработки ISP может принимать выходной сигнал 114 из конвейера 82 ISP и осуществлять последующую обработку принятых данных 114. Дополнительно, логика 120 окончательной обработки ISP может принимать данные изображения непосредственно из памяти 108, что показано входным сигналом 124. Как будет дополнительно описано ниже со ссылкой на фиг.134-142, один вариант осуществления логики 120 окончательной обработки ISP может предусматривать сжатие динамического диапазона данных изображения (часто именуемое “тональным отображением”), регулировки яркости, контрастности и цвета, а также логику масштабирования для масштабирования данных изображения до желаемого размера или разрешения (например, на основании разрешения выходного устройства отображения). Кроме того, логика 120 окончательной обработки ISP также может включать в себя логику обнаружения признаков для обнаружения некоторых признаков в данных изображения. Например, в одном варианте осуществления, логика обнаружения признаков может включать в себя логику распознавания лиц, сконфигурированную для идентификации областей, в которых лица и/или лицевые признаки располагаются и/или находятся в данных изображения. Данные обнаружения лиц могут поступать на блок предварительной статистической обработки в качестве данных обратной связи для определения статистики автоматического баланса белого, автофокусировки, мерцания и автоматической установки экспозиции. Например, блоки статистической обработки в логике 80 предварительной обработки ISP (более подробно рассмотренные ниже на фиг.68-97) могут быть сконфигурированы для выбора окон для статистической обработки на основании определенных положений лиц и/или лицевых признаков в данных изображения.
[00186] В некоторых вариантах осуществления, данные обнаружения лиц, в дополнение или вместо подачи обратно в контур управления обратной связью предварительной статистики ISP, также могут поступать на, по меньшей мере, одно из логики обработки локального тонального отображения, блока окончательной статистики ISP или блока 118 кодера/декодера. Как дополнительно рассмотрено ниже, данные обнаружения лиц, поступающие на блок окончательной статистики, можно использовать для управления параметрами квантования. Например, при кодировании или сжатии выходных данных изображения (например, в макроблоках) квантование может снижаться для областей изображения, в отношении которых было определено, что они включают в себя лица и/или лицевые признаки, таким образом, повышая визуальное качество лиц и лицевых признаков, когда изображение отображается пользователю и наблюдается им.
[00187] В дополнительных вариантах осуществления, логика обнаружения признаков также может быть сконфигурирована для обнаружения положений углов объектов в кадре изображения. Эти данные можно использовать для идентификации положения признаков в последовательных кадрах изображения для определения оценки глобального движения между кадрами, которую можно использовать для осуществления некоторых операций обработки изображений, например, совмещения изображений. В одном варианте осуществления, идентификация угловых признаков и пр. может быть особенно полезна для алгоритмов, которые объединяют множественные кадры изображения, например, в некоторых алгоритмах формирования изображения с высоким динамическим диапазоном (HDR), а также некоторых алгоритмах панорамного сшивания.
[00188] Кроме того, как показано на фиг.8, данные изображения, обработанные логикой 120 окончательной обработки ISP, могут выводиться (сигнал 126) на устройство 28 отображения для просмотра пользователем и/или могут дополнительно обрабатываться машиной графики или ГП. Дополнительно, выходной сигнал логики 120 окончательной обработки ISP может направляться в память 108 (сигнал 122), и дисплей 28 может считывать данные изображения из памяти 108 (сигнал 116), которая, в некоторых вариантах осуществления, может быть сконфигурирована для реализации одного или более кадровых буферов. В проиллюстрированном варианте осуществления, выходной сигнал логики 120 окончательной обработки ISP также может поступать на машину 118 сжатия/снятия сжатия (сигнал 117) для кодирования/декодирования данных изображения для хранения и последующего воспроизведения, что, в целом, рассмотрено выше на фиг.7. В дополнительных вариантах осуществления, подсистема 32 ISP, показанная на фиг.8, может иметь вариант обхода блока 120 окончательной обработки ISP. В таких вариантах осуществления, в случае обхода блока 120 окончательной обработки, подсистема 32 ISP, показанная на фиг.8, может действовать аналогично тому, как показано на фиг.7, т.е. выходной сигнал конвейера 82 ISP направляется непосредственно/опосредованно в один или более из памяти 108, кодера/декодера 118 и дисплея 28.
[00189] Методы обработки изображений, представленные в вариантах осуществления, показанных на фиг.7 и фиг.8, можно, в общем случае, кратко выразить способом 130, изображенным посредством блок-схемы операций на фиг.9. Как показано, способ 130 начинается на блоке 132, где первичные данные изображения (например, данные шаблона Байера) принимаются с использованием интерфейса датчика от датчика изображения (например, 90). На блоке 134, первичные данные изображения, принятые на этапе 132, обрабатываются с использованием логики 80 предварительной обработки ISP. Как упомянуто выше, логика 80 предварительной обработки ISP может быть сконфигурирована для применения временной фильтрации, фильтрации с компенсацией биннинга. Затем, на этапе 136, первичные данные изображения, обработанные логикой 80 предварительной обработки ISP, могут дополнительно обрабатываться конвейером 82 ISP, который может осуществлять различные этапы обработки для демозаики первичных данных изображения в данные полноцветного RGB и для дополнительного преобразования цветовых данных RGB в цветовое пространство YUV или YC1C2 (где C1 и C2 представляют различные цветоразностные цвета, и где C1 и C2 могут представлять цветоразность (Cb) синего и цветоразность (Cr) красного в одном варианте осуществления).
[00190] От этапа 136, способ 130 может перейти либо к этапу 138, либо к этапу 160. Например, согласно варианту осуществления (фиг.7), где выходной сигнал конвейера 82 ISP поступает на устройство 28 отображения, способ 130 переходит к этапу 140, где данные изображения YC1C2 отображаются с использованием устройства 28 отображения (или передаются с конвейера 82 ISP в память 108). Альтернативно, согласно варианту осуществления, где выходной сигнал конвейера 82 ISP подвергается последующей обработке блоком 120 логики окончательной обработки ISP (фиг.8), способ 130 может переходить от этапа 136 к этапу 138, где выходной сигнал YC1C2 конвейера 82 ISP обрабатывается с использованием логики 120 окончательной обработки ISP до отображения устройством отображения на этапе 140.
[00191] По причине, в общем случае, сложной показанной здесь конструкции схемы 32 обработки изображений, может быть выгодно раздельно рассматривать логику 80 предварительной обработки ISP, логику 82 конвейерной обработки ISP (или конвейер ISP), и логику 120 окончательной обработки ISP в разных разделах, как показано ниже. В частности, фиг.10-97 настоящей заявки могут относиться к рассмотрению различных вариантов осуществления и аспектов логики 80 предварительной обработки ISP, фиг.98-133 настоящей заявки могут относиться к рассмотрению различных вариантов осуществления и аспектов логики 82 конвейерной обработки ISP, и фиг.134-142 могут относиться к рассмотрению различных вариантов осуществления и аспектов логики 120 окончательной обработки ISP.
ЛОГИКА ПРЕДВАРИТЕЛЬНОЙ ОБРАБОТКИ ISP
[00192] На фиг.10 показана более детализированная блок-схема, демонстрирующая функциональные логические блоки, которые можно реализовать в логике 80 предварительной обработки ISP, в соответствии с одним вариантом осуществления. В зависимости от конфигурации устройства 30 формирования изображения и/или интерфейса 94 датчика, как рассмотрено выше на фиг.7, первичные данные изображения могут передаваться логике 80 предварительной обработки ISP одним или более датчиками 90 изображения. В представленном варианте осуществления, первичные данные изображения могут передаваться логике 80 предварительной обработки ISP первым датчиком 90a изображения (Sensor0) и вторым датчиком 90b изображения (Sensor1). Как будет дополнительно описано ниже, каждый датчик 90a и 90b изображения может быть сконфигурирован для применения биннинга к данным изображения с полным разрешением для повышения отношения сигнал/шум сигнала изображения. Например, можно применять метод биннинга, например биннинг 2×2, который может интерполировать “подвергнутый биннингу” первичный пиксель изображения на основании четырех пикселей изображения с полным разрешением одного и того же цвета. В одном варианте осуществления, это может приводить к тому, что четыре накопленных компоненты сигнала, связанные с подвергнутым биннингу пикселем, соответствуют одной шумовой компоненте, что повышает отношение сигнал-шум данных изображения, но снижает общее разрешение. Дополнительно, биннинг также может приводить к неравномерной или неоднородной пространственной дискретизации данных изображения, которую можно корректировать с использованием фильтрации с компенсацией биннинга, которая будет более подробно рассмотрена ниже.
[00193] Как показано, датчики 90a и 90b изображения могут обеспечивать первичные данные изображения как сигналы Sif0 и Sif1, соответственно. Каждый из датчиков 90a и 90b изображения, в общем случае, может быть связан с соответствующими блоками 142 (StatsPipe0) и 144 (StatsPipe1), статистической обработки, которые могут быть сконфигурированы для обработки данных изображения для определения одного или более наборов статистики (указанных сигналами Stats0 и Stats1), включающих в себя статистику, относящуюся к автоматической установке экспозиции, автоматическому балансу белого, автофокусировке, обнаружению мерцания, компенсации уровня черного и коррекции затенения объектива и т.д. В некоторых вариантах осуществления, когда только один из датчиков 90a или 90b активно получает изображение, данные изображения могут отправляться на оба StatsPipe0 и StatsPipe1, если нужна дополнительная статистика. Например, для обеспечения одного примера, если оба StatsPipe0 и StatsPipe1 доступны, StatsPipe0 можно использовать для сбора статистики для одного цветового пространства (например, RGB), и StatsPipe1 можно использовать для сбора статистики для другого цветового пространства (например, YUV или YCbCr). Таким образом, блоки 142 и 144 статистической обработки могут действовать параллельно для сбора множественных наборов статистики для каждого кадра данных изображения, полученного активным датчиком.
[00194] В настоящем варианте осуществления, пять асинхронных источников данных обеспечено в логике 80 предварительной обработки ISP. Они включают в себя: (1) прямой ввод из интерфейса датчика, соответствующего Sensor0 (90a) (именуемый Sif0 или Sens0), (2) прямой ввод из интерфейса датчика, соответствующего Sensor1 (90b) (именуемый Sif1 или Sens1), (3) ввод данных Sensor0 из памяти 108 (именуемый SifIn0 или Sens0DMA), который может включать в себя интерфейс DMA, (4) ввод данных Sensor1 из памяти 108 (именуемый SifIn1 или Sens1DMA), и (5) набор данных изображения с кадрами из ввода данных Sensor0 и Sensor1, извлеченными из памяти 108 (именуемый FeProcIn или ProcInDMA). Логика 80 предварительной обработки ISP также может включать в себя множественные пункты назначения, куда могут маршрутизироваться данные изображения из источников, причем каждый пункт назначения может представлять собой, либо ячейку хранения в памяти (например, в 108), либо блок обработки. Например, в настоящем варианте осуществления, логика 80 предварительной обработки ISP включает в себя шесть пунктов назначения: (1) Sif0DMA для приема данных Sensor0 в памяти 108, (2) Sif1DMA для приема данных Sensor1 в памяти 108, (3) первый блок 142 статистической обработки (StatsPipe0), (4) второй блок 144 (StatsPipe1), статистической обработки (StatsPipe1), (5) блок 150 предварительной обработки обработки пикселей (FEProc), и (6) FeOut (или FEProcOut) в память 108 или конвейер 82 ISP (более подробно рассмотренный ниже). В одном варианте осуществления, логика 80 предварительной обработки ISP может быть сконфигурирована таким образом, что только некоторые пункты назначения действительны для конкретного источника, как показано в нижеприведенной таблице 1.
DMA
DMA
[00195] Например, в соответствии с таблицей 1, источник Sens0 (интерфейс датчика Sensor0) может быть сконфигурирован для передачи данных в пункты назначения SIf0DMA (сигнал 154), StatsPipe0 (сигнал 156), StatsPipe1 (сигнал 158), FEProc (сигнал 160), или FEOut (сигнал 162). В отношении FEOut, данные источника, в ряде случаев, могут поступать FEOut для обхода обработки пикселей посредством FEProc, например в целях отладки или тестирования. Дополнительно, источник Sens1 (интерфейс датчика Sensor1) может быть сконфигурирован для передачи данных в пункты назначения SIf1DMA (сигнал 164), StatsPipe0 (сигнал 166), StatsPipe1 (сигнал 168), FEProc (сигнал 170), или FEOut (сигнал 172), источник Sens0DMA (данные Sensor0 из памяти 108) может быть сконфигурирован для передачи данных на StatsPipe0 (сигнал 174), источник Sens1DMA (данные Sensor1 из памяти 108) может быть сконфигурирован для передачи данных на StatsPipe1 (сигнал 176), и ProcInDMA источника (данные Sensor0 и Sensor1 из памяти 108) может быть сконфигурирован для передачи данных на FEProc (сигнал 178) и FEOut (сигнал 182).
[00196] Следует отметить, что проиллюстрированный здесь вариант осуществления сконфигурирован таким образом, что Sens0DMA (кадры Sensor0 из памяти 108) и Sens1DMA (кадры Sensor1 из памяти 108) поступают только на StatsPipe0 и StatesPipe1, соответственно. Эта конфигурация позволяет логике 80 предварительной обработки ISP сохранять некоторое количество предыдущих кадров (например, 5 кадров) в памяти. Например, вследствие задержки или отставания между моментом, когда пользователь инициирует событие захвата (например, переход системы формирования изображения из режима предварительного просмотра в режим захвата или записи, или даже просто включение или инициализация датчика изображения) с использованием датчика изображения и моментом захвата сцены изображения, не каждый кадр, который пользователь намеревался захватить, может захватываться и обрабатываться, по существу, в реальном времени. Таким образом, благодаря сохранению некоторого количества предыдущих кадров в памяти 108 (например, из фазы предварительного просмотра), эти предыдущие кадры можно обрабатывать позже или совместно с кадрами, фактически захваченными в ответ на событие захвата, таким образом, компенсируя любое такое отставание и обеспечивая более полный массив данных изображения.
[00197] В отношении конфигурации, проиллюстрированной на фиг.10, следует отметить, что StatsPipe0 142 сконфигурирован для приема одного из вводов 156 (от Sens0), 166 (от Sens1), и 174 (от Sens0DMA), определяемых логикой 146 выбора, например мультиплексором. Аналогично, логика 148 выбора может выбирать ввод из сигналов 158, 176 и 168 для подачи на StatsPipe1, и логика 152 выбора может выбирать ввод из сигналов 160, 170 и 178 для подачи на FEProc. Как упомянуто выше, статистические данные (Stats0 и Stats1) могут передаваться управляющей логике 84 для определения различных параметров управления, которые можно использовать для эксплуатации устройства 30 формирования изображения и/или логики 82 конвейерной обработки ISP. Очевидно, что логические блоки (146, 148 и 152) выбора, показанные на фиг.10 могут быть обеспечены любым пригодным типом логики, например мультиплексором, который выбирает один из множественных входных сигналов в ответ на сигнал управления.
[00198] Блок 150 обработки пикселей (FEProc) может быть сконфигурирован для осуществления различных операций обработки изображений на первичных данных изображения на попиксельной основе. Как показано, FEProc 150, в качестве блока обработки назначения, может принимать данные изображения из источников Sens0 (сигнал 160), Sens1 (сигнал 170) или ProcInDMA (сигнал 178) посредством логики 152 выбора. FEProc 150 также может принимать и выводить различные сигналы (например, Rin, Hin, Hout и Yout, которые могут представлять историю движения и данные яркости, используемые в ходе временной фильтрации) при осуществлении операций обработки пикселей, которые могут включать в себя временную фильтрацию и фильтрацию с компенсацией биннинга, что будет дополнительно описано ниже. Выходной сигнал 109 (FEProcOut) блока 150 обработки пикселей затем может перенаправляться на логику 82 конвейерной обработки ISP, например, через одну или более очередей «первым вошел, первым вышел» (FIFO), или может отправляться в память 108.
[00199] Кроме того, как показано на фиг.10, логика 152 выбора, помимо приема сигналов 160, 170 и 178, может дополнительно принимать сигналы 180 и 184. Сигнал 180 может быть представлен “предварительно обработанными” первичными данными изображения из StatsPipe0, и сигнал 184 может представлять “предварительно обработанные” первичные данные изображения из StatsPipe1. Как будет рассмотрено ниже, каждый из блоков статистической обработки может применять одну или более операций предварительной обработки к первичным данным изображения до сбора статистики. В одном варианте осуществления, каждый из блоков статистической обработки может осуществлять степень обнаружения/коррекции дефектных пикселей, коррекции затенения объектива, компенсации уровня черного и обратной компенсации уровня черного. Таким образом, сигналы 180 и 184 могут представлять первичные данные изображения, обработанные с использованием вышеупомянутых операций предварительной обработки (что будет более подробно рассмотрено ниже на фиг.68). Таким образом, логика 152 выбора придает логике 80 предварительной обработки ISP гибкость в обеспечении, либо первичных данных изображения, не прошедшие предварительной обработки, из Sensor0 (сигнал 160) и Sensor1 (сигнал 170), либо предварительно обработанных первичных данных изображения из StatsPipe0 (сигнал 180) и StatsPipe1 (сигнал 184). Дополнительно, как указано логическими блоками 186 и 188, выбора, логика 80 предварительной обработки ISP также обладает гибкостью, либо в записи первичных данных изображения, не прошедших предварительной обработки, из Sensor0 (сигнал 154) или Sensor1 (сигнал 164) в память 108, либо в записи предварительно обработанных первичных данных изображения из StatsPipe0 (сигнал 180) или StatsPipe1 (сигнал 184) в память 108.
[00200] Для управления работой логики 80 предварительной обработки ISP, обеспечен блок 190 управления предварительной обработкой. Блок 190 управления может быть сконфигурирован для инициализации и программирования регистров управления (именуемых здесь “стартовые регистры”) для конфигурирования и запуска обработки кадра изображения и для выбора надлежащего(их) банка(их) регистров для обновления дважды буферизованных регистров данных. В некоторых вариантах осуществления, блок 190 управления также может обеспечивать логику контроля производительности для регистрации периодов тактового сигнала, латентности памяти и информации качества обслуживания (QOS). Кроме того, блок 190 управления также может управлять динамическим стробированием тактового сигнала, которое можно использовать для отключения подачи тактового сигнала на один или более участков логики 0 предварительной обработки ISP в отсутствие достаточного объема данных во входной очереди из активного датчика.
[00201] Использование вышеупомянутых “стартовых регистров” позволяет блоку 190 управления управлять обновлением различных параметров для каждого из блоков обработки (например, StatsPipe0, StatsPipe1 и FEProc) и взаимодействовать с интерфейсами датчиков для управления запуском и остановкой блоков обработки. В общем случае каждый из блоков предварительной обработки действует на покадровой основе. Как рассмотрено выше (таблица 1), ввод в блоки обработки может осуществляться из интерфейса датчика (Sens0 или Sens1) или из памяти 108. Кроме того, блоки обработки могут использовать различные параметры и данные конфигурации, которые могут храниться в соответствующих регистрах данных. В одном варианте осуществления, регистры данных, связанные с каждым блоком обработки или пунктом назначения, могут группироваться в блоки, образующие группу банков регистров. Согласно варианту осуществления, показанному на фиг.10, в логике предварительной обработки ISP можно задать семь групп банков регистров: SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn. Адресное пространство каждого блока регистров дублируется для обеспечения двух банков регистров. Во втором банке представлены только дважды буферизованные регистры. Если регистр не является дважды буферизованным, адрес во втором банке может отображаться в адрес того же регистра в первом банке.
[00202] Для дважды буферизованных регистров, регистры из одного банка активны и используются блоками обработки, тогда как регистры из другого банка являются теневыми. Теневой регистр может обновляться блоком 190 управления в течение текущего кадрового интервала, в то время как оборудование использует активные регистры. Определение, какой банк использовать для конкретного блока обработки в конкретном кадре, может задаваться полем “NextBk” (следующий банк) в стартовом регистре, соответствующем источнику, откуда данные изображения поступают на блок обработки. По существу, NextBk является полем, которое позволяет блоку 190 управления решать, какой банк регистров становится активным по событию запуска для последующего кадра.
[00203] Прежде чем перейти к подробному рассмотрению работы стартовых регистров, рассмотрим представленный на фиг.11 общий способ 200 обработки данных изображения на покадровой основе в соответствии с настоящим изобретением. Начиная с этапа 202, блоки обработки назначения, указанные источником данных (например, Sens0, Sens1, Sens0DMA, Sens1DMA или ProcInDMA), входят в неактивное состояние. Это может свидетельствовать о том, что обработка для текущего кадра завершена, и, таким образом, блок 190 управления может готовиться к обработке следующего кадра. Например, на этапе 204 программируемые параметры для каждого блока обработки назначения обновляются. Этот этап может включать в себя, например, обновление поля NextBk в стартовом регистре, соответствующем источнику, а также обновление любых параметров в регистрах данных, соответствующих блокам назначения. После этого, на этапе 206, событие запуска может переводить блоки назначения в рабочее состояние. Кроме того, как показано на этапе 208, каждый блок назначения, указанный источником, заканчивает свои операции обработки для текущего кадра, и затем способ 200 может вернуться к этапу 202 для обработки следующего кадра.
[00204] На фиг.12 изображена блок-схема, демонстрирующая два банка регистров 210 и 212 данных, которые могут использоваться различными блоками назначения логики предварительной обработки ISP. Например, банк 0 (210) может включать в себя регистры 1-n (210a-210d), и банк 1 (212) может включать в себя регистры 1-n (212a-212d). Как рассмотрено выше, вариант осуществления, показанный на фиг.10 может использовать банк регистров (банк 0), имеющий семь групп банков регистров (например, SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn). Таким образом, в таком варианте осуществления, адресное пространство блока регистров каждого регистра дублируется для обеспечения второго банка регистров (банк 1).
[00205] Фиг.12 также иллюстрирует стартовый регистр 214, который может соответствовать одному из источников. Как показано, стартовый регистр 214 включает в себя поле 216 “NextVld” и вышеупомянутое поле 218 “NextBk”. Эти поля можно программировать до запуска обработки текущего кадра. В частности, NextVld может указывать пункт(ы) назначения, куда должны направляться данные из источника. Как рассмотрено выше, NextBk может выбирать соответствующий регистр данных из Bank0 или Bank1 для каждого указанного пункта назначения, который указан в NextVld. Хотя это не показано на фиг.12, стартовый регистр 214 также может включать в себя бит готовности, именуемый здесь “стартовый бит”, который может быть задан для приведения в готовность стартового регистра. При обнаружении события 226 запуска для текущего кадра, NextVld и NextBk могут копироваться в поле 222 CurrVld и поле 224 CurrBk соответствующего текущего или “активного” регистра 220. В одном варианте осуществления, текущий(е) регистр(ы) 220 могут быть регистрами только для чтения, которые могут устанавливаться оборудованием, оставаясь недоступными для команд программного обеспечения в логике 80 предварительной обработки ISP.
[00206] Очевидно, что, для каждого источника предварительной обработки ISP можно обеспечить соответствующий стартовый регистр. В целях этого раскрытия, стартовые регистры, соответствующие рассмотренным выше источникам Sens0, Sens1, Sens0DMA, Sens1DMA, и ProcInDMA, могут именоваться Sens0Go, Sens1Go, Sens0DMAGo, Sens1DMAGo и ProcInDMAGo, соответственно. Как упомянуто выше, блок управления может использовать стартовые регистры для управления упорядочением обработки кадров в логике 80 предварительной обработки ISP. Каждый стартовый регистр содержит поле NextVld и поле NextBk для указания, какие пункты назначения будут действительными, и какой банк регистров (0 или 1) будет использоваться, соответственно, для следующего кадра. Когда происходит событие 226 запуска следующего кадра, поля NextVld и NextBk копируются в соответствующий активный регистр 220 только для чтения, который указывает текущие действительные пункты назначения и номера банков, как показано выше на фиг.12. Каждый источник может быть сконфигурирован для асинхронного действия и может отправлять данные в любой из своих действительных пунктов назначения. Кроме того, следует понимать, что для каждого пункта назначения, в общем случае только один источник может быть активным в текущем кадре.
[00207] В отношении приведения в готовность и запуска стартового регистра 214, объявление бита готовности или “стартового бита” в стартовом регистре 214 приводит в готовность соответствующий источник с помощью соответствующих полей NextVld и NextBk. Для запуска доступны различные режимы в зависимости от того, считываются ли входные данные источника из памяти (например, Sens0DMA, Sens1DMA или ProcInDMA), или входные данные источника поступают из интерфейса датчика (например, Sens0 или Sens1). Например, если ввод осуществляется из памяти 108, само по себе приведение в готовность стартового бита может служить событием запуска, поскольку блок 190 управления получает управление, когда данные считываются из памяти 108. Если кадры изображения вводятся интерфейсом датчика, то событие запуска может зависеть от тактирования приведения в готовность соответствующего стартового регистра относительно времени приема данных из интерфейса датчика. В соответствии с настоящим вариантом осуществления на фиг.13-15 показаны три разных подхода к тактированию запуска из ввода интерфейса датчика.
[00208] На фиг.13 проиллюстрирован первый сценарий, в котором запуск происходит после перехода всех пунктов назначения, указанных источником, из занятого или рабочего состояния в неактивное состояние. В данном случае, сигнал данных VVALID (228) представляет сигнал данных изображения от источника. Импульс 230 представляет текущий кадр данных изображения, импульс 236 представляет следующий кадр данных изображения, и интервал 232 представляет интервал вертикального гашения (VBLANK) 232 (например, представляет промежуток времени между последней строкой текущего кадра 230 и следующим кадром 236). Промежуток времени между передним фронтом и задним фронтом импульса 230 представляет кадровый интервал 234. Таким образом, согласно фиг.13, источник может быть сконфигурирован для осуществления запуска, когда все указанные пункты назначения закончат операции обработки на текущем кадре 230 и перейдут в неактивное состояние. В этом сценарии источник приводится в готовность (например, посредством задания бита готовности или “стартового” бита) до того, как пункты назначения завершат обработку, благодаря чему, источник может запускать и инициировать обработку следующего кадра 236, как только указанные пункты назначения перейдут в неактивное состояние. В течение интервала 232 вертикального гашения блоки обработки можно устанавливать и конфигурировать для следующего кадра 236 с использованием банков регистров, заданных стартовым регистром, соответствующим источнику, до поступления входных данных датчика. Исключительно в порядке примера, буферы чтения, используемые FEProc 150 могут наполняться до поступления следующего кадра 236. В этом случае теневые регистры, соответствующие активным банкам регистров, могут обновляться после события запуска, таким образом, позволяя полному кадровому интервалу устанавливать дважды буферизованные регистры для следующего кадра (например, после кадра 236).
[00209] Фиг.14 иллюстрирует второй сценарий, в котором источник запускается посредством приведения в готовность стартового бита в стартовом регистре, соответствующем источнику. В этой конфигурация “запуск-включение-старт”, блоки назначения, указанные источником, уже неактивны, и приведение в готовность стартового бита является событием запуска. Этот режим запуска можно использовать для регистров, которые не являются дважды буферизованными и, таким образом, обновляются в течение интервала вертикального гашения (например, в отличие от обновления дважды буферизованного теневого регистра в течение кадрового интервала 234).
[00210] Фиг.15 иллюстрирует третий режим запуска, в котором источник запускается после обнаружения начала следующего кадра, т.е. растущего VSYNC. Однако следует отметить, что в этом режиме, если стартовый регистр приводится в готовность (посредством задания стартового бита) после того, как следующий кадр 236 уже начал обработку, источник будет использовать целевые пункты назначения и банки регистров, соответствующие предыдущему кадру, поскольку поля CurrVld и CurrBk не обновляются до того, как пункт назначения начинает обработку. Это не оставляет ни одного интервала вертикального гашения для установления блоков обработки назначения и может потенциально приводить к сбросу кадров, в частности при работе в двухдатчиковом режиме. Однако следует отметить, что этот режим, тем не менее, может приводить к точной работе, если схема 32 обработки изображений работает в однодатчиковом режиме, который использует одни и те же банки регистров для каждого кадра (например, пункт назначения (NextVld) и банки регистров (NextBk) не изменяются).
[00211] Регистр 214 управления (или “стартовый регистр”) более подробно проиллюстрирован со ссылкой на фиг.16. Стартовый регистр 214 включает в себя “стартовый” бит 238 готовности, а также поле 216 NextVld и поле 218 NextBk. Как рассмотрено выше, каждый источник (например, Sens0, Sens1, Sens0DMA, Sens1DMA или ProcInDMA) логики 80 предварительной обработки ISP может иметь соответствующий стартовый регистр 214. В одном варианте осуществления, стартовый бит 238 может быть однобитовым полем, и стартовый регистр 214 может приводиться в готовность посредством задания стартового бита 238 равным 1. Поле 216 NextVld может содержать некоторое количество битов, соответствующее количеству пунктов назначения в логике 80 предварительной обработки ISP. Например, согласно варианту осуществления, показанному на фиг.10, логика предварительной обработки ISP включает в себя шесть пунктов назначения: Sif0DMA, Sif1DMA, StatsPipe0, StatsPipe1, FEProc и FEOut. Таким образом, стартовый регистр 214 может включать в себя шесть битов в поле 216, NextVld, причем каждому пункту назначения соответствует один бит, и указанные пункты назначения заданы равными 1. Аналогично, поле 216 NextBk может содержать некоторое количество битов, соответствующее количеству регистров данных в логике 80 предварительной обработки ISP. Например, как рассмотрено выше, вариант осуществления логики 80 предварительной обработки ISP, показанный на фиг.10 может включать в себя семь регистров данных: SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn. Соответственно, поле 218 NextBk может включать в себя семь битов, причем каждому регистру данных соответствует один бит, и регистры данных, соответствующие банку 0 и 1, выбираются посредством задания их соответствующих битовых значений равными 0 или 1, соответственно. Таким образом, используя стартовый регистр 214, источник, после запуска, точно знает, какие блоки назначения служат для приема данных кадра, и какие банки регистров должны использоваться для конфигурирования указанных блоков назначения.
[00212] Дополнительно, благодаря двухдатчиковой конфигурации, поддерживаемой схемой 32 ISP, логика предварительной обработки ISP может действовать в режиме однодатчиковой конфигурации (например, данные получает только один датчик) и в режиме двухдатчиковой конфигурации (например, данные получают оба датчика). В типичной однодатчиковой конфигурации, входные данные из интерфейса датчика, например Sens0, передаются в StatsPipe0 (для статистической обработки) и FEProc (для обработки пикселей). Кроме того, кадры датчика также могут передаваться в память (SIf0DMA) для дальнейшей обработки, что рассмотрено выше.
[00213] Пример того, как поля NextVld, соответствующие каждому источнику логики 80 предварительной обработки ISP, могут быть сконфигурированы при работе в однодатчиковом режиме, представлен ниже в таблице 2.
Как рассмотрено выше со ссылкой на таблицу 1, логика 80 предварительной обработки ISP может быть сконфигурирована таким образом, что только некоторые пункты назначения действительны для конкретного источника. Таким образом, пункты назначения в таблице 2 помеченные “X” предназначены для указания, что логика 80 предварительной обработки ISP не сконфигурирована позволять конкретному источнику отправлять данные кадра в этот пункт назначения. Для таких пунктов назначения, биты поля NextVld конкретного источника, соответствующего этому пункту назначения, всегда могут быть равны 0. Однако следует понимать, что это всего лишь один вариант осуществления и, в действительности, в других вариантах осуществления, логика 80 предварительной обработки ISP может быть сконфигурирована таким образом, что каждый источник способен указывать каждый доступный блок назначения.
[00214] Конфигурация, показанная выше в таблице 2, представляет однодатчиковый режим, в котором только Sensor0 обеспечивает данные кадра. Например, регистр Sens0Go указывает пункты назначения как SIf0DMA, StatsPipe0 и FEProc. Таким образом, при запуске, каждый кадр данных изображения Sensor0, передается в эти три пункта назначения. Как рассмотрено выше, SIf0DMA может сохранять кадры в памяти 108 для дальнейшей обработки, StatsPipe0 применяет статистическую обработку для определения различных точек статистических данных, и FEProc обрабатывает кадр с использованием, например, временной фильтрации и фильтрации с компенсацией биннинга. Кроме того, в некоторых конфигурациях, где желательна дополнительная статистика (например, статистика в разных цветовых пространствах), StatsPipe1 также может активироваться (соответствующее NextVld устанавливается равным 1) в однодатчиковом режиме. В таких вариантах осуществления, данные кадра Sensor0 передаются на StatsPipe0 и StatsPipe1. Кроме того, как показано в настоящем варианте осуществления, только один интерфейс датчика (например, Sens0 или, альтернативно, Sen0) является единственным активным источником в однодатчиковом режиме.
[00215] На основании вышеизложенного, на фиг.17 представлена блок-схема операций, изображающая способ 240 обработки данных кадра в логике 80 предварительной обработки ISP, когда активен только один датчик (например, датчик 0). Хотя способ 240 иллюстрирует, в частности, обработку данных кадра Sensor0 посредством FEProc 150 в порядке примера, следует понимать, что этот процесс может применяться к любому другому источнику и соответствующему блоку назначения в логике 80 предварительной обработки ISP. Начиная с этапа 242, Sensor0 начинает получать данные изображения и передавать захваченные кадры логике 80 предварительной обработки ISP. Блок 190 управления может инициализировать программирование стартового регистра, соответствующего Sens0 (интерфейсу Sensor0) для определения целевых пунктов назначения (включающих в себя FEProc) и какие регистры банка использовать, как показано на этапе 244. После этого, логика 246 принятия решения определяет, произошло ли событие запуска источника. Как рассмотрено выше, при вводе данных кадра из интерфейса датчика можно использовать разные режимы запуска (фиг.13-15). Если событие запуска не обнаружено, процесс 240 продолжает ожидать запуска. Когда происходит запуск, следующий кадр становится текущим кадром и передается на FEProc (и другие целевые пункты назначения) для обработки на этапе 248. FEProc может быть сконфигурирован с использованием параметров данных на основании соответствующего регистра данных (ProcPipe), указанного в поле NextBk регистра Sens0Go. По завершении обработки текущего кадра на этапе 250, способ 240 может вернуться к этапу 244, на котором регистр Sens0Go программируется для следующего кадра.
[00216] Когда оба Sensor0 и Sensor1 логики 80 предварительной обработки ISP активны, статистическая обработка остается, в общем случае, прямой, поскольку входной сигнал каждого датчика может обрабатываться соответствующим блоком статистики, StatsPipe0 и StatsPipe1. Однако, поскольку проиллюстрированный вариант осуществления логики 80 предварительной обработки ISP предусматривает только один блок обработки пикселей (FEProc), FEProc может быть сконфигурирован для попеременной обработки кадров, соответствующих входным данным Sensor0, и кадров, соответствующих входным данным Sensor1. Очевидно, что кадры изображения считываются из FEProc в проиллюстрированном варианте осуществления во избежание условия, в котором данные изображения от одного датчика обрабатываются в реальном времени, тогда как данные изображения от другого датчика не обрабатываются в реальном времени. Например, как показано ниже в таблице 3, где представлена одна возможная конфигурация полей NextVld в стартовых регистрах для каждого источника, когда логика 80 предварительной обработки ISP работает в двухдатчиковом режиме, входные данные от каждого датчика передаются в память (SIf0DMA и SIf1DMA) и на соответствующий блок статистической обработки (StatsPipe0 и StatsPipe1).
[00217] Кадры датчика в памяти отправляются на FEProc из источника ProcInDMA, таким образом, что они переключаются между Sensor0 и Sensor1 с частотой на основании их соответствующих частот кадров. Например, если Sensor0 и Sensor1 оба получают данные изображения с частотой 30 кадров в секунду (кадр/с), то их кадры датчика могут перемежаться по одному. Если Sensor0 (30 кадр/с) получает данные изображения со вдвое большей частотой, чем Sensor1 (15 кадр/с), то перемежение может осуществляться, например, в режиме 2 к 1. Таким образом, два кадра данных Sensor0 считываются из памяти для каждого кадра данных Sensor1.
[00218] На основании вышеизложенного, фиг.18 изображает способ 252 обработки данных кадра в логике 80 предварительной обработки ISP, имеющей два датчика, одновременно получающих данные изображения. На этапе 254, Sensor0 и Sensor1 начинают получать кадры изображения. Очевидно, что Sensor0 и Sensor1 могут получать кадры изображения с использованием разных частот кадров, разрешений и т.д. На этапе 256, кадры, полученные от Sensor0 и Sensor1, записываются в память 108 (например, с использованием пунктов назначения SIf0DMA и SIf1DMA). Затем, ProcInDMA источника считывает данные кадра из памяти 108 попеременно, как указано на этапе 258. Как рассмотрено, кадры могут перемежаться между данными Sensor0 и данными Sensor1 в зависимости от частоты кадров, на которой происходит получение данных. На этапе 260, из ProcInDMA получается следующий кадр. После этого, на этапе 262, поля NextVld и NextBk стартового регистра, соответствующие источнику, в данном случае ProcInDMA, программируются в зависимости от того, является ли следующий кадр данными Sensor0 или Sensor1. После этого, логика 264 принятия решения определяет, произошло ли событие запуска источника. Как рассмотрено выше, ввод данных из памяти может запускаться посредством приведения в готовность стартового бита (например, режим “запуск-включение-старт”). Таким образом, запуск может происходить, когда стартовый бит стартового регистра устанавливается равным 1. Когда происходит запуск, следующий кадр становится текущим кадром и передается на FEProc для обработки на этапе 266. Как рассмотрено выше, FEProc может быть сконфигурирован с использованием параметров данных на основании соответствующего регистра данных (ProcPipe), указанного в поле NextBk регистра ProcInDMAGo. По завершении обработки текущего кадра на этапе 268, способ 252 может вернуться к этапу 260 и продолжиться.
[00219] Дополнительным операционным событием, для обработки которого сконфигурирована логика 80 предварительной обработки ISP, является смена конфигурации в ходе обработки изображений. Например, такое событие может происходить, когда логика 80 предварительной обработки ISP переходит от однодатчиковой конфигурации к двухдатчиковой конфигурации или наоборот. Как рассмотрено выше, поля NextVld для некоторых источников могут различаться в зависимости от того, активны ли один или оба датчика изображения. Таким образом, при смене конфигурации датчиков, блок 190 управления предварительной обработкой ISP может освобождать все блоки назначения до того, как они будут указаны новым источником. Это позволяет избегать недействительных конфигураций (например, назначения множественных источников одному пункту назначения). В одном варианте осуществления, освобождение блоков назначения может осуществляться посредством задания полей NextVld всех стартовых регистров равными 0, таким образом, деактивации всех пунктов назначения, и приведения в готовность стартового бита. После освобождения блоков назначения, стартовые регистры можно переконфигурировать в зависимости от текущего режима датчиков, и обработка изображений может продолжаться.
[00220] Способ 270 переключения между одно- и двухдатчиковой конфигурациями показан на фиг.19, в соответствии с одним вариантом осуществления. Начиная с этапа 272, идентифицируется следующий кадр данных изображения из конкретного источника логики 80 предварительной обработки ISP. На этапе 274, целевые пункты назначения (NextVld) программируются в стартовом регистре, соответствующем источнику. Затем, на этапе 276, в зависимости от целевых пунктов назначения, NextBk программируется для указания верных регистров данных, связанных с целевыми пунктами назначения. После этого, логика 278 принятия решения определяет, произошло ли событие запуска источника. Когда происходит запуск, следующий кадр передается на блоки назначения, указанные NextVld, и обрабатывается блоками назначения с использованием соответствующих регистров данных, указанных NextBk, как показано на этапе 280. Обработка продолжается до этапа 282, на котором обработка текущего кадра завершается.
[00221] Затем, логика 284 принятия решения определяет, изменились ли целевые пункты назначения для источника. Как рассмотрено выше, настройки в NextVld стартовых регистров, соответствующих Sens0 и Sens1, могут изменяться в зависимости от того, активны ли один датчик или два датчика. Например, согласно таблице 2, если только активен Sensor0, данные Sensor0 передаются на SIf0DMA, StatsPipe0 и FEProc. Однако, согласно таблице 3, если активны оба Sensor0 и Sensor1, то данные Sensor0 не передаются непосредственно на FEProc. Вместо этого, как упомянуто выше, данные Sensor0 и Sensor1 записываются в память 108 и считываются в FEProc попеременно ProcInDMA источника. Таким образом, если на логике 284 принятия решения не обнаружено смены целевого пункта назначения, блок 190 управления делает вывод, что конфигурация датчиков не изменилась, и способ 270 возвращается к этапу 276, где поле NextBk стартового регистра источник программируется для указания верных регистров данных для следующего кадра, и продолжается.
[00222] Если же на логике 284, принятия решения обнаружена смена пункта назначения, то блок 190 управления определяет, что произошла смена конфигурации датчиков. Например, это может выражаться в переключении с однодатчикового режима в двухдатчиковый режим, или отключение всех датчиков. Соответственно, способ 270 переходит к этапу 286, на котором все биты полей NextVld для всех стартовых регистров задаются равными 0, таким образом, эффективно блокируется отправка кадров в любой пункт назначения при следующем запуске. Затем, на логике 288, принятия решения, производится определение, все ли блоки назначения перешли в неактивное состояние. Если нет, способ 270 ожидает на логике 288 принятия решения, пока все блоки назначения не завершат свои текущие операции. Затем, на логике 290, принятия решения, производится определение, продолжать ли обработку изображений. Например, если происходит смена пункта назначения, выражающаяся в деактивации обоих Sensor0 и Sensor1, то обработка изображений заканчивается на этапе 292. Однако если определено, что обработка изображений должна продолжаться, то способ 270 возвращается к этапу 274, и поля NextVld стартовых регистров программируются в соответствии с текущим режимом работы (например, однодатчиковым или двухдатчиковым). Как показано здесь, этапы 284-292 для очистки стартовых регистров и полей пункта назначения можно совместно обозначать ссылочной позицией 294.
[00223] Фиг.20 демонстрирует дополнительный вариант осуществления посредством блок-схемы операций (способ 296), который предусматривает другой двухдатчиковый режим работы. Способ 296 изображает условие, при котором один датчик (например, Sensor0) активно получает данные изображения и передает кадры изображения на FEProc 150 для обработки, одновременно также передавая кадры изображения в StatsPipe0 и/или память 108 (Sif0DMA), тогда как другой датчик (например, Sensor1) не активен (например, выключен), как показано на этапе 298. Затем логика 300 принятия решения обнаруживает условие, при котором Sensor1 становится активным на следующем кадре для отправки данных изображения на FEProc. Если это условие не выполняется, то способ 296 возвращается к этапу 298. Если же это условие выполняется, то способ 296 переходит к осуществлению действия 294 (совместно этапов 284-292 на фиг.19), в результате чего, поля пункта назначения источников очищаются и реконфигурируются на этапе 294. Например, на этапе 294, поле NextVld стартового регистра, связанное с Sensor1, можно программировать для указания FEProc в качестве пункта назначения, а также StatsPipe1 и/или памяти (Sif1DMA), тогда как поле NextVld стартового регистра, связанное с Sensor0, можно программировать для очистки FEProc в качестве пункта назначения. В этом варианте осуществления, хотя кадры, захваченные Sensor0, не передаются на FEProc на следующем кадре, Sensor0 может оставаться активным и продолжать отправлять свои кадры изображения в StatsPipe0, как показано на этапе 302, тогда как Sensor1 захватывает и отправляет данные на FEProc для обработки на этапе 304. Таким образом, оба датчика, Sensor0 и Sensor1 могут продолжать работать в этом “двухдатчиковом” режиме, хотя на FEProc для обработки отправляются кадры изображения только от одного датчика. В целях этого примера, датчик, передающий кадры на FEProc для обработки, может именоваться “активным датчиком”, датчик, который не передает кадр на FEProc, но все еще отправляет данные на блоки статистической обработки может именоваться “полуактивным датчиком”, и датчик, который не получает никаких данных, может именоваться “неактивным датчиком”.
[00224] Одно преимущество вышеизложенного подхода состоит в том, что, ввиду продолжения получения статистики для полуактивного датчика (Sensor0), при следующем переходе полуактивного датчика в активное состояние и переходе текущего активного датчика (Sensor1) в полуактивное или неактивное состояние, полуактивный датчик может начать получать данные в одном кадре, поскольку параметры цветового баланса и экспозиции уже могут быть доступными вследствие продолжающегося сбора статистики изображения. Этот подход может именоваться “горячим переключением” датчиков изображения и позволяет избегать недостатков, связанных с “холодными стартами” датчиков изображения (например, запусков в отсутствие доступной статистической информации). Кроме того, для экономии мощности, поскольку каждый источник является асинхронным (как упомянуто выше), полуактивный датчик может действовать на сниженной тактовой частоте и/или частоте кадров в течение полуактивного периода.
[00225] Прежде чем продолжить более детализированное описание статистической обработки и операций обработки пикселей, изображенных в логике 80 предварительной обработки ISP, показанной на фиг.10, предполагается, что краткое введение, касающееся нескольких типов форматов адресации памяти, которые можно использовать совместно с раскрытыми здесь методами, а также определения различных областей кадра ISP, будет полезно для облегчения лучшего понимания настоящего предмета изобретения.
[00226] На фиг.21 и 22 проиллюстрированы, соответственно, линейный режим адресации и мозаичный режим адресации, которые можно применять к пиксельным данным, принятым от датчика(ов) 90 изображения и сохраненным в памяти (например, 108). В представленном варианте осуществления могут базироваться на размере блочного запроса главного интерфейса в 64 байта. Очевидно, что, другие варианты осуществления могут использовать другие размеры блочного запроса (например, 32 байта, 128 байт, и т.д.). В линейном режиме адресации, показанном на фиг.21, выборки изображения располагаются в памяти в последовательном порядке. Термин “линейный шаг” указывает расстояние в байтах между 2 соседними вертикальными пикселями. В настоящем примере, начальный базовый адрес плоскости выровнен с 64-байтовой границей, и линейный шаг может быть кратен 64 (на основании размера блочного запроса).
[00227] В примере формата мозаичного режима, как показано на фиг.22, выборки изображения сначала последовательно размещаются в виде “мозаичных элементов”, которые затем последовательно сохраняются в памяти. В проиллюстрированном варианте осуществления, каждый мозаичный элемент может быть 256 байт в ширину и 16 строк в высоту. Термин “мозаичный шаг” следует понимать в смысле расстояния в байтах между 2 соседними вертикальными мозаичными элементами. В настоящем примере, начальный базовый адрес плоскости в мозаичном режиме выровнен с 4096-байтовой границей (например, размером мозаичного элемента) и мозаичный шаг может быть кратен 4096.
[00228] На основании вышеизложенного, различные области кадра, которые можно задать в исходном кадре изображения, представлены на фиг.23. Формат для исходного кадра, поступающего на схему 32 обработки изображений, может использовать рассмотренные выше мозаичный или линейный режимы адресации, поскольку может использовать пиксельные форматы с 8, 10, 12, 14 или 16-битовой точностью. Исходный кадр 306 изображения, как показано на фиг.23, может включать в себя область 308 кадра датчика, первичную область 308 кадра и активную область 310. Кадр 308 датчика представляет собой, в общем случае, максимальный размер кадра, который датчик 90 изображения может предоставлять схеме 32 обработки изображений. Первичную область 310 кадра можно задать как область кадра 308 датчика, которая передается логике 80 предварительной обработки ISP. Активную область 312 можно задать как участок исходного кадра 306, обычно в области 310 первичного кадра, на котором обработка осуществляется для конкретной операции обработки изображений. В соответствии с вариантами осуществления настоящего изобретения, эта активная область 312 может быть одинаковой или разной для разных операций обработки изображений.
[00229] В соответствии с аспектами настоящего изобретения, логика 80 предварительной обработки ISP принимает только первичный кадр 310. Таким образом, в целях настоящего рассмотрения, глобальный размер кадра для логики 80 предварительной обработки ISP можно предположить равным первичному размеру кадра, который определяется шириной 314 и высотой 316. В некоторых вариантах осуществления, смещение от границ кадра 308 датчика до первичного кадра 310 может определяться и/или поддерживаться управляющей логикой 84. Например, управляющая логика 84 может включать в себя программно-аппаратное обеспечение, которое может определять область 310 первичного кадра на основании входных параметров, например, смещения 318 по оси x и смещения 320 по оси y, которые задаются относительно кадра 308 датчика. Кроме того, в ряде случаев, блок обработки в логике 80 предварительной обработки ISP или логике 82 конвейерной обработки ISP может иметь заданную активную область, благодаря чему, пиксели в первичном кадре, но вне активной области 312 не будут обрабатываться, т.е. останутся неизменными. Например, активную область 312 для конкретного блока обработки, имеющую ширину 322 и высоту 324, можно задать на основании смещения 326 по оси x и смещения 328 по оси y относительно первичного кадра 310. Кроме того, когда активная область конкретно не задана, один вариант осуществления схемы 32 обработки изображений может предусматривать, что активная область 312 совпадает с первичным кадром 310 (например, смещение 326 по оси x и смещение 328 по оси y равны 0). Таким образом, в целях операций обработки изображений, осуществляемых на данных изображения, граничные условия можно задавать относительно границ первичного кадра 310 или активной области 312. Дополнительно, в некоторых вариантах осуществления, окно (кадр) может задаваться посредством идентификации начальной и конечной ячейки памяти, а не информации начального положения и размера окна.
[00230] В некоторых вариантах осуществления, блок 80 предварительной обработки ISP (FEProc) также может поддерживать обработку кадра изображения посредством перекрывающихся вертикальных плосок, как показано на фиг.24. Например, обработка изображений в настоящем примере может происходить в три прохода, с помощью левой полоски (Stripe0), средней полоски (Stripe1) и правой полоски (Stripe2). Это может позволять блоку 80 предварительной обработки обработки ISP обрабатывать более широкое изображение во множественных проходах без необходимости увеличивать размер линейного буфера. Этот метод может именоваться “шаговой адресацией”.
[00231] При обработке кадра изображения с помощью множественных вертикальных полосок, входной кадр считывается с некоторым перекрытием для обеспечения достаточного перекрытия фильтровых контекстов, чтобы считывание изображения во множественных проходах мало отличалось или вообще не отличалось от считывания изображения за один проход. Например, в настоящем примере, Stripe0 шириной SrcWidth0 и Stripe1 шириной SrcWidth1 частично перекрываются, что указано областью 330 перекрытия. Аналогично, Stripe1 также перекрывается на правой стороне с Stripe2 шириной SrcWidth2, что указано областью 332 перекрытия. При этом полный шаг является суммой значений ширины каждой полоски (SrcWidth0, SrcWidth1, SrcWidth2) за минусом значений ширины (334, 336) областей 330 и 332 перекрытия. При записи кадра изображения в память (например, 108), задается активная область выхода, и записываются только данные внутри активной области выхода. Как показано на фиг.24, при записи в память, каждая полоска записывается на основании неперекрывающихся значений ширины ActiveDst0, ActiveDst1 и ActiveDst2.
[00232] Как рассмотрено выше, схема 32 обработки изображений может принимать данные изображения непосредственно от интерфейса датчика (например, 94) или может принимать данные изображения из памяти 108 (например, памяти DMA). Когда входящие данные поступают из памяти, схема 32 обработки изображений и логика 80 предварительной обработки ISP могут быть сконфигурированы для обеспечения байтового обмена, причем входные пиксельные данные из памяти могут подвергаться байтовому обмену до обработки. В одном варианте осуществления, обменный код можно использовать для указания обмениваются ли соседние двойные слова, слова, полуслова или байты входящих данных из памяти. Например, согласно фиг.25, байтовый обмен может осуществляться на 16 байтах (байтах 0-15) массива данных с использованием четырехбитового обменного кода.
[00233] Как показано, обменный код может включать в себя четыре бита, которые могут именоваться bit3, bit2, bit1 и bit0, слева направо. Когда все биты заданы равными 0, как показано ссылочной позицией 338, байтовый обмен не осуществляется. Когда bit3 задан равным 1, как показано ссылочной позицией 340, обмениваются двойные слова (например, 8 байт). Например, как показано на фиг.25, двойное слово, представленное байтами 0-7, обменивается с двойным словом, представленным байтами 8-15. Если bit2 задан равным 1, как показано ссылочной позицией 342, осуществляется обмен слова (например, 4 байтов). В иллюстрируемом примере, это может приводить к тому, что слово, представленное байтами 8-11, обменивается со словом, представленным байтами 12-15, и слово, представленное байтами 0-3, обменивается со словом, представленным байтами 4-7. Аналогично, если bit1 задан равным 1, как показано ссылочной позицией 344, то осуществляется обмен полуслова (например, 2 байтов) (например, байты 0-1 обмениваются с байтами 2-3 и т.д.), и если bit0 задан равным 1, как показано ссылочной позицией 346, то осуществляется байтовый обмен.
[00234] В настоящем варианте осуществления, обмен может осуществляться посредством оценивания битов 3, 2, 1 и 0 обменного кода по порядку. Например, если битам 3 и 2 присвоено значение 1, то сначала осуществляется обмен двойного слова (bit3), после чего осуществляется обмен слова (bit2). Таким образом, как показано на фиг.25, когда обменный код задан равным “1111”, в конечном итоге, входящие данные обмениваются, переходя от формата с прямым порядком байтов к формату с обратным порядком байтов.
[00235] Теперь рассмотрим более подробно различные форматы памяти для пиксельных данных изображения, которые могут поддерживаться схемой 32 обработки изображений для первичных данных изображения (например, байеровских RGB данных), цветовых данных RGB и YUV (YCC, данных яркости/цветности) в соответствии с некоторыми раскрытыми вариантами осуществления. Сначала рассмотрим форматы для пикселей первичного изображения (например, байеровских данных до демозаики) в конечном/исходном кадре, которые могут поддерживаться вариантами осуществления схемы 32 обработки изображений. Как упомянуто, некоторые варианты осуществления могут поддерживать обработку пикселей изображения с 8, 10, 12, 14 и 16-битовой точностью. В контексте первичных данных изображения, 8, 10, 12, 14 и 16-битовые первичные пиксельные форматы можно именовать здесь форматами RAW8, RAW10, RAW12, RAW14 и RAW16, соответственно. Примеры, демонстрирующие, как каждый из форматов RAW8, RAW10, RAW12, RAW14 и RAW16 может храниться в памяти, показаны графически распакованные формы на фиг.26. Для форматов первичного изображения, имеющих битовую точность более 8 битов (и не кратную 8 битам), пиксельные данные также могут храниться в упакованных форматах. Например, фиг.27 показывает пример того, как пиксели изображения RAW10 могут храниться в памяти. Аналогично, фиг.28 и фиг.29 иллюстрируют примеры, в которых пиксели изображения RAW12 и RAW14 могут храниться в памяти. Как будет дополнительно описано ниже, при записи/чтении данных изображения в память/из памяти, регистр управления, связанный с интерфейсом 94 датчика, может задавать конечный/исходный пиксельный формат, находится ли пиксель в упакованном или распакованном формате, формат адресации (например, линейный или мозаичный) и обменный код. Таким образом, каким образом пиксельные данные считываются и интерпретируются схемой 32 обработки ISP, может зависеть от пиксельного формата.
[00236] Схема 32 обработки сигнала изображения (ISP) также может поддерживать некоторые форматы цветных пикселей RGB в исходном/конечном кадре интерфейса датчика (например, 310). Например, кадры RGB-изображения могут приниматься от интерфейса датчика (например, в вариантах осуществления, где интерфейс датчика включает в себя встроенную логику демозаики) и сохраняться в памяти 108. В одном варианте осуществления, логика 80 предварительной обработки ISP (FEProc) может обходить пиксельную и статистическую обработку при приеме кадров RGB. Исключительно в порядке примера, схема 32 обработки изображений может поддерживать следующие пиксельные форматы RGB: RGB-565 и RGB-888. Пример того, как RGB-565 пиксельные данные могут храниться в памяти, показан на фиг.30. Как показано, формат RGB-565 может предусматривать одну плоскость перемеженных 5-битовой компоненты красного цвета, 6-битовой компоненты зеленого цвета и 5-битовой компоненты синего цвета в порядке RGB. Таким образом, всего 16 битов можно использовать для представления пикселя RGB-565 (например, {R0, G0, B0} или {R1, G1, B1}).
[00237] Формат RGB-888, как показано на фиг.31, может включать в себя одну плоскость перемеженных 8-битовых компонент красного, зеленого и синего цвета в порядке RGB. В одном варианте осуществления, схема 32 ISP также может поддерживать формат RGB-666, который, в общем случае, предусматривает одну плоскость перемеженных 6-битовых компонент красного, зеленого и синего цвета в порядке RGB. В таком варианте осуществления, при выборе формата RGB-666, пиксельные данные RGB-666 могут храниться в памяти с использованием формата RGB-888, показанного на фиг.31, но при этом каждый пиксель остается оправданным, и два младших бита (LSB) заданы равными нулю.
[00238] В некоторых вариантах осуществления, схема 32 ISP также может поддерживать пиксельные форматы RGB, которые позволяют пикселям иметь расширенный диапазон и точность значений с плавающей запятой. Например, в одном варианте осуществления, схема 32 ISP может поддерживать пиксельный формат RGB, показанный на фиг.32, в котором компонента красного (R0), зеленого (G0) и синего (B0) цвета выражается как 8-битовое значение, с совместно используемой 8-битовой экспонентой (E0). Таким образом, в таком варианте осуществления, фактические значения красного (R'), зеленого (G') и синего (B'), заданные через R0, G0, B0 и E0, можно выразить в виде:
R'=R0[7:0] * 2^E0[7:0]
G'=G0[7:0] * 2^E0[7:0]
B'=B0[7:0] * 2^E0[7:0].
Этот пиксельный формат может именоваться форматом RGBE, который также иногда называется пиксельным форматом Radiance изображения.
[00239] Фиг.33 и 34 иллюстрируют дополнительные пиксельные форматы RGB, которые могут поддерживаться схемой 32 ISP. В частности, фиг.33 изображает пиксельный формат, который может сохранять 9-битовые красную, зеленую и синюю компоненты с 5-битовой совместно используемой экспонентой. Например, восемь старших битов [8:1] каждого пикселя красного, зеленого и синего сохраняются в соответствующих байтах в памяти. Дополнительный байт используется для хранения 5-битовой экспоненты (например, E0[4:0]) и младшего бита [0] каждого пикселя красного, зеленого и синего. Таким образом, в таком варианте осуществления, фактические значения красного (R'), зеленого (G') и синего (B'), заданные через R0, G0, B0 и E0, можно выразить в виде:
R'=R0[8:0] * 2^E0[4:0]
G'=G0[8:0] * 2^E0[4:0]
B'=B0[8:0] * 2^E0[4:0].
Кроме того, пиксельный формат, представленный на фиг.33, также является гибким в том отношении, что он может быть совместимым с форматом RGB-888, показанным на фиг.31. Например, в некоторых вариантах осуществления, схема 32 обработки ISP может обрабатывать полные значения RGB с экспоненциальной компонентой или также может обрабатывать только верхнюю 8-битовую часть [7:1] каждой цветовой компоненты RGB аналогично формату RGB-888.
[00240] Фиг.34 изображает пиксельный формат, который может сохранять 10-битовые красную, зеленую и синюю компоненты с 2-битовой совместно используемой экспонентой. Например, 8 старших битов [9:2] каждого пикселя красного, зеленого и синего сохраняются в соответствующих байтах в памяти. Дополнительный байт используется для хранения 2-битовой экспоненты (например, E0[1:0]) и 2 младших битов [1:0] каждого пикселя красного, зеленого и синего. Таким образом, в таком варианте осуществления, фактические значения красного (R'), зеленого (G') и синего (B'), заданные через R0, G0, B0 и E0, можно выразить в виде:
R'=R0[9:0] * 2^E0[1:0]
G'=G0[9:0] * 2^E0[1:0]
B'=B0[9:0] * 2^E0[1:0].
Дополнительно, наподобие пиксельного формата, показанного на фиг.33, пиксельный формат, представленный на фиг.34, также является гибким в том отношении, что он может быть совместимым с форматом RGB-888, показанным на фиг.31. Например, в некоторых вариантах осуществления, схема 32 обработки ISP может обрабатывать полные значения RGB с экспоненциальной компонентой или также может обрабатывать только верхнюю 8-битовую часть (например, [9:2]) каждой цветовой компоненты RGB аналогично формату RGB-888.
[00241] Схема 32 ISP также может поддерживать некоторые форматы пикселей яркости и цветности YCbCr (YUV) в исходном/конечном кадре интерфейса датчика (например, 310). Например, кадры изображения YCbCr могут приниматься от интерфейса датчика (например, в вариантах осуществления, где интерфейс датчика включает в себя встроенную логику демозаики и логику, сконфигурированную для преобразования данных RGB-изображения в цветовое пространство YCC) и сохраняться в памяти 108. В одном варианте осуществления, логика 80 предварительной обработки ISP может обходить пиксельную и статистическую обработку при приеме кадров YCbCr. Исключительно в порядке примера, схема 32 обработки изображений может поддерживать следующие пиксельные форматы YCbCr: YCbCr-4:2:0 8, 2 плоскость; и YCbCr-4:2:2 8, 1 плоскость.
[00242] Пиксельный формат YCbCr-4:2:0, 2 плоскость может обеспечивать две отдельные плоскости изображения в памяти, одну для пикселей яркости (Y) и одну для пикселей цветности (Cb, Cr), где плоскость цветности перемежает пиксельные выборки Cb и Cr. Дополнительно, плоскость цветности может субдискретизироваться наполовину в горизонтальном (x) и вертикальном (y) направлениях. Пример, демонстрирующий, как данные YCbCr-4:2:0, 2 плоскость, могут храниться в памяти, показан на фиг.35, которая изображает плоскость 347 яркости для хранения выборок яркости (Y) и плоскость 348 цветности для хранения выборок цветности (Cb, Cr). Формат YCbCr-4:2:2 8, 1 плоскость, который показан на фиг.36, может включать в себя одну плоскость изображения перемежающихся пиксельных выборок яркости (Y) и цветности (Cb, Cr), причем выборки цветности субдискретизируются наполовину в горизонтальном (x) и вертикальном (y) направлениях. В некотором варианте осуществления, схема 32 ISP также может поддерживать 10-битовые пиксельные форматы YCbCr за счет сохранения пиксельных выборок в памяти с использованием вышеописанного 8-битового формата с округлением (например, два младших бита 10-битовых данных округляются). Кроме того, очевидно, что значения YC1C2 также могут сохраняться с использованием любого из пиксельных форматов RGB, рассмотренных выше на фиг.30-34, причем каждая из компонент Y, C1 и C2 сохраняется аналогично компонентам R, G, и B.
[00243] Возвращаясь к логике 80 предварительной обработки ISP, показанной на фиг.10, предусмотрены различные каналы чтения и записи в память 108. В одном варианте осуществления, каналы чтения/записи могут совместно использовать общую шину данных, которая может быть обеспечена с использованием Advanced Microcontroller Bus Architecture, например, шину Advanced Extensible Interface (AXI), или любой другой пригодный тип шины (AHB, ASB, APB, ATB и т.д.). В зависимости от информации кадра изображения (например, пиксельного формата, адресного формата, способа упаковки), которую, как рассмотрено выше, можно определить через регистр управления, блок генерации адресов, который можно реализовать как часть управляющей логики 84, может быть сконфигурирован для передачи информации адреса и размера пакета шинному интерфейсу. В порядке примера, вычисление адреса может зависеть от различных параметров, например, упакованы или распакованы пиксельные данные, формата пиксельных данных (например, форматов RAW8, RAW10, RAW12, RAW14, RAW16, RGB или YCbCr/YUV), используется ли мозаичный или линейный формат адресации, x- и y-смещений данных кадра изображения относительно матрицы памяти, а также ширины, высоты и шага кадра. Кроме того, параметры, которые можно использовать при вычислении пиксельных адресов, может включать в себя значения минимального пиксельного блока (MPU), маски смещения, значение байт на MPU (BPPU), и Log2 значения MPU (L2MPU). Таблица 4, которая представлена ниже, иллюстрирует вышеупомянутые параметры для упакованных и распакованных пиксельных форматов, в соответствии с одним вариантом осуществления.
(минимальный пиксельный блок)
(Log2 MPU)
(байты на MPU)
Очевидно, что, настройки MPU и BPPU позволяют схеме 32 ISP обращаться к количеству пикселей, которое необходимо считать для чтения одного пикселя, даже если не все считанные данные необходимы. Таким образом, настройки MPU и BPPU могут позволять схеме 32 ISP осуществлять чтение в форматах пиксельных данных, как выровненных (например, кратный 8 битам (1 байту) используется для хранения пиксельного значения), так и не выровненных с байтом памяти (например, пиксельные значения сохраняются с использованием числа битов, меньшего или большего, чем число, кратное 8 битам (1 байту), т.е., RAW10, RAW12, и т.д.).
[00244] На фиг.37 приведен пример, демонстрирующий положение кадра 350 изображения, хранящегося в памяти согласно линейной адресации, где каждый блок представляет 64 байта (что рассмотрено выше на фиг.21). В одном варианте осуществления, следующий псевдокод иллюстрирует процесс, который можно реализовать посредством управляющей логики, для идентификации начального блока и ширины блока сохраненного кадра в линейной адресации:
BlockWidth = LastBlockX - BlockOffsetX +1; причем
BlockOffsetX =(((OffsetX >> L2MPU) * BPPU )>>6)
LastBlockX =((((OffsetX + Width-1)>>L2MPU) * BPPU+
BPPU-1)>>6)
BlockStart = OffsetY * Stride + BlockOffsetX
где Stride представляет шаги кадра в байтах и кратен 64. Например, на фиг.37, SrcStride и DstStride равны 4, что означает 4 блока по 64 байта. Согласно вышеприведенной таблице 4, значения L2MPU и BPPU могут зависеть от формата пикселей в кадре 350. Как показано, зная BlockOffsetX, можно определить BlockStart. Затем можно определить BlockWidth с использованием BlockOffsetX и LastBlockX, которые можно определить с использованием значений L2MPU и BPPU, соответствующих пиксельному формату кадра 350.
[00245] Аналогичный пример в случае мозаичной адресации изображен на фиг.38, где исходный кадр изображения, обозначенный здесь ссылочной позицией 352, сохраняется в памяти и перекрывается с участком Tile0, Tile 1, Tile n и Tile n+1. В одном варианте осуществления, следующий псевдокод иллюстрирует процесс, который можно реализовать посредством управляющей логики, для идентификации начального блока и ширины блока сохраненного кадра в мозаичной адресации
BlockWidth = LastBlockX - BlockOffsetX +1; причем
BlockOffsetX =(((OffsetX >> L2MPU) * BPPU )>>6)
LastBlockX =((((OffsetX + Width -1)>>L2MPU) * BPPU+
BPPU-1)>>6)
BlockStart = ((OffsetY >>4) * (Stride >>6)+
(BlockOffsetX >>2) * 64+ OffsetY[3:0] * 4+
(BlockOffsetX[1:0])
В вышеописанном вычислении, выражение “(OffsetY>>4)*(Stride>>6)” может представлять количество блоков до строки мозаичных элементов, в которой кадр изображения располагается в памяти. Выражение “(BlockOffsetX>>2)*64” может представлять количество блоков, на которое сохраненный кадр изображения смещен в x-направлении. Выражение “OffsetY[3:0]*4” может представлять количество блоков до строки в мозаике, в которой располагается начальный адрес кадра изображения. Кроме того, выражение “BlockOffsetX[1:0]” может представлять количество блоков смещения по оси x в мозаичном элементе, соответствующем начальному адресу кадра изображения. Дополнительно, согласно варианту осуществления, представленному на фиг.38, количество блоков для каждого мозаичного элемента (BlocksPerTile) может составлять 64 блока, и количество байтов на блок (BytesPerBlock) может составлять 64 байта.
[00246] Как показано выше в таблице 4, для пикселей, хранящихся в упакованных форматах RAW10, RAW12 и RAW14, четыре пикселя образуют минимальный пиксельный блок (MPU) из пяти, шести или семи байтов (BPPU), соответственно. Например, в отношении примера пиксельного формата RAW10, показанного на фиг.27, MPU в четыре пикселя P0-P3 включает в себя 5 байтов, причем 8 старших битов каждого из пикселей P0-P3 сохраняются в четырех соответствующих байтах, 2 младших байта каждого из пикселей сохраняются в битах 0-7 32-битового адреса 01h. Аналогично, возвращаясь к фиг.28, MPU в четыре пикселя P0-P3, использующий формат RAW12, включает в себя 6 байтов, причем 4 младших бита пикселей P0 и P1 сохраняются в байте, соответствующем битам 16-23 адреса 00h, и 4 младших бита пикселей P2 и P3 сохраняются в байте, соответствующем битам 8-15 адреса 01h. На Фиг.29 показан MPU в четыре пикселя P0-P3, использующий формат RAW14, как включающий в себя 7 байтов, из которых 4 байта предназначены для хранения 8 старших битов каждого пикселя MPU, и 3 байта предназначены для хранения 6 младших битов каждого пикселя MPU.
[00247] Используя эти пиксельные форматы, можно в конце линии кадров иметь частичный MPU, где используется меньше четырех пикселей MPU (например, когда ширина линии по модулю четыре не равна нулю). При считывании частичного MPU, неиспользуемые пиксели можно игнорировать. Аналогично, при записи частичного MPU в конечный кадр, неиспользуемые пиксели можно записывать со значением нуль. Кроме того, в ряде случаев, последний MPU линии кадров может не выравниваться с границей 64-байтового блока. В одном варианте осуществления, байты после последнего MPU и вплоть до конца последнего 64-байтового блока не записываются.
[00248] В соответствии с вариантами осуществления настоящего раскрытия, схема 32 обработки ISP также может быть сконфигурирована для обеспечения обработки переполнения. Например, условие переполнения (также именуемого “перегрузкой”) может наступать в некоторых ситуациях, где логика 80 предварительной обработки ISP принимает противодавление от своих собственных внутренних блоков обработки, от последующих блоков обработки (например, конвейера 82 ISP и/или логики 120 окончательной обработки ISP), или из памяти пунктов назначения (например, куда следует записывать данные изображения). Условия переполнения могут наступать, когда пиксельные данные считываются (например, из интерфейса датчика или памяти) быстрее, чем один или более блоков обработки способны обрабатывать данные, или быстрее, чем данные можно записать в пункт назначения (например, память 108).
[00249] Как будет дополнительно описано ниже, чтение из памяти и запись в память могут создавать условия переполнения. Однако, поскольку входные данные сохраняется, в случае условия переполнения, схема 32 ISP может просто остановить чтение входных данных до исчезновения условия переполнения. Однако, когда данные изображения считывается непосредственно с датчика изображения, данные, получаемые в реальном времени, в общем случае, невозможно остановить, поскольку датчик изображения, в общем случае, получает данные изображения в реальном времени. Например, датчик изображения (например, 90) может действовать в соответствии с сигналом тактирования на основании своего собственного внутреннего тактового генератора и может быть сконфигурирован для вывода кадров изображения с некоторой частотой кадров, например, 15 или 30 кадров в секунду (кадр/с). Сигналы датчика, поступающие на схему 32 ISP и в память 108, могут, таким образом, включать в себя входные очереди, которые могут буферизовать входящие данные изображения до их обработки (схемой 32 ISP) или их записи в память (например, 108). Соответственно, если данные изображения принимаются на входной очереди быстрее, чем их можно считывать из очереди и обрабатывать или сохранять (например, записывать память), может наступать условие переполнения. Таким образом, если буферы/очереди полны, дополнительные входящие пиксели не могут буферизоваться и, в зависимости от реализуемого метода обработки переполнения, могут отбрасываться.
[00250] На фиг.39 показана блок-схема схемы 32 обработки ISP, где упор сделан на признаках управляющей логики 84, которая может обеспечивать обработку переполнения в соответствии с одним вариантом осуществления. Как показано, данные изображения, связанный с Sensor0 90a и Sensor1 90b, могут считываться из памяти 108 (посредством интерфейсов 174 и 176, соответственно) в логику 80 предварительной обработки ISP (FEProc), или могут передаваться логике 80 предварительной обработки ISP непосредственно из соответствующих интерфейсов датчиков. В последнем случае, входные пиксельные данные от датчиков 90a и 90b изображения могут поступать во входные очереди 400 и 402, соответственно, до отправки на логику 80 предварительной обработки ISP.
[00251] Когда наступает условие переполнения, блок(и) обработки (например, блоки 80, 82 или 120) или память (например, 108), в которых произошло переполнение, могут выдавать сигнал (что указано сигналами 405, 407 и 408) для задания бита в регистре 404 запроса прерывания (IRQ). В настоящем варианте осуществления, регистр 404 IRQ можно реализовать как часть управляющей логики 84. Дополнительно, отдельные регистры 404 IRQ можно реализовать для данных изображения Sensor0 и данных изображения Sensor1. На основании значения, сохраненного в регистре 404 IRQ, управляющая логика 84 может определить, какие логические блоки в блоках 80, 82, 120 обработки ISP или памяти 108 сгенерировали условие переполнения. Логические блоки могут именоваться “блоками назначения”, поскольку они могут образовывать пункты назначения, куда направляются пиксельные данные. На основании условий переполнения, управляющая логика 84 также может (например, посредством программно-аппаратной/программной обработки) решать, какие кадры отбрасывать (например, либо не записывать в память, либо не выводить на дисплей для просмотра).
[00252] После обнаружения условия переполнения, конкретный способ осуществления обработки переполнения может зависеть от того, считывает ли логика предварительной обработки ISP пиксельные данные из памяти 108 или из входных очередей датчиков изображения (например, буферов) 400, 402, которые могут быть очередями «первым вошел, первым вышел» (FIFO) в одном варианте осуществления. В одном варианте осуществления, когда входные пиксельные данные считывается из памяти 108, например, через соответствующий интерфейс DMA (например, 174 или 176), логика предварительной обработки ISP будет останавливать чтение пиксельных данных, если она принимает противодавление в результате обнаружения условия переполнения (например, через управляющую логику 84, использующую регистр 404 IRQ) от любых расположенных после нее блоков назначения, которые могут включать в себя конвейер 82 ISP, логику 120 окончательной обработки ISP или память 108 в случаях, когда выходной сигнал логики 80 предварительной обработки ISP записывается в память 108. В этом сценарии, управляющая логика 84 может предотвращать переполнение, останавливая считывание пиксельных данных из памяти 108 до исчезновения условия переполнения. Например, об исчезновении переполнения можно сигнализировать, когда нижерасположенный блок, ставший причиной условия переполнения, задает соответствующий бит в регистре 404 IRQ, указывающий, что переполнения больше не существует. Вариант осуществления этого процесса, в общем случае, проиллюстрирован этапами 412-420 способа 410, показанного на фиг.40.
[00253] Хотя условия переполнения, в общем случае, можно отслеживать на входных очередях датчиков, следует понимать, что многие дополнительные очереди могут присутствовать между блоками обработки подсистемы 32 ISP (включая, например, внутренние блоки логики 80 предварительной обработки ISP, конвейер 82 ISP, а также логику 120 окончательной обработки ISP). Дополнительно, различные внутренние блоки подсистемы 32 ISP также могут включать в себя линейные буферы, которые также могут функционировать как очереди. Таким образом, все очереди и линейные буферы подсистемы 32 ISP могут обеспечивать буферизацию. Соответственно, когда последний блок обработки в конкретной цепи блоков обработки полон (например, его линейные буферы и любые промежуточное очереди полны), противодавление можно применять к предыдущему (например, вышестоящему) блоку обработки и т.д., из-за чего, противодавление распространяется вверх по цепи логики, пока не достигнет интерфейса датчика, где можно отслеживать условия переполнения. Таким образом, когда переполнение происходит на интерфейсе датчика, это может означать, что все нижерасположенные очереди и линейные буферы полны.
[00254] Как показано на фиг.40, способ 410 начинается на блоке 412, где пиксельные данные для текущего из считывается из памяти на блок 80 предварительной обработки ISP. Затем логика 414 принятия решения определяет, присутствует ли условие переполнения. Как рассмотрено выше, это можно оценивать посредством определения состояния битов в регистре(ах) 404 IRQ. Если условие переполнения не обнаружено, то способ 410 возвращается к этапу 412 и продолжает считывать пиксели из текущего кадра. Если логика 414 принятия решения обнаруживает условие переполнения, способ 410 прекращает считывать пиксели текущего кадра из памяти, как показано на блоке 416. Затем, на логике 418 принятия решения, производится определение, исчезло ли условие переполнения. Если условие переполнения осталось, способ 410 ожидает на логике 418 принятия решения, пока условие переполнения не исчезнет. Если логика 418 принятия решения указывает, что условие переполнения исчезло, то способ 410 переходит к блоку 420 и возобновляет считывание пиксельных данных для текущего кадра из памяти.
[00255] Когда условие переполнения наступает при считывании входных пиксельных данных из интерфейса(ов) датчика, прерывания могут указывать, какие нижерасположенные блоки (например, блоки обработки или память пунктов назначения) сгенерировали переполнение. В одном варианте осуществления, обработка переполнения может обеспечиваться на основе двух сценариев. В первом сценарии, условие переполнения наступает в течение кадра изображения, но исчезает до начала следующего кадра изображения. В этом случае, входные пиксели от датчика изображения отбрасываются до исчезновения условия переполнения, и во входной очереди, соответствующей датчику изображения, освобождается место. Управляющая логика 84 может обеспечивать счетчик 406, который может отслеживать количество отброшенных пикселей и/или отброшенных кадров. Когда условие переполнения исчезает, отброшенные пиксели можно заменить неопределенными пиксельными значениями (например, всеми единицами (например, 11111111111111 для 14-битового пиксельного значения), всеми нулями, или значением, запрограммированным в регистр данных, которое задает, что такое неопределенные пиксельные значения), и последующая обработка может возобновиться. В дополнительном варианте осуществления, отброшенные пиксели можно заменить предыдущим, не переполненным, пикселем (например, последним “хорошим” пикселем, считанным во входной буфер). Это гарантирует, что верное количество пикселей (например, количество пикселей, соответствующее предполагаемому количеству пикселей в завершенном кадре) направляется на логику 80 предварительной обработки ISP, таким образом, позволяя логике 80 предварительной обработки ISP выводить верное количество пикселей для кадра, который считывался из входной очереди датчика при наличии переполнения.
[00256] Хотя, согласно этому первому сценарию, логика предварительной обработки ISP может выводить верное количество пикселей, в зависимости от количества пикселей, отброшенных и замененных во время действия условия переполнения, программная (например, программно-аппаратная) обработка, которую можно реализовать как часть управляющей логики 84, может по своему выбору отбрасывать (например, исключать) кадр, не направляя его на дисплей и/или не записывая его в память. Такое определение может основываться, например, на значении счетчика 406 отброшенных пикселей по сравнению с допустимым пороговым значением отброшенных пикселей. Например, если условие переполнения наступает лишь на короткое время в течение кадра, в результате чего, отбрасывается лишь сравнительно небольшое количество пикселей (например, и заменяется неопределенными или пустыми значениями; например, 10-20 пикселей или менее), то управляющая логика 84 может выбрать отображение и/или сохранение этого изображения, несмотря на малое количество отброшенных пикселей, хотя присутствие пикселей замены может проявляться в течение очень короткого времени как слабовыраженный артефакт в результирующем изображении. Однако, вследствие малого количества пикселей замены, такой артефакт может, в общем случае, остаться незамеченным или едва восприниматься пользователем. Таким образом, присутствие любых подобных артефактов вследствие неопределенных пикселей из краткого условия переполнения не может значительно снижать эстетическое качество изображения (например, любое подобное ухудшение минимально или пренебрежимо мало для человеческого глаза).
[00257] Во втором сценарии, условие переполнения может продолжать присутствовать в начале следующего кадра изображения. В этом случае, пиксели текущего кадра также отбрасываются и подсчитываются, как и в описанном выше первом сценарии. Однако, если условие переполнения все еще присутствует после обнаружения переднего фронта VSYNC (например, указывающего начало следующего кадра), логика 80 предварительной обработки ISP может быть сконфигурирована откладывать следующий кадр и, таким образом, отбрасывать весь следующий кадр. В этом сценарии, следующий кадр и последующие кадры будут по-прежнему отбрасываться, пока переполнение не исчезнет. После исчезновения переполнения, ранее текущий кадр (например, кадр, считывавшийся, когда переполнение было впервые обнаружено) может заменить свои отброшенные пиксели неопределенными пиксельными значениям, таким образом, позволяя логике 80 предварительной обработки ISP выводить верное количество пикселей для этого кадра. После этого, последующая обработка может возобновиться. Что касается отброшенных кадров, управляющая логика 84 может дополнительно включать в себя счетчик, который отсчитывает количество отброшенных кадров. Эти данные можно использовать для регулировки временных режимов для синхронизации аудио-видео. Например, для видео, захватываемого с частотой 30 кадр/с, каждый кадр имеет длительность приблизительно 33 миллисекунды. Таким образом, если вследствие переполнения отбрасывается три кадра, то управляющая логика 84 может быть сконфигурирована для регулировки параметров синхронизации аудио-видео для учета длительности приблизительно в 99 миллисекунд (33 миллисекунд ×3 кадра), приходящейся на отброшенные кадры. Например, для компенсации времени, приходящегося на отброшенные кадры, управляющая логика 84 может управлять выводом изображения, повторяя один или более предыдущих кадров.
[00258] Вариант осуществления процесса 430, демонстрирующий рассмотренные выше сценарии, которые могут выполняться, когда входные пиксельные данные считываются из интерфейсов датчиков, представлен на фиг.41. Как показано, способ 430 начинается на блоке 432, на котором пиксельные данные для текущего кадра считываются с датчика на блок 80 предварительной обработки ISP. Затем логика 434 принятия решения определяет, существует ли условие переполнения. В отсутствие переполнения, способ 430 продолжает считывать пиксели текущего кадра (например, возвращается к блоку 432). Если логика 434 принятия решения определяет наличие условия переполнения, то способ 430 переходит к блоку 436, где отбрасывается следующий входящий пиксель текущего кадра. Затем логика 438 принятия решения определяет, закончился ли текущий кадр, и начался ли следующий кадр. Например, в одном варианте осуществления, это может включать в себя обнаружение переднего фронта в сигнале VSYNC. Если датчик все еще отправляет текущий кадр, способ 430 переходит к логике 440 принятия решения, которая определяет, сохраняется ли условие переполнения, первоначально обнаруженное на логике 434. Если условие переполнения не исчезло, то способ 430 переходит к блоку 442, на котором счетчик отброшенных пикселей увеличивается (например, для учета входящего пикселя, отброшенного на блоке 436). Затем способ возвращается к блоку 436 и продолжается.
[00259] Если на логике 438 принятия решения, обнаружено, что текущий кадр закончился, и что датчик отправляет следующий кадр (например, обнаружен рост VSYNC), то способ 430 переходит к блоку 450, и все пиксели следующего кадра, и последующие кадры отбрасываются, пока остается в силе условие переполнения (например, показанное логикой 452 принятия решения). Как рассмотрено выше, отдельный счетчик может отсчитывать количество отброшенных кадров, которое можно использовать для регулировки параметров синхронизации аудио-видео. Если логика 452 принятия решения указывает, что условие переполнения исчезло, то отброшенные пиксели из начального кадра, в котором первоначально наступило условие переполнения, заменяются некоторым количеством неопределенных пиксельных значений, соответствующим количеству отброшенных пикселей из этого начального кадра, как указано счетчиком отброшенных пикселей. Как упомянуто выше, неопределенные пиксельные значения могут полностью состоять из единиц или нулей, могут быть значением замены, запрограммированным в регистр данных, или может принимать значение предыдущего пикселя, который был считан до наступления условия переполнения (например, последнего пикселя, считанного до обнаружения условия переполнения). Соответственно, это позволяет обрабатывать начальный кадр с верным количеством пикселей и, на блоке 446, может продолжаться последующая обработка изображений, которая может включать в себя запись начального кадра в память. Также согласно вышеприведенному рассмотрению, в зависимости от количества пикселей, отброшенных в кадре, управляющая логика 84 может по своему выбору исключать или включать кадр при выводе видеоданных (например, если количество отброшенных пикселей выше или ниже допустимого порога отброшенных пикселей). Очевидно, что обработка переполнения может осуществляться отдельно для каждой входной очереди 400 и 402 подсистемы 32 ISP.
[00260] Другой вариант осуществления обработки переполнения, который можно реализовать в соответствии с настоящим раскрытием, показан на фиг.42 посредством блок-схемы операций, изображающей способ 460. В данном случае, обработка переполнения для условия переполнения, которое наступает в ходе текущего кадра, но исчезает до конца текущего кадра, обрабатывается таким же образом, как показано на фиг.41, и поэтому, соответствующие этапы пронумерованы аналогичными ссылочными позициями 432-446. Различие между способом 460, показанным на фиг.42, и способом 430, показанным на фиг.41, относится к обработке переполнения, когда условие переполнения продолжается в следующем кадре. Например, в отношении логики 438 принятия решения, когда условие переполнения продолжается в следующем кадре, вместо того, чтобы отбрасывать следующий кадр, как в способе 430 на фиг.41, способ 460 реализует блок 462, в котором счетчик отброшенных пикселей очищается, входная очередь датчика очищается, и управляющая логика 84 получает команду отбросить частичный текущий кадр. Благодаря очистке входной очереди датчика и счетчика отброшенных пикселей, способ 460 приготавливается к получению следующего кадра (который теперь становится текущим кадром), при этом способ возвращается к блоку 432. Очевидно, что пиксели для этого текущего кадра могут считываться во входную очередь датчика. Если условие переполнения исчезает до заполнения входной очереди, то последующая обработка возобновляется. Однако, если условие переполнения сохраняется, способ 460 будет продолжаться от блока 436 (например, начнет отбрасывать пиксели либо пока не исчезнет переполнение, либо пока не начнется следующий кадр).
[00261] Как упомянуто выше, электронное устройство 10 также обеспечивать захват аудиоданных (например, посредством устройство захвата аудио, предусмотренного в качестве одной из структур 14 ввода) одновременно с данными изображения (например, посредством устройства 30 формирования изображения, имеющего датчики 90 изображения). Например, как схематически показано на фиг.43, аудиоданные 470 и данные 472 изображения могут представлять видео- и аудиоданные, одновременно захватываемые электронным устройством. Аудиоданные 470 могут включать в себя выборки 474 аудиосигнала, захватываемые в течение времени (t), и, аналогично, данные 472 изображения могут представлять последовательность кадров изображения, захватываемых в течение времени t. Каждая выборка данных 472 изображения, обозначенная здесь ссылочной позицией 476, может представлять кадр неподвижного изображения. Таким образом, при просмотре кадров неподвижного изображения в хронологическом порядке в течение времени (например, с конкретным числом кадров в секунду, например 15-30 кадров в секунду), наблюдатель будет воспринимать их как движущееся изображение, таким образом, обеспечивая видеоданные. При получении и представлении аудиоданных 470 как цифровых данных, они могут храниться как двоичные значения, представляющие выборки (например, 474) амплитуды аудиосигнала с равными интервалами времени. Кроме того, хотя на фиг.43 показано, что они имеют дискретные сегменты 474, очевидно, что аудиоданные, в практической реализации, могут иметь достаточно высокую частоту дискретизации, чтобы человеческое ухо воспринимало аудиоданные 470 как непрерывный звук.
[00262] При воспроизведении видеоданных 472, соответствующие аудиоданные 470 также могут воспроизводиться, что позволяет наблюдателю не только просматривать видеоданные снимаемого события, но также слышать звук, соответствующий, снимаемому событию. В идеальном случае, видеоданные 472 и аудиоданные 470 воспроизводятся синхронно. Например, если выборка аудиосигнала, обозначенная здесь как 474a, первоначально имела место в момент времени tA, то, при идеальных условиях воспроизведение, кадр изображения, первоначально захваченный в момент времени tA, выводится одновременно с выборкой 474a аудиосигнала. Однако, если синхронизация не достигнута, наблюдатель/слушатель может заметить задержку или сдвиг по времени между аудио- и видеоданными. Например, предположим, что выборка 474a аудиосигнала выводится с кадром 476c изображения, первоначально захваченным в момент времени t0, который наступает раньше, чем время tA. В этом случае, аудиоданные 470 “опережают” видеоданные 472, и пользователь может ощущать задержку между прослушиванием выборки аудиосигнала с момента времени tA и просмотром предполагаемой соответствующей выборки видеосигнала (кадра 476a изображения с момента времени tA), причем задержка равна разности времен tA и t0). Аналогично, предположим, что выборка 474a аудиосигнала выводится с кадром изображения 476b с момента времени tB, который наступает, позже, чем время tA. В последнем случае, аудиоданные 470 “отстают” от видеоданных 472, и пользователь может ощущать задержку между просмотром выборки (476a) видеосигнала в момент времени tA и прослушиванием соответствующей выборки аудиосигнала с момента времени tA, причем задержка равна разности времен tA и tB). Эти типы задержек иногда называют нарушением синхронизации изображения и речевых сигналов. Очевидно, что, последние два сценария могут негативно влиять на ощущения пользователя. Для достижения синхронизации аудио-видео, система, в общем случае, сконфигурирована так, чтобы любая компенсация нарушений синхронизации исходила из приоритета аудио над видео, например, при наличии нарушения синхронизации, кадры изображения можно отбрасывать или повторять, не внося изменений в аудиосигнал.
[00263] В некоторых традиционных системах, синхронизация аудио- и видеоданных осуществляется с использованием начала прерываний кадра (например, на основании сигнала VSYNC). Когда происходит такое прерывание, указывающее начало нового кадра, процессор может выполнять служебную процедуру прерывания для обслуживания прерывания (например, очистки битов), и с этим кадром связывается метка времени, соответствующая моменту, когда прерывание обслуживается процессором. Очевидно, что, в общем случае, существует некоторая задержка между запросом прерывания и временем, когда прерывание обслуживается процессором. Таким образом, метка времени, которая связана с конкретным кадром изображения, может отражать эту задержку и, таким образом, не может фактически представлять точное время, когда кадр фактически начинается. Дополнительно, эта задержка может изменяться в зависимости от нагрузки и пропускной способности процессор, что может дополнительно усложнять проблемы синхронизации аудио-видео.
[00264] Как рассмотрено выше, логика 80 предварительной обработки ISP может действовать в своей собственной области тактового сигнала и обеспечивать асинхронный интерфейс к интерфейсу 94 датчика для поддержки датчиков разных размеров, имеющих разные требования к тактированию. Для обеспечения синхронизации аудио- и видеоданных, схема 32 обработки ISP может использовать тактовый сигнал логики предварительной обработки ISP для обеспечения счетчика, который можно использовать для генерации меток времени, которые можно связывать с захваченными кадрам изображения. Например, согласно фиг.44, четыре регистра, включающие в себя регистр 490 конфигурации таймера, регистр 492 временного кода, регистр 494 временного кода Sensor0 и регистр 496 временного кода Sensor1, которые все можно использовать для обеспечения функций меток времени в одном варианте осуществления, по меньшей мере, частично, на основании тактового сигнала для логики 80 предварительной обработки ISP. В одном варианте осуществления, регистр 490, 492, 494 и 496 может включать в себя 32-битовые регистры.
[00265] Регистр 490 конфигурации времени может быть сконфигурирован для обеспечения значения, NClk, который можно использовать для обеспечения счетчика для генерации кодов метки времени. В одном варианте осуществления, NClk может представлять собой 4-битовое значение в диапазоне 0-15. На основании NClk, таймер или счетчик, который указывает текущий временной код, может увеличиваться на единицу каждые 2^NClk периодов тактового сигнала (на основании области тактового сигнала логики предварительной обработки ISP). Текущий временной код может храниться в регистре 492 временного кода, таким образом, обеспечивая временной код с 32-битовым разрешением. Регистр 492 временного кода также может очищаться управляющей логикой 84.
[00266] Согласно фиг.10, для каждого входа Sif0 и Sif1 интерфейса датчика, выборка из регистра 492 временного кода может осуществляться при обнаружении переднего фронта в сигнале вертикальной синхронизации (VSYNC) (или при обнаружении заднего фронта в зависимости от того, как сконфигурирован VSYNC), таким образом, указывающего начало нового кадра (например, в конце интервала вертикального гашения). Временной код, соответствующий переднему фронту VSYNC, можно сохранять в регистре 494 или 496 временного кода в зависимости от датчика (Sensor0 или Sensor1), от которого поступает кадр изображения, таким образом, обеспечивая метку времени, указывающую время начала захвата текущего кадра. В некоторых вариантах осуществления, сигнал VSYNC от датчика может иметь запрограммированную или программируемую задержку. Например, если первый пиксель кадра имеет задержку в n периодов тактового сигнала, управляющая логика 84 может быть сконфигурирована для компенсации этой задержки, например, за счет обеспечения смещения в оборудовании или использования программной/программно-аппаратной компенсации. Таким образом, метка времени может генерироваться из переднего фронта VSYNC с добавленной запрограммированной задержкой. В другом варианте осуществления, метку времени, соответствующую началу кадра, можно определить, используя задний фронт сигнала VSYNC с программируемой задержкой.
[00267] По мере обработки текущего кадра, управляющая логика 84 считывает метку времени из регистра (494 или 496) временного кода датчика, и метка времени может связываться с кадром видеоизображения в качестве параметра в метаданных, связанных с кадром изображения. Это показано более наглядно на фиг.45, где схематически изображен кадр 476 изображения и связанные с ним метаданные 498, которые включают в себя метку 500 времени, считанную из соответствующего регистра временного кода (например, регистра 494 для Sensor0 или регистра 496 для Sensor1). В одном варианте осуществления, управляющая логика 84 может затем считывать метку времени из регистра временного кода, по команде начала прерывания кадра. Таким образом, с каждым кадром изображения, захваченным схемой 32 обработки ISP, может быть связана метка времени на основании сигнала VSYNC. Схема или программно-аппаратное обеспечение управления, которую/ое можно реализовать как часть управляющей логики 84 ISP или часть отдельного блока управления электронного устройства 10, может использовать метки времени кадров изображения для выравнивания или синхронизации соответствующего набора аудиоданных и, таким образом, достижения синхронизации аудио-видео.
[00268] В некоторых вариантах осуществления, устройство 10 может включать в себя процессор аудиосигнала, сконфигурированный для обработки аудиоданных (например, аудиоданных 470). Например, процессор аудиосигнала может представлять собой самостоятельный блок обработки (например, часть процессора(ов) 16), или может быть объединен с главным процессором, или может быть частью внутрикристального устройства обработки. В таких вариантах осуществления, процессор аудиосигнала и схема 32 обработки изображений, которая может работать под управлением процессора (например, части управляющей логики 84), отдельная от процессора аудиосигнала, могут действовать на основании независимых тактовых сигналов. Например, тактовые сигналы можно генерировать с использованием отдельных систем фазовой автоподстройки частоты (ФАПЧ). Таким образом, в целях синхронизации аудио-видео, может понадобиться, чтобы устройство 10 имело возможность коррелировать метку времени изображения с меткой времени аудиосигнала. В одном варианте осуществления, эта корреляция может осуществляться с использованием главного процессора устройства 10 (например, ЦП). Например, главный процессор может синхронизовать свой собственный тактовый сигнал с тактовым сигналом процессора аудиосигнала и схемы 32 ISP для определения разности между соответствующими тактовыми сигналами процессора аудиосигнала и схемы 32 ISP. Эту разность, узнав ее, можно использовать для коррелирования меток времени аудиосигнала аудиоданных (например, 470) с метками времени кадров изображения данных изображения (например, 472).
[00269] В одном варианте осуществления, управляющая логика 84 также может быть сконфигурирована для обработки условий циклического перехода, например, при достижении максимального значения 32-битового временного кода, причем следующее приращение потребует дополнительного бита (например, 33-го бита) для обеспечения точного значения. В порядке упрощенного примера, этот тип циклического перехода может происходить, когда на четырехзначном счетчике увеличение значения 9999 приводит к отображению 0000 вместо 10000 вследствие ограничения четырьмя цифрами. Хотя управляющая логика 84 может иметь возможность обнулять регистр 492 временного кода, это может быть нежелательно, когда условие циклического перехода наступает до окончания захвата сеанса видео. Таким образом, в таких случаях, управляющая логика 84 может включать в себя логику, которую можно реализовать программными средствами в одном варианте осуществления, сконфигурированную для обработки условия циклического перехода посредством генерации меток времени повышенной точности (например, 64-битовых) на основании 32-битовых значений регистра. Программное обеспечение может генерировать метки времени повышенной точности, которые могут записываться в метаданные кадра изображения, пока регистр 492 временного кода не обнулится. В одном варианте осуществления, программное обеспечение может быть сконфигурировано для обнаружения циклического перехода и для добавления разницы по времени, вызванной условием циклического перехода к счетчику повышенного разрешения. Например, в одном варианте осуществления, при обнаружении условия циклического перехода для 32-битового счетчика, программное обеспечение может суммировать максимальное значение 32-битового счетчика (для учета циклического перехода) с текущим значением времени, указанным 32-битовым счетчиком, и сохранять результат в счетчике повышенного разрешения (например, содержащем более 32 битов). В подобных случаях, результат в счетчике высокого разрешения можно записывать в информацию метаданных изображения, пока 32-битовый счетчик не обнулится.
[00270] Фиг.46 изображает способ 510, который, в общем случае, описывает рассмотренные выше методы синхронизации аудио-видео. Как показано, способ 510 начинается с этапа 512, на котором пиксельные данные принимается от датчика изображения (например, Sensor0 или Sensor1). Затем, на логике 514 принятия решения, производится определение, указывает ли сигнал VSYNC начало нового кадра. Если новый кадр не обнаружен, способ 510 возвращается к этапу 512 и продолжает принимать пиксельные данные из текущего кадра изображения. Если новый кадр обнаружен на логике 514 принятия решения, то способ 510 переходит к этапу 516, на котором производится выборка из регистра временного кода (например, регистра 492) для получения значения метки времени, соответствующего переднему (или заднему) фронту сигнала VSYNC, обнаруженному на этапе 514. Затем, на этапе 518, значение метки времени сохраняется в регистре временного кода (например, регистре 494 или 496), соответствующем датчику изображения, обеспечивающему входные пиксельные данные. Затем, на этапе 520, метка времени связывается с метаданными нового кадра изображения и, после этого, информацию метки времени в метаданных кадра изображения можно использовать для синхронизации аудио-видео. Например, электронное устройство 10 может быть сконфигурировано для обеспечения синхронизации аудио-видео посредством выравнивания видеоданных (с использованием меток времени каждого отдельного кадра) с соответствующими аудиоданными с целью существенной минимизации любой задержки между соответствующими выходными сигналами аудио и видео. Например, как рассмотрено выше, главный процессор устройства 10 можно использовать для определения, как коррелировать метки времени аудиосигнала с метками времени видеосигнала. В одном варианте осуществления, если аудиоданные опережают видеоданные, кадры изображения можно отбрасывать, чтобы правильный кадр изображения мог “догнать” поток аудиоданных, и, если аудиоданные отстают от видеоданных, кадры изображения можно повторять, чтобы аудиоданные могли “догнать” видеопоток.
[00271] Согласно фиг.47-50, логика обработки или подсистема 32 ISP также может быть сконфигурирована для обеспечения синхронизации вспышки (также именуемой “стробом”). Например, при использовании модуля вспышки, может временно обеспечиваться искусственное освещение для помощи в освещении сцены изображения. В порядке примера, использование вспышки может быть полезно при захвате сцены изображения в условиях низкой освещенности. Вспышку или строб можно обеспечить с использованием любого пригодного источника света, например, светодиодного устройства вспышки или ксенонового устройства вспышки и т.д.
[00272] В настоящем варианте осуществления, подсистема 32 ISP может включать в себя контроллер вспышки, сконфигурированный для управления тактированием и/или интервалом, в течение которого модуль вспышки активен. Очевидно, что, в общем случае, желательно управлять тактированием и длительностью активности модуля вспышки таким образом, чтобы интервал вспышки начинался до захвата первого пикселя целевого кадра (например, кадра изображения, подлежащего захвату) и заканчивался после захвата последнего пикселя целевого кадра, но до начала следующего кадра изображения. Это позволяет гарантировать, что все пиксели в целевом кадре экспонируются в аналогичных условиях освещения при захвате сцены изображения.
[00273] На фиг.47 проиллюстрирована блок-схема, демонстрирующая контроллер 550 вспышки, реализованный как часть подсистемы 32 ISP и сконфигурированный для управления модулем 552 вспышки в соответствии с вариантом осуществления настоящего раскрытия. В некоторых вариантах осуществления, модуль 552 вспышки может включать в себя более чем одно стробоскопическое устройство. Например, в некоторых вариантах осуществления, контроллер 550 вспышки может быть сконфигурирован для обеспечения предварительной вспышки (например, для подавления эффекта красных глаз), после которой следует основная вспышка. События предварительной вспышки и основной вспышки могут быть последовательными и могут обеспечиваться с использованием одного и того же или разных стробоскопических устройств.
[00274] В проиллюстрированном варианте осуществления, тактированием модуля 552 вспышки можно управлять на основании информации тактирования, поступающей от датчиков 90a и 90b изображения. Например, тактированием датчика изображения можно управлять согласно методу свертывающегося затвора, что позволяет регулировать время интегрирования с использованием щелевого отверстия, которое сканирует пиксельную матрицу датчика изображения (например, 90a и 90b). Используя информацию тактирования датчика (обозначенную здесь ссылочной позицией 556), которая может предоставляться подсистеме 32 ISP через интерфейсы 94a и 94b датчиков (каждый из которых может включать в себя интерфейс 548 со стороны датчика и интерфейс 549 с входной стороны), управляющая логика 84 может передавать на контроллер 550 вспышки надлежащие параметры 554 управления, которые затем могут использоваться контроллером 550 вспышки для активации модуля 552 вспышки. Как рассмотрено выше, используя информацию 556 тактирования датчика, контроллер 556 вспышки может гарантировать, что модуль вспышки активируется до захвата первого пикселя целевого кадра и остается активированным на протяжении длительности целевого кадра, и при этом модуль вспышки деактивируется после захвата последнего пикселя целевого кадра и до начала следующего кадра (например, роста VSYNC). Этот процесс можно именовать “синхронизацией вспышки” или “синхронизацией строба”, методы которой дополнительно рассмотрены ниже.
[00275] Дополнительно, как согласно варианту осуществления, показанному на фиг.47, управляющая логика 84 также может использовать статистические данные от логики 80 предварительной обработки ISP, обозначенные здесь ссылочной позицией 558, для определения, подходят ли текущие условия освещения в сцене изображения, соответствующей целевому кадру, для использования модуля вспышки. Например, подсистема 32 ISP может использовать автоматическую установку экспозиции в попытке поддерживать целевой уровень экспозиции (например, уровень света) посредством регулировки времени интегрирования и/или коэффициентов усиления датчиков. Однако, очевидно, что время интегрирования не может превышать время кадра. Например, для видеоданных, получаемых со скоростью 30 кадр/с, каждый кадр имеет длительность приблизительно 33 миллисекунды. Таким образом, если целевого уровня экспозиции не удается достичь с использованием максимального времени интегрирования, также можно применять коэффициенты усиления датчиков. Однако, если регулировка времени интегрирования и коэффициентов усиления датчиков не позволяет достичь целевой экспозиции (например, если уровень света меньше целевого порога), то контроллер вспышки может быть сконфигурирован для активации модуля вспышки. Кроме того, в одном варианте осуществления, время интегрирования также может быть ограничено во избежание размытия движения. Например, хотя время интегрирования можно увеличивать до длительности кадра, в некоторых вариантах осуществления оно может быть дополнительно ограничено во избежание размытия движения.
[00276] Как рассмотрено выше, чтобы гарантировать, что активация вспышки освещает целевой кадр на протяжении всей его длительности (например, что вспышка включается до первого пикселя целевого кадра и выключается после последнего пикселя целевого кадра), подсистема 32 ISP может использовать информацию 556 тактирования датчика для определения, когда активировать/деактивировать вспышку 552.
[00277] На фиг.48 графически изображено, как сигнал тактирования датчика от датчиков 90 изображения можно использовать для управления синхронизацией вспышки. Например, на фиг.48 показана часть сигнала 556 тактирования датчика изображения, которая может обеспечиваться одним из датчиков 90a или 90b изображения. Логически высокие участки сигнала 556 представляют кадровые интервалы. Например, первый кадр (кадр N) представлен ссылочной позицией 570, и второй кадр (кадр N+1) представлен ссылочной позицией 572. Фактическое время начала первого кадра 570 указывается передним фронтом сигнала 556 в момент времени tVSYNC_ra0 (например, где “r” обозначает передний фронт, и “a” обозначает “фактический” аспект сигнала 556 тактирования), и фактическое время окончания первого кадра 570 указывается задним фронтом сигнала 556 в момент времени tVSYNC_fa0 (например, где “f” обозначает задний фронт). Аналогично, фактическое время начало второго кадра 572 указывается передним фронтом сигнала 556 в момент времени tVSYNC_ra1, и фактическое время окончания второго кадра 572 указывается задним фронтом сигнала 556 в момент времени tVSYNC_fa1. Интервал 574 между первым и вторым кадрами может именоваться интервалом гашения (например, вертикального гашения), который может позволять схеме обработки изображений (например, подсистеме 32 ISP) идентифицировать начала и концы кадров изображения. Очевидно, что кадровые интервалы и интервалы вертикального гашения, показанные на данной фигуре, не обязательно изображены в масштабе.
[00278] Как показано на фиг.48, сигнал 556 может представлять фактическое тактирование с точки зрения датчика 90 изображения. Таким образом, сигнал 556 представляет тактирование, при котором кадры фактически получаются датчиком изображения. Однако при передаче информации тактирования датчика на нижерасположенные компоненты системы 32 обработки изображения, в сигнал тактирования датчика могут вноситься задержки. Например, сигнал 576 представляет задержанный сигнал тактирования (задержанный на первую величину задержки 578 по времени), который может наблюдаться с точки зрения интерфейса 548 со стороны датчика логики 94 интерфейса между датчиком 90 и логикой 80 предварительной обработки ISP. Сигнал 580 может представлять задержанный сигнал тактирования датчика с точки зрения интерфейса 549 с входной стороны, который показан на фиг.48 как задержанный относительно сигнала 572 тактирования интерфейса со стороны датчика на вторую величину задержки 582 по времени, и задержанный относительно исходного сигнала 556 тактирования датчика на третью величину задержки 584 по времени, которая равна сумме первой величины задержки 578 по времени и второй величины задержки 582 по времени. Затем, при поступлении сигнала 580 со стороны 549 пользователя интерфейса 94 на логику 80 предварительной обработки ISP (FEProc), может вноситься дополнительная задержка, которая наблюдается относительно задержанного сигнала 588 с точки зрения логики 80 предварительной обработки ISP. В частности, сигнал 588, наблюдаемый логикой 80 предварительной обработки ISP, показан здесь как задержанный относительно задержанного сигнала 580 (сигнала тактирования с входной стороны) на четвертую величину задержки 590 по времени и задержанный относительно исходного сигнала 556 тактирования датчика на пятую величину задержки 592 по времени, которая равна сумме первой величины задержки 578 по времени, второй величины задержки 582 по времени и четвертой величины задержки 590 по времени.
[00279] В целях управления тактированием вспышки, контроллер 550 вспышки может использовать первый сигнал, доступный логике предварительной обработки ISP, который, таким образом, сдвигается на наименьшую величину времени задержки относительно фактического сигнала 556 тактирования датчика. Таким образом, в настоящем варианте осуществления, контроллер 550 вспышки может определять параметры тактирования вспышки на основании сигнала тактирования датчика 580, наблюдаемого с точки зрения стороны 549 пользователя интерфейса 94 между датчиком и ISP. Таким образом, сигнал 596, который используется контроллером 550 вспышки в настоящем примере, может быть идентичен сигналу 580. Как показано, задержанный сигнал 596 (задержанный на время задержки 584 относительно сигнала 556) включает в себя кадровые интервалы, расположенные между моментами времени tVSYNC_rd0 и tVSYNC_fd0 (например, где “d” обозначает “задержанный”), которые коррелируют с первым кадром 570, и между моментами времени tVSYNC_rd1 и tVSYNC_fd1, которые коррелируют со вторым кадром 572. Как рассмотрено выше, в общем случае, желательно активировать вспышку до начала кадра и в течение длительности кадра (например, чтобы деактивировать вспышку после последнего пикселя кадра), чтобы гарантировать, что сцена изображения освещается на протяжении всего кадра, и для учета любого времени прогрева, в котором может нуждаться вспышка в ходе активации для достижения полной интенсивности (которое может составлять порядка величины от микросекунд (например, 100-800 микросекунд) до нескольких миллисекунд (например, 1-5 миллисекунда)). Однако, поскольку сигнал 596, анализируемый контроллером 550 вспышки, задержан относительно фактического сигнала 556 тактирования, эта задержка учитывается при определении параметров тактирования вспышки.
[00280] Например, предполагая, что вспышку нужно активировать для освещения сцены изображения на протяжении второго кадра 572, задержанный передний фронт в момент tVSYNC_rd1 возникает после фактического переднего фронта в момент tVSYNC_ra1. Таким образом, контроллер 550 вспышки может испытывать затруднение в использовании задержанного переднего фронта tVSYNC_rd1 для определения времени начала активации вспышки, поскольку задержанный передний фронт tVSYNC_rd1 возникает после того, как второй кадр 572 уже начался (например, после момента tVSYNC_ra1 сигнала 556). В настоящем варианте осуществления, контроллер 550 вспышки может, альтернативно, определять время начала активации вспышки на основании конца предыдущего кадра, в данном случае, заднего фронта в момент времени tVSYNC_fd0. Например, контроллер 550 вспышки может прибавлять интервал 600 времени (который представляет интервал 574 вертикального гашения) к времени tVSYNC_fd0 для вычисления времени, которое соответствует времени задержанного переднего фронта tVSYNC_rd1 кадра 572. Очевидно, что время задержанного переднего фронта tVSYNC_rd1 наступает после фактического времени переднего фронта tVSYNC_ra1 (сигнал 556), и поэтому смещение 598 (OffSet1) по времени, которое соответствует задержке 584 по времени сигнала 580, вычитается из суммы времени tVSYNC_fd0 и интервала времени 600 гашения. В результате, время начала активации вспышки наступает одновременно с началом второго кадра 572, в момент времени tVSYNC_ra1. Однако, как упомянуто выше, в зависимости от типа обеспеченного устройства вспышки (например, ксенонового, светодиодного и т.д.), модуль 552 вспышки может нуждаться во времени прогрева между моментом активации модуля вспышки и моментом, когда устройство вспышки достигает своей полной светимости. Величина времени прогрева может зависеть от типа используемого устройства вспышки (например, ксенонового устройства, светодиодного устройства и т.д.). Таким образом, для учета таких времен прогрева, дополнительное смещение 602 (OffSet2), которое может быть запрограммированным или заранее установленным (например, с использованием регистра управления), можно вычитать из начала второго кадра 572, в момент времени tVSYNC_ra1. Это перемещает время начала активации вспышки назад к моменту времени 604, таким образом, гарантируя, что вспышка активируется (если это необходимо для освещения сцены) до получения начала кадра 572 датчиком изображения. Этот процесс для определения времени активации вспышки можно выразить с использованием нижеследующей формулы:
tflash_start_frame1=tVSYNC_fd0+tvert_blank_int-tOffSet1-tOffSet2
[00281] В проиллюстрированном варианте осуществления, деактивация вспышки может происходить в момент времени tVSYNC_fd1 сигнала 596 контроллера вспышки, при условии, что время tVSYNC_fd1 наступает до начала кадра после кадра 572 (например, кадра N+2, который не показан на фиг.48), что указано временем 605 на сигнале 556 тактирования датчика. В других вариантах осуществления, деактивация вспышки может происходить спустя время (например, смещение 606) после времени tVSYNC_fd1 сигнала 596, но до начала следующего кадра (например, до последующего переднего фронта VSYNC на сигнале 556 тактирования датчика, указывающего начало кадра N+2), или может происходить в интервале 608 непосредственно до времени tVSYNC_fd1, причем интервал 608 меньше величины Offset1 (598). Очевидно, что это гарантирует, что вспышка остается включенной на протяжении всей длительности целевого кадра (например, кадра 572).
[00282] Фиг.49 изображает процесс 618 для определения времени начала активации вспышки на электронном устройстве 10 в соответствии с вариантом осуществления, показанным на фиг.48. Начиная с блока 620, сигнал тактирования датчика (например, 556) получается от датчика изображения и поступает на логику управления вспышкой (например, контроллер 550 вспышки), которая может входить в состав подсистемы обработки сигнала изображения (например, 32) электронного устройства 10. Сигнал тактирования датчика поступает на логику управления вспышкой, но может задерживаться относительно исходного сигнала тактирования (например, 556). На блоке 622 определяется задержка (например, задержка 584) между сигналом тактирования датчика и задержанным сигналом тактирования датчика (например, 596). Затем целевой кадр (например, кадр 572), запрашивающий вспышечное освещение, идентифицируется на блоке 624. Для определения времени, когда модуль вспышки (например, 552) нужно активировать, чтобы гарантировать активность вспышки до начала целевого кадра, процесс 618 затем переходит к блоку 626, на котором определяется первый момент времени (например, время tVSYNC_fd0), соответствующий концу кадра до целевого кадра, который указан задержанным сигналом тактирования. После этого, на блоке 628 длина интервала гашения между кадрами определяется и прибавляется к первому моменту времени, определенному на блоке 626, для определения второго момента времени. Затем задержка, определенная на блоке 622, вычитается из второго момента времени, как показано на блоке 630, для определения третьего момента времени. Как рассмотрено выше, это задает время активации вспышки для согласования с фактическим началом целевого кадра в соответствии с незадержанным сигналом тактирования датчика.
[00283] Чтобы гарантировать активность вспышки до начала целевого кадра, смещение (например, 602, Offset2) вычитается из третьего момента времени, как показано на блоке 632, для определения желаемого времени активации вспышки. Очевидно, что в некоторых вариантах осуществления, смещение из блока 632 может не только гарантировать, что вспышка включена до целевого кадра, но также может компенсировать любое время прогрева, которое может потребоваться вспышке между первоначальной активацией и достижением полной светимости. На блоке 634, вспышка 552 активируется во время начала вспышка, определенное на блоке 632. Как рассмотрено выше и показано в блоке 636, вспышка может оставаться включенной на протяжении всей длительности целевого кадра и может деактивироваться после конца целевого кадра, чтобы все пиксели в целевом кадре находились в аналогичных условиях освещения. Хотя в варианте осуществления, описанном выше на фиг.48 и 49, рассмотрено применение методов синхронизации вспышки с использованием единичной вспышки, очевидно также то, что эти методы синхронизации вспышки в равной степени применимы к вариантам осуществления устройств, имеющим два или более устройств вспышки (например, две светодиодные вспышки). Например, если используется более чем один модуль вспышки, вышеописанные методы можно применять к обоим модулям вспышки, благодаря чему, каждый модуль вспышки активируется контроллером вспышки до начала кадра и остается включенным на протяжении длительности кадра (например, модули вспышки не обязательно активировать для одних и тех же кадров).
[00284] Описанные здесь методы тактирования вспышки можно применять при получении изображений с использованием устройства 10. Например, в одном варианте осуществления, метод предварительной вспышки можно использовать в ходе получения изображения. Например, когда камера или приложение получения изображения активна/о на устройстве 10, приложение может действовать в режиме “предварительного просмотра”. В режиме предварительного просмотра, датчик(и) изображения (например, 90) могут получать кадры данных изображения, которые могут обрабатываться подсистемой 32 ISP устройства 10 в целях предварительного просмотра (например, отображения на дисплее 28), хотя кадры фактически могут не захватываться или не сохраняться, пока пользователь инициирует запрос захвата для перевода устройства 10 в режим “захвата”. В порядке примера, это может происходить посредством активации пользователем физической кнопки захвата на устройстве 10 или программной кнопки захвата, которая может быть реализована программными средствами как часть графического пользовательского интерфейса и отображаться на дисплее устройства 10, реагируя на вводы через пользовательский интерфейс (например, вводы через сенсорный экран).
[00285] Поскольку в режиме предварительного просмотра вспышка обычно не активна, ее внезапная активация и освещение сцены изображения с использованием вспышки может, в ряде случаев, значительно изменить некоторую статистику изображения для конкретной сцены, например, связанную со статистикой автоматического баланса белого и т.д., относительно той же сцены изображения, которая не освещена вспышкой. Таким образом, для улучшения статистики, используемой для обработки желаемого целевого кадра, в одном варианте осуществления, метод использования предварительной вспышки может включать в себя прием от пользователя запроса на захват кадра изображения, который требует вспышечного освещения, использование вспышки в первый момент времени для освещения первого кадра, пока устройство 10 все еще находится в режиме предварительного просмотра, и обновление статистики (например, статистики автоматического баланса белого) до начала следующего кадра. Устройство 10 может входить в режим захвата и захватывать следующий кадр с использованием обновленной статистики с активированной вспышкой, таким образом, обеспечивая улучшение изображения/цветопередачи.
[00286] Фиг.50 изображает более подробную блок-схему операций, иллюстрирующую такой процесс 640. Процесс 640 начинается на блоке 642, в котором принимается запрос на захват изображения с использованием вспышки. На блоке 644, вспышка активируется (например, может тактироваться с использованием методов, показанных на фиг.48 и 49) для освещения первого кадра, пока устройство 10 все еще находится в режиме предварительного просмотра. Затем, на блоке 646, статистика изображения, например статистика автоматического баланса белого, обновляется на основании статистики, полученной из освещенного первого кадра. После этого, на блоке 648, устройство 10 может войти в режим захвата и захватить следующий кадр с использованием обновленной статистики изображения от блока 646. Например, обновленную статистику изображения можно использовать для определения коэффициентов усиления баланса белого и/или матриц цветовой коррекции (CCM), которые программно-аппаратное обеспечение (например, управляющая логика 84) может использовать для программирования конвейера 82 ISP. Таким образом, кадр (например, следующий кадр), полученный на блоке 648, может обрабатываться конвейером 82 ISP с использованием одного или более параметров, определенных на основании обновленной статистики изображения от блока 646.
[00287] В другом варианте осуществления, цветовые свойства из безвспышечной сцены изображения (например, полученной или заранее просмотренной без вспышки) можно применять при захвате кадра изображения со вспышкой. Очевидно, что безвспышечная сцена изображения в общем случае демонстрирует улучшенные цветовые свойства, по сравнению со сценой изображения, которая освещается вспышкой. Однако использование вспышки может обеспечивать снижение шума и повышение яркости (например, в условиях низкой освещенности) относительно безвспышечного изображения. Однако использование вспышки также может приводить к тому, что некоторые цвета во вспышечном изображении выглядят несколько более блеклыми, чем в безвспышечном изображении той же сцены. Таким образом, в одном варианте осуществления, для сохранения преимуществ низкого шума и высокой яркости вспышечного изображения, но при этом частичного сохранения некоторых цветовых свойств из безвспышечного изображения, устройство 10 может быть сконфигурировано анализировать первый кадр без вспышки для получения его цветовых свойств. Затем устройство 10 может захватить второй кадр с использованием вспышки и может применить метод переноса цветовой палитры к вспышечному изображению с использованием цветовых свойств из безвспышечного изображения.
[00288] В некоторых вариантах осуществления, устройство 10, сконфигурированное для реализации любых рассмотренных выше методов использования вспышки/строба, может представлять собой модель вычислительных устройств iPod®, iPhone®, iMac® или MacBook® со встроенными или внешними устройствами формирования изображения, которые все доступны от Apple Inc. Кроме того, приложение формирования изображения/камеры может быть версией приложений Camera®, iMovie® или PhotoBooth®, также от Apple Inc.
[00289] На фиг.51 проиллюстрирован более детализированный вид логики 150 предварительной обработки пикселей ISP (ранее рассмотренной на фиг.10), в соответствии с вариантом осуществления настоящего изобретения. Как показано, логика 150 предварительной обработки пикселей ISP включает в себя временной фильтр 650 и фильтр 652 компенсации биннинга. Временной фильтр 650 может принимать один из входных сигналов изображения Sif0, Sif1, FEProcIn или предварительно обработанных сигналов изображения (например, 180, 184) и может действовать на первичных пиксельных данных до осуществления какой-либо дополнительной обработки. Например, временной фильтр 650 может первоначально обрабатывать данные изображения для снижения шума посредством усреднения кадров изображения во временном направлении. Фильтр 652 компенсации биннинга, который более подробно рассмотрен ниже, может применять масштабирование и повторную дискретизацию к подвергнутым биннингу первичным данным изображения от датчика изображения (например, 90a, 90b) для поддержания равномерного пространственного распределения пикселей изображения.
[00290] Временной фильтр 650 может обладать пиксельной адаптивностью на основании характеристик движения и яркости. Например, в случае высокого движения пикселя, степень фильтрации может снижаться во избежание возникновения в результирующем обработанном изображении “запаздываний” или “артефактов наложения изображений”, тогда как при обнаружении слабого движения или в отсутствие движения степень фильтрации может увеличиваться. Дополнительно, степень фильтрации также можно регулировать на основании данных яркости (например, “яркости”). Например, с увеличением яркости изображения, фильтрационные артефакты могут становиться более заметными человеческому глазу. Таким образом, степень фильтрации можно дополнительно снижать, когда пиксель имеет высокий уровень яркости.
[00291] При применении временной фильтрации, временной фильтр 650 может принимать опорные пиксельные данные (Rin) и входные данные (Hin) истории движения, которые могут происходить из предыдущего фильтрованного или исходного кадра. С использованием этих параметров, временной фильтр 650 может обеспечивать выходные данные (Hout) истории движения и фильтрованный пиксельный выход (Yout). Затем фильтрованный пиксельный выход Yout поступает на фильтр 652 компенсации биннинга, который может быть сконфигурирован для осуществления одной или более операций масштабирования на данных Yout фильтрованного пиксельного выхода для генерации выходного сигнала FEProcOut. Обработанные пиксельные данные FEProcOut затем может перенаправляться на логику 82 конвейерной обработки ISP, как рассмотрено выше.
[00292] На фиг.52 проиллюстрирована схема обработки, изображающая процесс 654 временной фильтрации, который может осуществляться временным фильтром, показанным на фиг.51, в соответствии с первым вариантом осуществления. Временной фильтр 650 может включать в себя 2-отводный фильтр, в котором коэффициенты фильтрации регулируются адаптивно на попиксельной основе, по меньшей мере, частично, на основании данных движения и яркости. Например, входные пиксели x(t), где переменная “t” обозначает временное значение, можно сравнивать с опорными пикселями r(t-1) в ранее фильтрованном кадре или предыдущем исходном кадре для генерации поискового индекса движения в таблице (M) 655 истории движения, которая может содержать коэффициенты фильтрации. Дополнительно, на основании входных данных h(t-1) истории движения, можно определить выходные данные h(t) истории движения, соответствующие текущему входному пикселю x(t).
[00293] Выходные данные h(t) истории движения и коэффициент фильтрации, K, можно определить на основании дельты движения d(j,i,t), где (j,i) представляют координаты пространственного положения текущего пикселя x(j,i,t). Дельту движения d(j,i,t) можно вычислить посредством определения максимальной из трех абсолютных дельт между исходными и опорными пикселями для трех горизонтально соседних пикселей одного и того же цвета. Для примера, кратко обратимся к фиг.53, где проиллюстрированы пространственные положения трех соседних опорных пикселей 657, 658 и 659, соответствующих исходным входным пикселям 660, 661 и 662. В одном варианте осуществления, дельту движения можно вычислять на основании этих исходных и опорных пикселей с использованием нижеследующей формулы:
Ниже на фиг.55 дополнительно проиллюстрирована блок-схема операций, изображающая этот метод определения значения дельты движения. Кроме того, следует понимать, что метод вычисления значения дельты движения, показанный выше в уравнении 1a (и ниже на фиг.55), призван обеспечивать лишь один вариант осуществления для определения значения дельты движения.
[00294] В других вариантах осуществления, матрицу пикселей того же цвета можно оценивать для определения значения дельты движения. Например, помимо трех пикселей, указанных в уравнении 1a, один вариант осуществления для определения значений дельты движения может включать в себя также оценивание абсолютных дельт между пикселями одного и того же цвета из двух строк выше (например, j-2; предполагая шаблон Байера) опорных пикселей 660, 661 и 662 и их соответствующих соседних пикселей, и двух строк ниже (например, j+2; предполагая шаблон Байера) опорных пикселей 660, 661 и 662 и их соответствующих соседних пикселей. Например, в одном варианте осуществления, значение дельты движения можно выразить следующим образом:
Таким образом, согласно варианту осуществления, представленному уравнением 1b, значение дельты движения можно определить посредством сравнения абсолютной дельты между матрицей 3×3 пикселей того же цвета с текущим пикселем (661), расположенным в центре матрицы 3×3 (например, реально матрицей 5×5 для байеровских цветовых шаблонов, если считать пиксели разных цветов). Очевидно, что любая пригодная двухмерная матрица пикселей того же цвета (например, включающая в себя матрицы, все пиксели которой располагаются в одной и той же строке (например, уравнение 1a), или матрицы, все пиксели которой располагаются в одном и том же столбце) с текущим пикселем (например, 661), расположенным в центре матрицы, можно анализировать для определения значения дельты движения. Кроме того, хотя значение дельты движения можно определять как максимальную из абсолютных дельт (например, как показано в уравнениях 1a и 1b), в других вариантах осуществления, значение дельты движения также можно выбирать как среднее или срединное значение абсолютных дельт. Дополнительно, вышеописанные подходы применимы также к другим типам матриц цветовых фильтров (например, RGBW, CYGM и т.д.), а не только к шаблонам Байера.
[00295] Согласно фиг.52, определив значение дельты движения, поисковый индекс движения, который можно использовать для выбора коэффициента K фильтрации из таблицы (M) 655 движения, можно вычислять посредством суммирования дельты d(t) движения для текущего пикселя (например, в пространственном положении (j,i)) с входными данными h(t-1) истории движения. Например, коэффициент K фильтрации можно определить следующим образом:
Дополнительно, выходные данные h(t) истории движения можно определить с использованием следующей формулы:
[00296] Затем яркость текущего входного пикселя x(t) можно использовать для генерации поискового индекса яркости в таблице (L) 656 яркости. В одном варианте осуществления, таблица яркости может содержать коэффициенты ослабления, которые могут принимать значения между 0 и 1 и могут быть выбраны на основании индекса яркости. Второй коэффициент фильтрации, K', можно вычислять посредством умножения первого коэффициента K фильтрации на коэффициент ослабления яркости, как показано в нижеследующем уравнении:
[00297] Определенное значение для K' затем можно использовать как коэффициент фильтрации для временного фильтра 650. Как рассмотрено выше, временной фильтр 650 может быть 2-отводным фильтром. Дополнительно, временной фильтр 650 может быть сконфигурирован как фильтр с бесконечной импульсной характеристикой (БИХ), использующий предыдущий фильтрованный кадр, или как фильтр с конечной импульсной характеристикой (КИХ), использующий предыдущий исходный кадр. Временной фильтр 650 может вычислять фильтрованный выходной пиксель y(t) (Yout) с использованием текущего входного пикселя x(t), опорного пикселя r(t-1) и коэффициента K' фильтрации с использованием следующей формулы:
Как рассмотрено выше, процесс 654 временной фильтрации, показанный на фиг.52, может осуществляться на попиксельной основе. В одном варианте осуществления, одну и ту же таблицу M движения и таблицу L яркости можно использовать для всех цветовых компонент (например, R, G и B). Дополнительно, некоторые варианты осуществления могут предусматривать механизм обхода, в котором временную фильтрацию можно обойти, например, в ответ на сигнал управления от управляющей логики 84. Кроме того, как будет рассмотрено ниже в отношении фиг.57 и 58, один вариант осуществления временного фильтра 650 может использовать отдельные таблицы движения и яркости для каждой цветовой компоненты данных изображения.
[00298] Вариант осуществления метода временной фильтрации, описанный со ссылкой на фиг.52 и 53 можно лучше понять, обратившись к фиг.54, где изображена блок-схема операций, демонстрирующая способ 664, в соответствии с вышеописанным вариантом осуществления. Способ 664 начинается с этапа 665, на котором текущий пиксель x(t), находящийся в пространственном положении (j,i) текущего кадра данных изображения, принимается системой 654 временной фильтрации. На этапе 666, значение дельты d(t) движения определяется для текущего пикселя x(t), по меньшей мере, частично, на основании одного или более соседних опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Метод определения значения дельты d(t) движения на этапе 666 дополнительно объяснен ниже со ссылкой на фиг.55, и может осуществляться в соответствии с вышеприведенным уравнением 1a.
[00299] Получив значение дельты d(t) движения на этапе 666, поисковый индекс таблицы движения можно определить с использованием значения дельты d(t) движения и значения h(t-1) входных данных истории движения, соответствующего пространственному положению (j,i) из предыдущего кадра, как показано на этапе 667. Дополнительно, хотя это не показано, значение h(t) истории движения, соответствующее текущему пикселю x(t), также можно определить на этапе 667, когда значение дельты d(t) движения известно, например, с использованием вышеприведенного уравнения 3a. После этого, на этапе 668, первый коэффициент K фильтрации можно выбирать из таблицы 655 движения с использованием поискового индекса таблицы движения, из этапа 667. Определение поискового индекса таблицы движения и выбор первого коэффициента K фильтрации из таблицы движения может осуществляться в соответствии с вышеприведенным уравнением 2a.
[00300] Затем, на этапе 669, коэффициент ослабления можно выбирать из таблицы 656 яркости. Например, таблица 656 яркости может содержать коэффициенты ослабления в пределах приблизительно от 0 до 1, и коэффициент ослабления можно выбирать из таблицы 656 яркости с использованием значения текущего пикселя x(t) в качестве поискового индекса. Выбрав коэффициент ослабления, второй коэффициент K' фильтрации можно определить на этапе 670 с использованием выбранного коэффициента ослабления и первого коэффициента K фильтрации (из этапа 668), как показано в вышеприведенном уравнении 4a. Затем, на этапе 671, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтрации (из этапа 669), значения соседнего опорного пикселя r(t-1) и значения входного пикселя x(t). Например, в одном варианте осуществления, выходное значение y(t) можно определить в соответствии с вышеприведенным уравнением 5a.
[00301] На фиг.55, этап 666 для определения значения дельты d(t) движения из способа 664 проиллюстрирован более подробно в соответствии с одним вариантом осуществления. В частности, определение значения дельты d(t) движения, в общем случае, может соответствовать операции, изображенной выше в соответствии с уравнением 1a. Как показано, этап 666 может включать в себя подэтапы 672-675. Начиная с подэтапа 672, идентифицируется набор из трех горизонтально соседних пикселей, имеющих такое же значение цвета, как текущий входной пиксель x(t). В порядке примера, в соответствии с вариантом осуществления, показанным на фиг.53, данные изображения могут включать в себя байеровские данные изображения, и три горизонтально соседних пикселя могут включать в себя текущий входной пиксель x(t) (661), второй пиксель 660 того же цвета слева от текущего входного пикселя 661, и третий пиксель того же цвета справа от текущего входного пикселя 661.
[00302] Затем, на подэтапе 673, идентифицируются три соседних опорных пикселя 657, 658 и 659 из предыдущего кадра, соответствующие выбранному набору из трех горизонтально соседних пикселей 660, 661 и 662. С использованием выбранных пикселей 660, 661 и 662 и трех соседних опорных пикселей 657, 658 и 659, абсолютные значения разностей между каждым из трех выбранных пикселей 660, 661 и 662 и их соответствующими соседними опорными пикселями 657, 658 и 659, соответственно, определяются на подэтапе 674. Затем, на подэтапе 675, максимальная из трех разностей, полученных на подэтапе 674 выбирается в качестве значения дельты d(t) движения для текущего входного пикселя x(t). Как рассмотрено выше, фиг.55, которая иллюстрирует способ вычисления значения дельты движения, показанный в уравнении 1a, призвана обеспечивать лишь один вариант осуществления. Действительно, как рассмотрено выше, любую пригодную двухмерную матрицу пикселей того же цвета с текущим пикселем в центре матрицы можно использовать для определения значения дельты движения (например, уравнение 1b).
[00303] Другой вариант осуществления способа применения временной фильтрации к данным изображения дополнительно изображен на фиг.56. Например, поскольку отношения сигнал-шум для разных цветовых компонент данных изображения могут различаться, коэффициент усиления может применяться к текущему пикселю, благодаря чему, текущий пиксель получает коэффициент усиления до выбора значений движения и яркости из таблицы 655 движения и таблицы 656 яркости. Применяя соответствующий коэффициент усиления, который является цветозависимым, можно добиться более согласованного отношения сигнал-шум между разными цветовыми компонентами. Исключительно в порядке примера, в реализации, где используются первичные байеровские данные изображения, цветовые каналы красного и синего, в общем случае, могут быть более чувствительными по сравнению с цветовыми каналами зеленого (Gr и Gb). Таким образом, применяя надлежащий цветозависимый коэффициент усиления к каждому обработанному пикселю, можно, в общем случае, снижать разброс в отношении сигнал-шум между цветовыми компонентами, таким образом, снижая, помимо прочего, артефакты наложения изображений, а также согласованность между разными цветами после коэффициентов усиления автоматического баланса белого.
[00304] На основании вышеизложенного, на фиг.56 представлена блок-схема операций, изображающая способ 676 применения временной фильтрации к данным изображения, принятым блоком 150 предварительной обработки в соответствии с таким вариантом осуществления. Начиная с этапа 677, текущий пиксель x(t), находящийся в пространственном положении (j,i) текущего кадра данных изображения, принимается системой 654 временной фильтрации. На этапе 678, значение дельты d(t) движения определяется для текущего пикселя x(t), по меньшей мере, частично, на основании одного или более соседних опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Этап 678 может быть аналогичен этапу 666 показанному на фиг.54, и может использовать операцию, представленную в вышеприведенном уравнении 1.
[00305] Затем, на этапе 679, поисковый индекс таблицы движения можно определить с использованием значения дельты d(t) движения, значения h(t-1) входных данных истории движения, соответствующего пространственному положению (j,i) из предыдущего кадра (например, соответствующего соседнему опорному пикселю r(t-1)), и коэффициента усиления, связанного с цветом текущего пикселя. После этого, на этапе 680, первый коэффициент K фильтрации можно выбирать из таблицы 655 движения с использованием поискового индекса таблицы движения, определенного на этапе 679. Исключительно в порядке примера, в одном варианте осуществления, коэффициент K фильтрации и поисковый индекс таблицы движения можно определить следующим образом:
где M представляет таблицу движения, и где gain[c] соответствует коэффициенту усиления, связанному с цветом текущего пикселя. Дополнительно, хотя это не показано на фиг.56, следует понимать, что значение h(t) выходных данных истории движения для текущего пикселя также можно определить и можно использовать для применения временной фильтрации к соседнему пикселю последующего кадра изображения (например, следующего кадра). В настоящем варианте осуществления, выходные данные h(t) истории движения для текущего пикселя x(t) можно определить с использованием следующей формулы:
[00306] Затем, на этапе 681, коэффициент ослабления можно выбирать из таблицы 656 яркости с использованием поискового индекса таблицы яркости, определенного на основании коэффициента усиления (gain[c]), связанного с цветом текущего пикселя x(t). Как рассмотрено выше, коэффициенты ослабления, хранящиеся в таблице яркости, могут принимать значения приблизительно от 0 до 1. После этого, на этапе 682, второй коэффициент K' фильтрации можно вычислять на основании коэффициента ослабления (из этапа 681) и первого коэффициента K фильтрации (из этапа 680). Исключительно в порядке примера, в одном варианте осуществления, второй коэффициент K' фильтрации и поисковый индекс таблицы яркости можно определить следующим образом:
[00307] Затем, на этапе 683, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтрации (из этапа 682), значения соседнего опорного пикселя r(t-1) и значения входного пикселя x(t). Например, в одном варианте осуществления, выходное значение y(t) можно определить следующим образом:
[00308] Перейдем к фиг.57, где изображен дополнительный вариант осуществления процесса 384 временной фильтрации. В данном случае, процесс 384 временной фильтрации может осуществляться аналогично варианту осуществления, рассмотренному на фиг.56, за исключением того, что вместо применения цветозависимого коэффициента усиления (например, gain[c]) к каждому входному пикселю и использования совместно используемых таблиц движения и яркости, для каждых цветовых компонент обеспечены отдельные таблицы движения и яркости. Например, как показано на фиг.57, таблицы 655 движения могут включать в себя таблицу 655a движения, соответствующую первому цвету, таблицу 655b движения, соответствующую второму цвету, и таблицу 655c движения, соответствующую n-му цвету, где n зависит от количества цветов, присутствующих в первичных данных изображения. Аналогично, таблицы 656 яркости могут включать в себя таблицу 656a яркости, соответствующую первому цвету, таблицу 656b яркости, соответствующую второму цвету, и таблицу 656c яркости, соответствующую n-му цвету. Таким образом, согласно варианту осуществления, где первичные данные изображения являются байеровскими данными изображения, для каждого из цветовых компонент красного, синего и зеленого может быть обеспечено по три таблицы движения и яркости. Как рассмотрено ниже, выбор коэффициентов K фильтрации и коэффициентов ослабления может зависеть от таблицы движения и яркости, выбрано для текущего цвета (например, цвета текущего входного пикселя).
[00309] Способ 685, демонстрирующий дополнительный вариант осуществления для временной фильтрации с использованием цветозависимых таблиц движения и яркости показан на фиг.58. Очевидно, что различные вычисления и формулы которые могут применяться согласно способу 685, могут быть аналогичны варианту осуществления, показанному на фиг.54, но с выбором конкретной таблицы движения и яркости для каждого цвета, или аналогичны варианту осуществления, показанному на фиг.56, но с заменой использования цветозависимого gain[c] выбором цветозависимой таблицы движения и яркости.
[00310] Начиная с этапа 686, текущий пиксель x(t, находящийся в пространственном положении (j,i) текущего кадра данных изображения, принимается системой 684 временной фильтрации (фиг.57). На этапе 687, значение дельты d(t) движения определяется для текущего пикселя x(t), по меньшей мере, частично, на основании одного или более соседних опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Этап 687 может быть аналогичен этапу 666, показанному на фиг.54, и может использовать операцию, показанную в вышеприведенном уравнении 1.
[00311] Затем, на этапе 688, поисковый индекс таблицы движения можно определить с использованием значения дельты d(t) движения и значения h(t-1) входных данных истории движения, соответствующего пространственному положению (j,i) из предыдущего кадра (например, соответствующего соседнему опорному пикселю r(t-1)). После этого, на этапе 689, первый коэффициент K фильтрации можно выбирать из одной из доступных таблиц движения (например, 655a, 655b, 655c) на основании цвета текущего входного пикселя. Например, идентифицировав надлежащую таблицу движения, первый коэффициент K фильтрации можно выбирать с использованием поискового индекса таблицы движения, определенного на этапе 688.
[00312] После выбора первого коэффициента K фильтрации, выбирается таблица яркости, соответствующая текущему цвету, и коэффициент ослабления выбирается из выбранной таблицы яркости на основании значения текущего пикселя x(t), как показано на этапе 690. После этого, на этапе 691, второй коэффициент K' фильтрации определяется на основании коэффициента ослабления (из этапа 690) и первого коэффициента K фильтрации (этап 689). Затем, на этапе 692, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтрации (из этапа 691), значения соседнего опорного пикселя r(t-1) и значения входного пикселя x(t). Хотя реализация подхода, показанного на фиг.58, может быть более затратна (например, из-за объема памяти, необходимого для хранения дополнительных таблиц движения и яркости), он может, в ряде случаев, обеспечивать дополнительные усовершенствования в отношении артефактов наложения изображений и согласованности между разными цветами после коэффициентов усиления автоматического баланса белого.
[00313] В соответствии с дополнительными вариантами осуществления, процесс временной фильтрации, обеспеченный временным фильтром 650, может использовать комбинацию цветозависимых коэффициентов усиления и цветозависимых таблиц движения и/или яркости для применения временной фильтрации к входным пикселям. Например, в одном таком варианте осуществления, для всех цветовых компонент может быть обеспечена единая таблица движения, и поисковый индекс таблицы движения для выбора первого коэффициента фильтрации (K) из таблицы движения можно определить на основании цветозависимого коэффициента усиления (например, как показано на фиг.56, этапы 679-680), тогда как к поисковому индексу таблицы яркости может не применяться цветозависимый коэффициент усиления, но его можно использовать для выбора коэффициента ослабления яркости из одной из множественных таблиц яркости в зависимости от цвета текущего входного пикселя (например, как показано на фиг.58, этап 690). Альтернативно, в другом варианте осуществления, можно обеспечить множественные таблицы движения, и поисковый индекс таблицы движения (без применения цветозависимого коэффициента усиления) можно использовать для выбора первого коэффициента фильтрации (K) из таблицы движения, соответствующей цвету текущего входного пикселя (например, как показано на фиг.58, этап 689), тогда как для всех цветовых компонент можно обеспечить единую таблицу яркости, причем поисковый индекс таблицы яркости для выбора коэффициента ослабления яркости можно определить на основании цветозависимого коэффициента усиления (например, как показано на фиг.56, этапы 681-682). Кроме того, в одном варианте осуществления, где используется матрица байеровских цветовых фильтров, для каждого из цветовых компонент красного (R) и синего (B) можно обеспечить по одной таблице движения и/или таблице яркости, тогда как для обоих зеленых цветовых компонент (Gr и Gb) можно обеспечить общую таблицу движения и/или таблицу яркости.
[00314] Затем выходной сигнал временного фильтра 650 может отправляться на фильтр 652, компенсации биннинга (BCF), который может быть сконфигурирован для обработки пикселей изображения для компенсации нелинейного размещения (например, неравномерного пространственного распределения) цветовых выборок вследствие биннинга датчиком(ами) 90a или 90b изображения, чтобы последующие операции обработки изображений в логике 82 конвейерной обработки ISP (например, демозаика и т.д.), которые зависят от линейного размещения цветовых выборок могли работать правильно. Например, на фиг.59 изображена выборка 693 байеровских данных изображения с полным разрешением. Это может быть выборка с полным разрешением первичных данных изображения, захваченных датчиком 90a (или 90b) изображения, подключенным к логике 80 предварительной обработки ISP.
[00315] Очевидно, что при некоторых условиях захвата изображения, может быть непрактичным отправлять данные изображения с полным разрешением, захваченные датчиком 90a изображения, на схему 32 ISP для обработки. Например, при захвате видеоданных, для сохранения внешнего вида движущегося изображения жидкости, воспринимаемого человеческим глазом, может потребоваться частота кадров, по меньшей мере, приблизительно 30 кадров в секунду. Если же объем пиксельных данных, содержащихся в каждом кадре выборки с полным разрешением превышает возможности обработки схемы 32 ISP при частоте дискретизации 30 кадров в секунду, фильтрацию с компенсацией биннинга можно применять совместно с биннингом датчиком 90a изображения для снижения разрешения сигнала изображения и одновременного повышения отношения сигнал/шум. Например, как рассмотрено выше, могут применяться различные методы биннинга, например биннинг 2×2, для формирования “подвергнутого биннингу” первичного пикселя изображения посредством усреднения значений окружающих пикселей в активной области 312 первичного кадра 310.
[00316] На фиг.60 проиллюстрирован вариант осуществления датчика 90a изображения, который может быть сконфигурирован для биннинга данных 693 изображения с полным разрешением, показанных на фиг.59, для генерации соответствующих подвергнутых биннингу первичных данных 700 изображения, показанных на фиг.61 в соответствии с одним вариантом осуществления. Как показано, датчик 90a изображения может захватывать первичные данные 693 изображения с полным разрешением. Логика 699 биннинга может быть сконфигурирована для применения биннинга к первичным данным 693 изображения с полным разрешением для генерации подвергнутых биннингу первичных данных 700 изображения, которые могут передаваться логике 80 предварительной обработки ISP с использованием интерфейса 94a датчика, который, как рассмотрено выше, может представлять собой интерфейс SMIA или любые другие пригодные параллельные или последовательные интерфейсы камеры.
[00317] Согласно фиг.61, логика 699 биннинга может применять биннинг 2×2 к первичным данным 693 изображения с полным разрешением. Например, в отношении подвергнутых биннингу данных 700 изображения, пиксели 695, 696, 697 и 698 могут формировать шаблон Байера, и их можно определять посредством усреднения значений пикселей из первичных данных 693 изображения с полным разрешением. Например, согласно фиг.59 и 61, подвергнутый биннингу пиксель 695 Gr можно определить как усредненное или среднее значение пикселей 695a-695d Gr полного разрешения. Аналогично, подвергнутый биннингу пиксель 696 R можно определить как среднее значение пикселей 696a-696d R полного разрешения, подвергнутый биннингу пиксель 697 B можно определить как среднее значение пикселей 697a-697d B полного разрешения, и подвергнутый биннингу пиксель 698 Gb можно определить как среднее значение пикселей 698a-698d Gb полного разрешения. Таким образом, в настоящем варианте осуществления, биннинг 2×2 может обеспечивать набор из четырех пикселей полного разрешения, включающих в себя верхний левый (например, 695a), верхний правый (например, 695b), нижний левый (например, 695c) и нижний правый (например, 695d) пиксель, которые усредняются для получения подвергнутого биннингу пикселя, расположенного в центре квадрата, образованного набором из четырех пикселей полного разрешения. Соответственно, подвергнутый биннингу байеровский блок 694, показанный на фиг.61, содержит четыре “суперпикселя”, которые представляют 16 пикселей, содержащихся в байеровских блоках 694a-694d на фиг.59.
[00318] Помимо снижения пространственного разрешения, биннинг также дает дополнительное преимущество понижения шума в сигнале изображения. Например, всякий раз, когда датчик изображения (например, 90a) подвергается воздействию светового сигнала, может присутствовать некоторая величина шума, например, фотонного шума, связанного с изображением. Этот шум может быть случайным или систематическим и также может поступать от множественных источников. Таким образом, объем информации, содержащейся в изображении, захваченном датчиком изображения, можно выразить через отношение сигнал/шум. Например, каждый раз, когда изображение захватывается датчиком 90a изображения и переносится на схему обработки, например, схему 32 ISP, в пиксельных значениях может присутствовать некоторая степень шума, поскольку процесс чтения и переноса данных изображения, по природе своей, вносит “шум чтения” в сигнал изображения. Этот “шум чтения” может быть случайным, и его, в общем случае, не удается избежать. Благодаря использованию среднего значения четырех пикселей, шум, (например, фотонный шум) можно, в общем случае, снизить независимо от источника шума.
[00319] Таким образом, при рассмотрении данных 693 изображения с полным разрешением, показанных на фиг.59, каждый шаблон 694a-694d Байера (блок 2×2) содержит 4 пикселя, каждый из которых содержит сигнал и шумовую компоненту. Если каждый пиксель, например, в байеровском блоке 694a, считывается отдельно, то присутствуют четыре компоненты сигнала и четыре шумовых компоненты. Однако, благодаря применению биннинга, как показано на фиг.59 и 61, что позволяет представить четыре пикселя (например, 695a, 695b, 695c, 695d) единым пикселем (например, 695) в подвергнутых биннингу данных изображения, область, занятую четырьмя пикселями в данных 693 изображения с полным разрешением, можно считывать как единый пиксель только с одним экземпляром шумовой компоненты, таким образом, повышая отношение сигнал/шум.
[00320] Кроме того, хотя настоящий вариант осуществления изображает логику 699 биннинга, показанную на фиг.60, как сконфигурированную для применения процесса биннинга 2×2, очевидно, что логика 699 биннинга может быть сконфигурирована для применения любого пригодного типа процесса биннинга, например, биннинга 3×3, вертикального биннинга, горизонтального биннинга и т.д. В некоторых вариантах осуществления, датчик 90a изображения может быть сконфигурирован для выбора между разными режимами биннинга в процессе захвата изображения. Дополнительно, в дополнительных вариантах осуществления, датчик 90a изображения также может быть сконфигурирован для применения метода, который может именоваться “пропуском”, в котором вместо средних пиксельных выборок, логика 699 выбирает лишь некоторые пиксели из данных 346 полного разрешения (например, каждый второй пиксель, каждый третий пиксель и т.д.) для вывода на логику 80 предварительной обработки ISP для обработки. Кроме того, хотя на фиг.60 показан только датчик 90a изображения, очевидно, что датчик 90b изображения можно реализовать аналогичным образом.
[00321] Согласно фиг.61, один результат процесса биннинга состоит в том, что пространственная дискретизация подвергнутых биннингу пикселей может распределяться неравномерно. Это пространственное искажение, в некоторых системах, может приводить к ступенчатости (например, зазубренным краям), что, в общем случае, нежелательно. Кроме того, поскольку некоторые этапы обработки изображений в логике 82 конвейерной обработки ISP могут зависеть от линейного размещения цветовых выборок, чтобы она правильно работала, фильтр 652 компенсации биннинга (BCF) может применяться для осуществления повторной дискретизации и повторному размещению подвергнутых биннингу пикселей таким образом, чтобы подвергнутые биннингу пиксели были равномерно распределены в пространстве. Таким образом, BCF 652, по существу, компенсирует неравномерное пространственное распределение (например, показанное на фиг.61) посредством повторной дискретизации позиции выборок (например, пикселей). Например, фиг.62 иллюстрирует повторно дискретизированный участок подвергнутых биннингу данных 702 изображения после обработки с помощью BCF 652, в которых байеровский блок 703, содержащий равномерно распределенные повторно дискретизированные пиксели 704, 705, 706 и 707, соответствует подвергнутым биннингу пикселям 695, 696, 697 и 698, соответственно, подвергнутых биннингу данных 700 изображения из фиг.61. Дополнительно, согласно варианту осуществления, который использует пропуск (например, вместо биннинга), как упомянуто выше, пространственное искажение, показанное на фиг.61, может отсутствовать. В этом случае, BCF 652 может функционировать как фильтр низких частот для ослабления артефактов (например, ступенчатости), которые могут возникать в случае применения пропуска датчиком 90a изображения.
[00322] На фиг.63 показана блок-схема фильтра 652 компенсации биннинга в соответствии с одним вариантом осуществления. BCF 652 может включать в себя логику 708 компенсации биннинга, которая может обрабатывать подвергнутые биннингу пиксели 700 для применения горизонтального и вертикального масштабирования с использованием логики 709 горизонтального масштабирования и логики 710 вертикального масштабирования, соответственно, для повторной дискретизации и повторного размещения подвергнутых биннингу пикселей 700 с целью обеспечения их равномерного распределения в пространстве, как показано на фиг.62. В одном варианте осуществления, операция(и) масштабирования, осуществляемая(ые) BCF 652, может/могут осуществляться с использованием горизонтальной и вертикальной многоотводной многофазной фильтрации. Например, процесс фильтрации может включать в себя выбор надлежащих пикселей из входных данных источника изображения (например, подвергнутых биннингу данных 700 изображения, обеспечиваемых датчиком 90a изображения), умножение каждого из выбранных пикселей на коэффициент фильтрации, и повышающую дискретизацию полученных значений для формирования выходного пикселя на нужном пункте назначения.
[00323] Выбор пикселей, используемых в операциях масштабирования, которые могут включать в себя центральный пиксель и окружающие соседние пиксели того же цвета, можно определить с использованием отдельных дифференциальных анализаторов 711, одного для вертикального масштабирования и одного для горизонтального масштабирования. В представленном варианте осуществления, дифференциальные анализаторы 711 могут быть цифровыми дифференциальными анализаторами (DDA) и могут быть сконфигурирован для управления текущей выходной позицией пикселя в ходе операций масштабирования в вертикальном и горизонтальном направлениях. В настоящем варианте осуществления, первый DDA (именуемый 711a) используется для всех цветовых компонент при горизонтальном масштабировании, и второй DDA (именуемый 711b) используется для всех цветовых компонент при вертикальном масштабировании. Исключительно в порядке примера, DDA 711 может быть обеспечен как 32-битовый регистр данных, который содержит число с фиксированной запятой в формате дополнения до 2, имеющее 16 битов в целой части и 16 битов в дробной части. 16-битовую целую часть можно использовать для определения текущей позиции выходного пикселя. Дробную часть DDA 711 можно использовать для определения текущего индекса или фазы, которое может базироваться на межпиксельной дробной позиции текущей позиции DDA (например, соответствующей пространственному положению выходного пикселя). Индекс или фазу можно использовать для выбора надлежащего набора коэффициентов из набора таблиц 712 коэффициентов фильтрации. Дополнительно, фильтрация может осуществляться для каждой цветовой компоненты с использованием пикселей того же цвета. Таким образом, коэффициенты фильтрации можно выбирать на основании не только фазы текущей позиции DDA, но и цвета текущего пикселя. В одном варианте осуществления, 8 фаз может присутствовать между каждым входным пикселем, и, таким образом, вертикальный и горизонтальный компоненты масштабирования могут использовать таблицы коэффициентов глубиной 8, благодаря чему, 3 старших бита 16-битовой дробной части используются для выражения текущей фазы или индекса. Таким образом, используемый здесь термин “первичные данные изображения” и т.п. следует понимать как данные многоцветного изображения, получаемые единичным датчиком с помощью шаблона матрицы цветовых фильтров (например, байеровским), перекрывающих его, которые обеспечивают множественные цветовые компоненты в одной плоскости. В другом варианте осуществления, отдельные DDA можно использовать для каждой цветовой компоненты. Например, в таких вариантах осуществления, BCF 652 может выделять компоненты R, B, Gr и Gb из первичных данных изображения и обрабатывать каждую компоненту как отдельную плоскость.
[00324] В ходе эксплуатации, горизонтальное и вертикальное масштабирование может включать в себя инициализация DDA 711 и осуществление многоотводной многофазной фильтрации с использованием целой и дробной частей DDA 711. При осуществлении по отдельности и с помощью отдельных DDA, операции горизонтального и вертикального масштабирования осуществляются аналогичным образом. Значение шага или размер шага (DDAStepX для горизонтального масштабирования и DDAStepY для вертикального масштабирования) определяет, какое приращение получает значение DDA (currDDA) после определения каждого выходного пикселя, и многоотводная многофазная фильтрация повторяется с использованием следующего значения currDDA. Например, если значение шага меньше 1, то изображение подвергается повышающей дискретизации, и если значение шага больше 1, то изображение подвергается понижающей дискретизации. Если значение шага равно 1, масштабирования происходит. Кроме того, следует отметить, что для горизонтального и вертикального масштабирования можно использовать одинаковые или разные величины шага.
[00325] Выходные пиксели генерируются BCF 652 в том же порядке, что и входные пиксели (например, с использованием шаблона Байера). В настоящем варианте осуществления, входные пиксели можно классифицировать как четные или нечетные на основании их упорядочения. Например, на фиг.64 проиллюстрировано графическое представление положений входных пикселей (строка 713) и положений соответствующих выходных пикселей на основании различных значений DDAStep (строки 714-718). В этом примере, изображенная строка представляет строку пикселей красного (R) и зеленого (Gr) в первичных байеровских данных изображения. В целях горизонтальной фильтрации, пиксель красного в позиции 0.0 в строке 713 можно рассматривать как четный пиксель, пиксель зеленого в позиции 1.0 в строке 713 можно рассматривать как нечетный пиксель, и т.д. Для положений выходных пикселей, четные и нечетные пиксели можно определить на основании младшего бита в дробной части (16 младших битов) DDA 711. Например, предполагая, что DDAStep равен 1.25, как показано в строке 715, младший бит соответствует биту 14 DDA, поскольку этот бит дает разрешение 0,25. Таким образом, выходной пиксель красного в позиции DDA (currDDA) 0.0 можно рассматривать как четный пиксель (младший бит, бит 14, равен 0), выходной пиксель зеленого в позиции currDDA 1.0 (бит 14 равен 1), и т.д. Кроме того, хотя на фиг.64 показана фильтрация в горизонтальном направлении (с использованием DDAStepX), следует понимать, что определение четных и нечетных входных и выходных пикселей можно применять таким же образом в отношении вертикальной фильтрации (с использованием DDAStepY). В других вариантах осуществления, DDA 711 также можно использовать для отслеживания положений входных пикселей (например, вместо того, чтобы отслеживать положения нужных выходных пикселей). Кроме того, очевидно, что DDAStepX и DDAStepY можно присваивать одинаковые или разные значения. Кроме того, предполагая использование шаблона Байера, следует отметить, что начальный пиксель, используемый BCF 652, может быть любым из пикселей Gr, Gb, R или B в зависимости, например, от того, какой пиксель располагается на углу в активной области 312.
[00326] На основании вышеизложенного, четные/нечетные входные пиксели используются для генерации четных/нечетных выходных пикселей, соответственно. При условии, что положение выходного пикселя чередуется между четной и нечетной позициями, центральное положение входного пикселя источника (именуемое здесь “currPixel”) для целей фильтрации определяется округлением DDA до ближайшего четного или нечетного положения входного пикселя для четных или нечетных положений выходных пикселей (на основании DDAStepX), соответственно. Согласно варианту осуществления, где DDA 711a сконфигурирован для использования 16 битов для представления целой части и 16 битов для представления дробной части, currPixel можно определить для четных и нечетных позиций currDDA с использованием нижеследующих уравнений 6a и 6b:
четные положения выходных пикселей можно определить на основании битов [31:16]:
(currDDA+1,0) & 0×FFFE.0000 (6a)
нечетные положения выходных пикселей можно определить на основании битов [31:16]:
(currDDA)|0×0001.0000 (6b)
По существу, вышеприведенные уравнения представляют операцию округления, благодаря которой четные и нечетные позиции выходных пикселе, определяемые currDDA, округляются до ближайших четных и нечетных позиций входных пикселей, соответственно, для выбора currPixel.
[00327] Дополнительно, текущий индекс или фазу (currIndex) также можно определить в каждой позиции currDDA. Как рассмотрено выше, значения индекса или фазы представляют дробную межпиксельную позицию выходной позиции пикселя относительно позиций входных пикселей. Например, в одном варианте осуществления, между каждой входной позицией пикселя можно задать 8 фаз. Например, возвращаясь к фиг.64, 8 значений индекса 0-7 обеспечены между первым входным пикселем красного в позиции 0.0 и следующим входным пикселем красного в позиции 2.0. Аналогично, 8 значений индекса 0-7 обеспечены между первым входным пикселем зеленого в позиции 1.0 и следующим входным пикселем зеленого в позиции 3.0. В одном варианте осуществления, значения currIndex можно определить в соответствии с нижеприведенными уравнениями 7a и 7b для четных и нечетных положений выходных пикселей, соответственно:
четные положения выходных пикселей можно определить на основании битов [16:14]:
(currDDA+0,125) (7a)
нечетные положения выходных пикселей можно определить на основании битов [16:14]:
(currDDA+1,125) (7b)
Для нечетных позиций, дополнительный сдвиг на 1 пиксель эквивалентен добавлению смещения, равного четырем, к индексу коэффициента для нечетных положений выходных пикселей для учета смещения индекса между разными цветовыми компонентами относительно DDA 711.
[00328] После определения currPixel и currIndex в конкретном положении currDDA, процесс фильтрации может выбирать один или более соседних пикселей того же цвета на основании currPixel (выбранного центрального входного пикселя). В порядке примера, согласно варианту осуществления, где логика 709 горизонтального масштабирования включает в себя 5-отводный многофазный фильтр, и логика 710 вертикального масштабирования включает в себя 3-отводный многофазный фильтр, по два пикселя того же цвета по обе стороны currPixel в горизонтальном направлении можно выбирать для горизонтальной фильтрации (например, -2, -1, 0, +1, +2), и один пиксель того же цвета по обе стороны currPixel в вертикальном направлении можно выбирать для вертикальной фильтрации (например, -1, 0, +1). Кроме того, currIndex можно использовать как индекс выбора для выбора надлежащих коэффициентов фильтрации из таблицы 712 коэффициентов фильтрации для применения к выбранным пикселям. Например, с использованием варианта осуществления 5-отводной горизонтальной/3-отводной вертикальной фильтрации, пять таблиц глубиной 8 может быть обеспечено для горизонтальной фильтрации, и три таблицы глубиной 8 могут быть обеспечены для вертикальной фильтрации. Хотя таблицы 712 коэффициентов фильтрации проиллюстрированы как часть BCF 652, очевидно, что они могут, в некоторых вариантах осуществления, храниться в памяти, физически отдельной от BCF 652, например, в памяти 108.
[00329] Прежде чем перейти к более подробному рассмотрению операций горизонтального и вертикального масштабирования, обратимся к таблице 5, которая демонстрирует примеры того, как значения currPixel и currIndex определяются на основании различных позиций DDA с использованием разных значений DDAStep (например, применительно к DDAStepX или DDAStepY).
[00330] Для обеспечения примера, допустим, что выбран размер шага DDA (DDAStep) 1,5 (строка 716 на фиг.64), причем текущая позиция DDA (currDDA), начинающаяся с 0, указывает четную выходную позицию пикселя. Для определения currPixel, можно применять уравнение 6a, показанное ниже:
currDDA=0,0 (четный)
currPixel (определенный как биты [31:16] результата)=0;
Таким образом, в позиции currDDA 0.0 (строка 716), исходный входной центральный пиксель для фильтрации соответствует входному пикселю красного в позиции 0.0 строки 713.
[00331] Для определения currIndex при четной currDDA 0,0, можно применять уравнение 7a, как показано ниже:
currDDA=0,0 (четный)
currIndex (определенный как биты [16:14] результата =[000]=0;
Таким образом, в позиции currDDA 0.0 (строка 716), значение currIndex, равное 0, можно использовать для выбора коэффициентов фильтрации из таблицы 712 коэффициентов фильтрации.
[00332] Соответственно, фильтрация (которая может быть вертикальной или горизонтальной в зависимости от того, измеряется ли DDAStep в направлении X (горизонтальном) или Y (вертикальном)) может применяться на основании определенных значений currPixel и currIndex при currDDA 0,0, и DDA 711 увеличивается на DDAStep (1,5), и определяются следующие значения currPixel и currIndex. Например, в следующей позиции currDDA 1,5 (нечетной позиции), currPixel можно определить с использованием уравнения 6b следующим образом:
currDDA=0,0 (четный)
currPixel (определенный как биты [31:16] результата)=1;
Таким образом, в позиции currDDA 1.5 (строка 716), исходный входной центральный пиксель для фильтрации соответствует входному пикселю зеленого в позиции 1.0 строки 713.
[00333] Кроме того, currIndex при нечетной currDDA 1.5 можно определить с использованием уравнения 7b, как показано ниже:
currDDA=1,5 (нечетный)
currIndex (определенный как биты [16:14] результата)=[010]=2;
Таким образом, в позиции currDDA 1.5 (строка 716), значение currIndex, равное 2, можно использовать для выбора надлежащих коэффициентов фильтрации из таблицы 712 коэффициентов фильтрации. Фильтрация (которая может быть вертикальной или горизонтальной в зависимости от того, измеряется ли DDAStep в направлении X (горизонтальном) или Y (вертикальном)) может, таким образом, применяться с использованием этих значений currPixel и currIndex.
[00334] Затем DDA 711 снова увеличивается на DDAStep (1,5), в результате чего, получается значение currDDA равное 3,0. currPixel, соответствующий currDDA 3,0, можно определить с использованием уравнения 6a, как показано ниже:
currDDA=3,0 (четный)
currPixel (определенный как биты [31:16] результата)=4;
Таким образом, в позиции currDDA 3,0 (строка 716), исходный входной центральный пиксель для фильтрации соответствует входному пикселю красного в позиции 4.0 строки 713.
[00335] Затем currIndex при четной currDDA 3,0 можно определить с использованием уравнения 7a, как показано ниже:
currDDA=3,0 (четный)
currIndex (определенный как биты [16:14] результата))=[100]=4;
Таким образом, в позиции currDDA 3.0 (строка 716), значение currIndex, равное 4, можно использовать для выбора надлежащих коэффициентов фильтрации из таблицы 712 коэффициентов фильтрации. Очевидно, что DDA 711 может и дальше увеличиваться на DDAStep для каждого выходного пикселя, и фильтрацию (которая может быть вертикальной или горизонтальной в зависимости от того, измеряется ли DDAStep в направлении X (горизонтальном) или Y (вертикальном)) можно применять с использованием currPixel и currIndex, определенных для каждого значения currDDA.
[00336] Как рассмотрено выше, currIndex можно использовать как индекс выбора для выбора надлежащих коэффициентов фильтрации из таблицы 712 коэффициентов фильтрации для применения к выбранным пикселям. Процесс фильтрации может включать в себя получение исходных пиксельных значений вокруг центрального пикселя (currPixel), умножение каждого из выбранных пикселей на надлежащие коэффициенты фильтрации, выбранные из таблицы 712 коэффициентов фильтрации на основании currIndex, и суммирование результатов для получения значения выходного пикселя в положении, соответствующем currDDA. Кроме того, поскольку настоящий вариант осуществления использует 8 фаз между пикселями одного и того же цвета, с использованием варианта осуществления 5-отводной горизонтальной/3-отводной вертикальной фильтрации, пять таблиц глубиной 8 может быть обеспечено для горизонтальной фильтрации, и три таблицы глубиной 8 могут быть обеспечены для вертикальной фильтрации. В одном варианте осуществления, каждая из записей таблицы коэффициентов может включать в себя 16-битовое число с фиксированной запятой в формате дополнения до 2 с 3 битами целой части и 13 битами дробной части.
[00337] Кроме того, предполагая шаблон байеровского изображения, в одном варианте осуществления, компонент вертикального масштабирования может включать в себя четыре отдельных 3-отводных многофазных фильтра, по одному для каждой цветовой компоненты: Gr, R, B и Gb. Каждый из 3-отводных фильтров может использовать DDA 711 для управления пошаговым изменением текущего центрального пикселя и индекса для коэффициентов, как описано выше. Аналогично, компоненты горизонтального масштабирования могут включать в себя четыре отдельных 5-отводных многофазных фильтра, по одному для каждой цветовой компоненты: Gr, R, B и Gb. Каждый из 5-отводных фильтров может использовать DDA 711 для управления пошаговым изменением (например, через DDAStep) текущего центрального пикселя и индекса для коэффициентов. Однако следует понимать, что в других вариантах осуществления компоненты горизонтального и вертикального масштабирования могут использовать меньше или больше отводов.
[00338] Для граничных случаев, пиксели, используемые в процессе горизонтальной и вертикальной фильтрации, могут зависеть от соотношения текущей позиции DDA (currDDA) относительно границы кадр (например, границы, заданной активной областью 312 на фиг.23). Например, в горизонтальной фильтрации, если позиция currDDA, при сравнении с позицией центрального входного пикселя (SrcX) и шириной (SrcWidth) кадра (например, шириной 322 активной области 312 на фиг.23) указывает, что DDA 711 близок к границе, что обуславливает недостаток пикселей для осуществления 5-отводной фильтрации, то входные граничные пиксели одного цвета могут повторяться. Например, если выбранный центральный входной пиксель находится на левом краю кадра, то центральный пиксель может дублироваться дважды для горизонтальной фильтрации. Если центральный входной пиксель находится вблизи левого края кадра, в связи с чем, доступен только один пиксель между центральным входным пикселем и левым краем, то, в целях горизонтальной фильтрации, один доступный пиксель дублируется для обеспечения двух пиксельных значений слева от центрального входного пикселя. Кроме того, логика 709 горизонтального масштабирования может быть сконфигурирована таким образом, чтобы количество входных пикселей (включающих в себя исходный и дублированный пиксели) не превышало входную ширину. Это можно выразить следующим образом:
StartX=(((DDAInitX+0×0001.0000) & 0×FFFE.0000)>>16)
EndX=(((DDAInitX+DDAStepX*(BCFOutWidth-1))|0×0001,0000)>>16)
EndX - StartX <=SrcWidth-1
где DDAInitX представляет начальную позицию DDA 711, DDAStepX представляет значение шага DDA в горизонтальном направлении, и BCFOutWidth представляет ширину кадра, выводимого BCF 652.
[00339] Для вертикальной фильтрации, если позиция currDDA, при сравнении с позицией центрального входного пикселя (SrcY) и шириной (SrcHeight) кадра (например, шириной 322 активной области 312 на фиг.23) указывает, что DDA 711 близок к границе, что обуславливает недостаток пикселей для осуществления 3-отводный фильтрация, то входные граничные пиксели могут повторяться. Кроме того, логика 710 вертикального масштабирования может быть сконфигурирована таким образом, чтобы количество входных пикселей (включающих в себя исходный и дублированный пиксели) не превышало входную высоту. Это можно выразить следующим образом:
StartY=(((DDAInitY+0×0001.0000) & 0×FFFE.0000)>>16)
EndY=(((DDAInitY+DDAStepY*(BCFOutHeight-1))|0×0001,0000)>>16)
EndY - StartY <=SrcHeight-1
где DDAInitY представляет начальную позицию DDA 711, DDAStepY представляет значение шага DDA в вертикальном направлении, и BCFOutHeight представляет ширину кадра, выводимого BCF 652.
[00340] На фиг.65 показана блок-схема операций, изображающая способ 720 для применения фильтрации с компенсацией биннинга к данным изображения, принятым блоком 150 предварительной обработки в соответствии с вариантом осуществления. Очевидно, что способ 720, представленный на фиг.65, можно применять, как вертикальному, так и к горизонтальному масштабированию. Начиная с этапа 721 инициализируется DDA 711, и определяется значение шага DDA (которое может соответствовать DDAStepX для горизонтального масштабирования и DDAStepY для вертикального масштабирования). Затем, на этапе 722, на основании DDAStep, определяется текущая позиция DDA (currDDA). Как рассмотрено выше, currDDA может соответствовать положению выходного пикселя. С использованием currDDA, способ 720 может определять центральный пиксель (currPixel) из входных пиксельных данных, который можно использовать для фильтрации с компенсацией биннинга для определения соответствующего выходного значения в currDDA, как указано на этапе 723. Затем, на этапе 724, индекс, соответствующий currDDA (currIndex), можно определить на основании дробной межпиксельной позиции currDDA относительно входных пикселей (например, строки 713 на фиг.64). В порядке примера, согласно варианту осуществления, где DDA включает в себя 16 битов целой части и 16 битов дробной части, currPixel можно определить в соответствии с уравнениями 6a и 6b, и currIndex можно определить в соответствии с уравнениями 7a и 7b, как показано выше. Хотя здесь, в порядке одного примера, описана конфигурация 16-битовой целой части и 16-битовой дробной части, очевидно, что, в соответствии с настоящим изобретением, можно использовать и другие конфигурации DDA 711. В порядке примера, могут быть сконфигурированы другие варианты осуществления DDA 711, включающего в себя 12-битовую целую часть и 20-битовую дробную часть, 14-битовую целую часть и 18-битовую дробную часть и т.д.
[00341] Определив currPixel и currIndex, исходные пиксели одного цвета вокруг currPixel можно выбирать для многоотводной фильтрации, как указано этапом 725. Например, как рассмотрено выше, один вариант осуществления может использовать 5-отводную многофазную фильтрацию в горизонтальном направлении (например, посредством выбора 2 пикселей одного и того же цвета по обе стороны currPixel) и может использовать 3-отводную многофазную фильтрацию в вертикальном направлении (например, посредством выбора 1 пикселя одного цвета по обе стороны currPixel). Затем, на этапе 726, после выбора исходных пикселей, коэффициенты фильтрации можно выбирать из таблицы 712 коэффициентов фильтрации BCF 652 на основании currIndex.
[00342] После этого, на этапе 727, фильтрация может применяться к исходным пикселям для определения значения выходного пикселя, соответствующего позиции, представленной currDDA. Например, в одном варианте осуществления, исходные пиксели можно умножать на их соответствующие коэффициенты фильтрации, и результаты можно суммировать для получения выходного пиксельного значения. Направление, в котором применяется фильтрация на этапе 727 может быть вертикальным или горизонтальным в зависимости от того, измеряется ли DDAStep в направлении X (горизонтальном) или Y (вертикальном). Наконец, на этапе 263, DDA 711 увеличивается на DDAStep на этапе 728, и способ 720 возвращается к этапу 722, за счет чего, следующее выходное пиксельное значение определяется с использованием рассмотренных здесь методов фильтрации с компенсацией биннинга.
[00343] На фиг.66 более подробно проиллюстрирован этап 723 для определения currPixel способа 720 в соответствии с одним вариантом осуществления. Например, этап 723 может включать в себя подэтап 729 определения, является ли положение выходного пикселя, соответствующее currDDA (из этапа 722) четным или нечетным. Как рассмотрено выше, четный или нечетный выходной пиксель можно определить на основании младшего бита currDDA на основании DDAStep. Например, при условии, что DDAStep равен 1,25 значение currDDA, равное 1,25 можно определить как нечетное, поскольку младший бит (соответствующий биту 14 дробной части DDA 711) имеет значение 1. Для значения currDDA, равного 2,5 бит 14 равен 0, таким образом, указывая четное положение выходного пикселя.
[00344] На логике 730, принятия решения, производится определение, является ли положение выходного пикселя, соответствующее currDDA, четным или нечетным. Если выходной пиксель является четным, логика 730 принятия решения переходит к подэтапу 731, на котором currPixel определяется посредством увеличения значения currDDA на 1 и округления результат до ближайшего четного положения входного пикселя, что представлено вышеприведенным уравнением 6a. Если выходной пиксель является нечетным, то логика 730 принятия решения переходит к подэтапу 732, на котором currPixel определяется посредством округления значения currDDA до ближайшего нечетного положения входного пикселя, что представлено вышеприведенным уравнением 6b. Затем значение currPixel может применяться к этапу 725 способа 720 для выбора исходных пикселей для фильтрации, как рассмотрено выше.
[00345] На фиг.67 более подробно проиллюстрирован этап 724 для определения currIndex из способа 720 в соответствии с одним вариантом осуществления. Например, этап 724 может включать в себя подэтап 733 определения, является ли положение выходного пикселя, соответствующее currDDA (из этапа 722), четным или нечетным. Это определение может осуществляться аналогично этапу 729 на фиг.66. На логике 734 принятия решения, производится определение, является ли положение выходного пикселя, соответствующее currDDA, четным или нечетным. Если выходной пиксель является четным, логика 734 принятия решения переходит к подэтапу 735, на котором currIndex определяется посредством увеличения значения currDDA на один шаг индекса, и currIndex определяется на основании младшего бита целой части и двух старших битов дробной части DDA 711. Например, согласно варианту осуществления, в котором 8 фаз обеспечены между каждым пикселем одного и того же цвета, и в котором DDA включает в себя 16 битов целой части и 16 битов дробной части, один шаг индекса может соответствовать 0.125, и currIndex можно определить на основании битов [16:14] значения currDDA, увеличенного на 0.125 (например, уравнение 7a). Если выходной пиксель является нечетным, логика 734 принятия решения переходит к подэтапу 736, на котором currIndex определяется посредством увеличения значения currDDA на один шаг индекса и сдвига на один пиксель, и currIndex определяется на основании младшего бита целой части и двух старших битов дробной части DDA 711. Таким образом, согласно варианту осуществления, в котором 8 фаз обеспечены между каждым пикселем одного и того же цвета, и в котором DDA включает в себя 16 битов целой части и 16 битов дробной части, один шаг индекса может соответствовать 0,125, сдвиг на один пиксель может соответствовать 1,0 (сдвиг на 8 шагов индекса до следующего пикселя того же цвета), и currIndex можно определить на основании битов [16:14] значения currDDA, увеличенного на 1,125 (например, уравнение 7b).
[00346] Хотя проиллюстрированный здесь вариант осуществления предусматривает BCF 652 как компонент блока 150 предварительной обработки пикселей, другие варианты осуществления могут включать BCF 652 в конвейер обработки первичных данных изображения конвейера 82 ISP, который, как дополнительно рассмотрено ниже, может включать в себя логику обнаружения/коррекции дефектных пикселей, блоки коэффициента усиления/смещения/компенсация, логику шумопонижения, логику коррекции затенения объектива и логику демозаики. роме того, в вариантах осуществления, где вышеупомянутые логика обнаружения/коррекции дефектных пикселей, блоки коэффициента усиления/смещения/компенсация, логика шумопонижения, логика коррекции затенения объектива не опираются на линейное размещение пикселей, BCF 652 может быть включен в логику демозаики для осуществления фильтрации с компенсацией биннинга и повторное размещение пикселей до демозаики, поскольку демозаика, в общем случае, не опирается на равномерное пространственное размещение пикселей. Например, в одном варианте осуществления, BCF 652 может быть включен где-то между входом датчика и логикой демозаики, причем временная фильтрация и/или обнаружение/коррекция дефектных пикселей применяются к первичным данным изображения до компенсации биннинга.
[00347] Как рассмотрено выше, выходной сигнал BCF 652, который может быть выходным сигналом FEProcOut (109), имеющим равномерно распределенные в пространстве данные изображения (например, выборка 702 на фиг.62), может перенаправляться на логику 82 конвейерной обработки ISP для дополнительной обработки. Однако, прежде чем перенести фокус этого рассмотрения на логику 82 конвейерной обработки ISP, обратимся к более детализированному описанию различных функциональных возможностей, которые могут обеспечиваться блоками (например, 142 и 144) статистической обработки которые можно реализовать в логике 80 предварительной обработки ISP.
[00348] Возвращаясь к общему описанию блоков 142 и 144, статистической обработки, эти блоки могут быть сконфигурированы для сбора различных статистических данных о датчиках изображения, которые захватывают и обеспечивают первичные сигналы изображения (Sif0 и Sif1), например, статистике, относящейся к автоматической установке экспозиции, автоматическому балансу белого, автофокусировке, обнаружению мерцания, компенсации уровня черного и коррекции затенения объектива и т.д. При этом блоки 142 и 144 статистической обработки могут сначала применять одну или более операций обработки изображений к своим соответствующим входным сигналам, Sif0 (от Sensor0) и Sif1 (от Sensor1).
[00349] Например, на фиг.68 проиллюстрирована более детализированная блок-схема блока 142 статистической обработки, связанного с Sensor0 (90a) в соответствии с одним вариантом осуществления. Как показано, блок 142 статистической обработки может включать в себя следующие функциональные блоки: логику 738 обнаружения и коррекции дефектных пикселей, логику 739 компенсации уровня черного (BLC), логику 740 коррекции затенения объектива, логику 741 обратной BLC, и логику 742 сбора статистики. Каждый из этих функциональных блоков будет рассмотрен ниже. Кроме того, следует понимать, что блок 144 статистической обработки, связанный с Sensor1 (90b) можно реализовать аналогичным образом.
[00350] Первоначально, выходной сигнал логики 146 выбора (например, Sif0 или SifIn0) принимается предварительной логикой 738 коррекции дефектных пикселей. Очевидно, что “дефектные пиксели” следует понимать в смысле пикселей формирования изображения в датчике(ах) 90 изображения, которым не удается точно воспринимать уровни света. Наличие дефектных пикселей может объясняться рядом факторов, и они могут включать в себя “горячие” (или с утечкой) пиксели, “залипшие” пиксели и “мертвые пиксели”. “Горячий” пиксель, в общем случае, выглядит более ярким, чем недефектный пиксель при условии одного и того же количества света в одном и том же пространственном положении. Горячие пиксели могут возникать вследствие отказов при сбросе и/или высокой утечки. Например, горячий пиксель может демонстрировать сверхнормативную утечку заряда относительно недефектных пикселей и, таким образом, может выглядеть более ярким, чем недефектные пиксели. Дополнительно, “мертвые” и “залипшие” пиксели могут возникать в результате загрязнений, например, пыли или других следовых материалов, загрязняющих датчик изображения в процессе изготовления и/или сборки, из-за чего некоторые дефектные пиксели могут быть темнее или ярче недефектного пикселя, или дефектный пиксель может фиксироваться на конкретном значении независимо от количества света, фактически попадающего на него. Дополнительно, мертвые и залипшие пиксели также могут быть обусловлены отказами схемы, которые происходят при эксплуатации датчика изображения. В порядке примера, залипший пиксель может выглядеть как постоянно включенный (например, полностью заряженный) и, таким образом, более яркий, тогда как мертвый пиксель выглядит, как постоянно выключенный.
[00351] Логика 738 обнаружения и коррекции дефектных пикселей (DPDC) в логике 80 предварительной обработки ISP может корректировать (например, заменять неправильные пиксельные значения) дефектные пиксели до того, как они будут учтены при сборе статистики (например, 742). В одном варианте осуществления, коррекция дефектных пикселей осуществляется независимо для каждой цветовой компоненты (например, R, B, Gr и Gb для шаблона Байера). В общем случае, логика 738 предварительной обработки DPDC может обеспечивать коррекцию динамических дефектов, при которой положения дефектных пикселей определяются автоматически на основании направленных градиентов, вычисляемых с использованием соседних пикселей того же цвета. Как будет понятно, дефекты могут быть “динамическими” в том смысле, что характеризация пикселя как дефектного в данный момент времени может зависеть от данных изображения в соседних пикселях. В порядке примера, залипший пиксель, который всегда имеет максимальную яркость, может не рассматриваться как дефектный пиксель, если залипший пиксель располагается в области текущего изображения, где преобладают более яркие или белый цвета. Напротив, если залипший пиксель находится в области текущего изображения, где преобладают черный или более темные цвета, то залипший пиксель можно идентифицировать как дефектный пиксель в ходе обработки логикой 738 DPDC и соответственно корректировать.
[00352] Логика 738 DPDC может использовать один или более горизонтально соседних пикселей одного и того же цвета по обе стороны текущего пикселя для определения, является ли текущий пиксель дефектным, с использованием направленных градиентов от пикселя к пикселю. Если текущий пиксель идентифицируется как дефектный, значение дефектного пикселя можно заменить значением соседнего по горизонтали пикселя. Например, в одном варианте осуществления, используется пять горизонтально соседних пикселей одного и того же цвета, находящиеся внутри границы первичного кадра 310 (фиг.23), причем пять горизонтально соседних пикселей включают в себя текущий пиксель и по два соседних пикселя с каждой стороны. Таким образом, согласно фиг.69, для данной цветовой компоненты c и для текущего пикселя P, логика 738 DPDC может рассматривать горизонтально соседние пиксели P0, P1, P2 и P3. Однако следует отметить, что в зависимости от положения текущего пикселя P, пиксели вне первичного кадра 310 не рассматриваются при вычислении градиентов от пикселя к пикселю.
[00353] Например, как показано на фиг.69, в случае 743 “левого края”, текущий пиксель P находится на самом левом краю первичного кадра 310, и, таким образом, соседние пиксели P0 и P1 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P, P2 и P3 (N=3). В случае 744 “левый край +1”, текущий пиксель P находится в одном пиксельном блоке от самого левого края первичного кадра 310, и, таким образом, пиксель P0 не рассматривается. В результате, остаются только пиксели P1, P, P2 и P3 (N=4). Кроме того, в “центрированном” случае 745, пиксели P0 и P1 слева от текущего пикселя P и пиксели P2 и P3 справа от текущего пикселя P находятся внутри границы первичного кадра 310, и, таким образом, все соседние пиксели P0, P1, P2 и P3 (N=5) рассматриваются при вычислении градиентов от пикселя к пикселю. Дополнительно, аналогичные случаи 746 и 747 могут иметь место при достижении самого правого края первичного кадра 310. Например, в случае 746 “правый край -1”, текущий пиксель P находится в одном пиксельном блоке от самого правого края первичного кадра 310, и, таким образом, пиксель P3 не рассматривается (N=4). Аналогично, в случае 747 “правого края”, текущий пиксель P находится на самом правом краю первичного кадра 310, и, таким образом, оба соседних пикселя P2 и P3 не рассматриваются (N=3).
[00354] В проиллюстрированном варианте осуществления, для каждого соседнего пикселя (k=0~3) внутри границы изображения (например, первичный кадр 310), градиенты от пикселя к пикселю можно вычислять следующим образом:
, для (только для k в первичном кадре) (8)
После определения градиентов от пикселя к пикселю, обнаружение дефектных пикселей может осуществляться логикой 738 DPDC следующим образом. Прежде всего, предполагается, что пиксель является дефектным, если некоторое количество его градиентов Gk находятся на конкретном пороге или ниже, который обозначается переменной dprTh. Таким образом, для каждого пикселя, накапливается счетчик (C) количества градиентов для соседних пикселей внутри границ изображения, которые находятся на пороге dprTh или ниже. В порядке примера, для каждого соседнего пикселя внутри первичного кадра 310, накопленный счетчик C градиентов Gk, которые находятся на пороге dprTh или ниже, можно вычислить следующим образом:
C=(Gk dprTh), (9)
для (только для k в первичном кадре)
Очевидно, что в зависимости от цветовых компонент, пороговое значение dprTh может изменяться. Затем, если определено, что накопленный счетчик C меньше или равен максимальному счетчику, обозначенному переменной dprMaxC, то пиксель можно рассматривать как дефектный. Эта логика выражена ниже:
если (CdprMaxC), то пиксель является дефектным. (10)
[00355] Дефектные пиксели заменяются с использованием ряда соглашений по замене. Например, в одном варианте осуществления, дефектный пиксель можно заменить пикселем, находящимся непосредственно слева от него, P1. При граничном условии (например, P1 находится вне первичного кадра 310), дефектный пиксель можно заменить пикселем, находящимся непосредственно справа от него, P2. Кроме того, следует понимать, что значения замены могут сохраняться или распространяться на последующие операции обнаружения дефектных пикселей. Например, в отношении набора горизонтальных пикселей, показанного на фиг.69, если P0 или P1 ранее были идентифицированы логикой 738 DPDC как дефектные пиксели, их соответствующие значения замены можно использовать для обнаружения дефектных пикселей и замены текущего пикселя P.
[00356] Чтобы подытожить рассмотренные выше методы обнаружения и коррекции дефектных пикселей, обратимся к фиг.70, где в виде блок-схемы операций, изображен такой процесс, обозначенный ссылочной позицией 748. Как показано, процесс 748 начинается с этапа 749, на котором принимается текущий пиксель (P) и идентифицируется набор соседних пикселей. В соответствии с вышеописанным вариантом осуществления, соседние пиксели могут включать в себя два горизонтальных пикселя одной и той же цветовой компоненты по обе стороны текущего пикселя (например, P0, P1, P2 и P3). Затем, на этапе 750, горизонтальные градиенты от пикселя к пикселю вычисляются относительно каждого соседнего пикселя в первичном кадре 310, как описано выше в уравнении 8. После этого, на этапе 751, определяется счетчик C количества градиентов, которые меньше или равны конкретному порогу dprTh. Как показано на логике 752 принятия решения, если C меньше или равен dprMaxC, то процесс 748 переходит к этапу 753, и текущий пиксель идентифицируется как дефектный. Затем дефектный пиксель корректируется на этапе 754 с использованием значения замены. Дополнительно, возвращаясь к логике 752 принятия решения, если C больше dprMaxC, то процесс переходит к этапу 755, и текущий пиксель идентифицируется как не дефектный, и его значение не изменяется.
[00357] Следует отметить, что методы обнаружения/коррекции дефектных пикселей, применяемые при предварительной статистической обработке ISP, могут быть менее надежными, чем обнаружение/коррекция дефектных пикселей, которая осуществляется в логике 82 конвейерной обработки ISP. Например, как будет более подробно рассмотрено ниже, обнаружение/коррекция дефектных пикселей, осуществляемая в логике 82 конвейерной обработки ISP, может, помимо коррекции динамических дефектов, дополнительно обеспечивать коррекцию фиксированных дефектов, в которой положения дефектных пикселей заранее известны и загружены в одну или более таблиц дефектов. Кроме того, коррекция динамических дефектов в логике 82 конвейерной обработки ISP также может рассматривать пиксельные градиенты в горизонтальном и вертикальном направлениях, и также может обеспечивать обнаружение/коррекцию спеклов, что будет рассмотрено ниже.
[00358] Согласно фиг.68, выходной сигнал логики 738 DPDC затем поступает на логику 739 компенсации уровня черного (BLC). Логика 739 BLC может обеспечивать коэффициент цифрового усиления, смещение и отсечку независимо для каждой цветовой компоненты “c” (например, R, B, Gr и Gb для шаблона Байера) на пикселях, используемых для сбора статистики. Например, как выражено следующей операцией, входное значение для текущего пикселя сначала смещается на знаковое значение, и затем умножается на коэффициент усиления.
, (11)
где X представляет входное пиксельное значение для данной цветовой компоненты c (например, R, B, Gr или Gb), O[c] представляет знаковое 16-битовое смещение для текущей цветовой компоненты c, и G[c] представляет значение коэффициента усиления для цветовой компоненты c. В одном варианте осуществления, коэффициент усиления G[c] может представлять собой 16-битовое беззнаковое число с 2 битами целой части и 14 битами дробной части (например, в представлении 2.14 с плавающей запятой), и коэффициент усиления G[c] можно применять с округлением. Исключительно в порядке примера, коэффициент усиления G[c] может принимать значения в пределах от 0 до 4X (например, 4-кратное входное пиксельное значение).
[00359] Затем, как показано ниже уравнением 12, вычисленное значение Y, которое является знаковым, можно затем обрезать до минимального и максимального диапазона:
Y=(Y<min[c])?min[c]:(Y>max[c])?max[c]:Y) (12)
[00360] Переменные min[c] и max[c] могут представлять знаковый 16-битовый “значения отсечки для минимального и максимального выходных значений, соответственно. В одном варианте осуществления, логика 739 BLC также может быть сконфигурирована для поддержания счетчика количества пикселей, которые были отсечены выше и ниже максимума и минимума, соответственно, для каждой цветовой компоненты.
[00361] Затем выходной сигнал логики 739 BLC перенаправляется на логику 740 коррекции затенения объектива (LSC). Логика 740 LSC может быть сконфигурирована для применения надлежащего коэффициента усиления на попиксельной основе для компенсации спадов интенсивности, которые, в общем случае, приближенно пропорциональны расстоянию от оптического центра объектива 88 устройства 30 формирования изображения. Очевидно, что, такие спады могут быть результатом геометрической оптики объектива. В порядке примера, объектив, обладающий идеальными оптическими свойствами, можно смоделировать четвертой степенью косинуса угла падения, cos4(θ), так называемым законом cos4. Однако, поскольку изготовление объектива не совершенно, различные нарушения в объективе могут приводить к отклонению оптических свойств от гипотетической модели cos4. Например, большинство нарушений обычно имеет место на более тонком краю объектива. Дополнительно, неравномерности в шаблонах затенения объектива также может приводить к тому, что микролинзовая матрица в датчике изображения не будет полностью выровнена с матрицей цветовых фильтров. Кроме того, инфракрасный (ИК) фильтр в некоторых объективах может приводить к тому, что спад будет зависеть от источника света, что позволяет адаптировать коэффициенты усиления затенения объектива в зависимости от обнаруженного источника света.
[00362] На фиг.71 проиллюстрирован трехмерный профиль 756, изображающий зависимость интенсивности света от позиции пикселя для типичного объектива. Как показано, интенсивность света вблизи центра 757 объектива постепенно спадает к углам или краям 758 объектива. Неравномерности затенения объектива, изображенные на фиг.71, более детально проиллюстрированы на фиг.72, которая демонстрирует цветной чертеж изображения 759, который демонстрирует спады интенсивности света к углам и краям. В частности, следует отметить, что интенсивность света вблизи центра изображения представляется более высокой, чем интенсивность света на углах и/или краях изображения.
[00363] В соответствии с вариантами осуществления настоящего изобретения, коэффициенты усиления от коррекции затенения объектива можно задать в виде двухмерной сетки коэффициентов усиления для каждого цветового канала (например, Gr, R, B, Gb для байеровского фильтра). Точки сетки коэффициентов усиления могут распределяться с фиксированными горизонтальным и вертикальным интервалами в первичном кадре 310 (фиг.23). Как рассмотрено выше на фиг.23, первичный кадр 310 может включать в себя активную область 312, которая задает область, в которой осуществляется обработка для конкретной операции обработки изображений. В отношении операции коррекции затенения объектива, активная область обработки, которая может именоваться областью LSC, задана в первичной области 310 кадра. Как будет рассмотрено ниже, область LSC должна находиться полностью внутри или на границах сетки коэффициентов усиления, иначе результаты могут быть неопределенными.
[00364] Например, на фиг.73 показаны область 760 LSC и сетка 761 коэффициентов усиления, которые можно задать в первичном кадре 310. Область 760 LSC может иметь ширину 762 и высоту 763 и может задаваться смещением 764 по оси x и смещением 765 по оси y относительно границы первичного кадра 310. Также обеспечены смещения сетки (например, смещение 766 сетки по оси x и смещение 767 сетки по оси y) от основы 768 коэффициентов 761 усиления сетки до первого пикселя 769 в области 760 LSC. Эти смещения могут быть в первом интервале сетки для данной цветовой компоненты. Интервалы 770 и 771 точек сетки в горизонтальном направлении (x) и вертикальном направлении (y), соответственно, можно задавать независимо для каждого цветового канала.
[00365] Как рассмотрено выше, предполагая использование матрицы байеровских цветовых фильтров, можно задать 4 цветовых канала (R, B, Gr и Gb) коэффициентов усиления сетки. В одном варианте осуществления, может быть доступно всего 4K (4096) точек сетки, и для каждого цветового канала, может быть обеспечен базовый адрес для начального положения коэффициентов усиления сетки, например, с использованием указателя. Кроме того, горизонтальный (770) и вертикальный (771) интервалы точек сетки можно задать в отношении пикселей с разрешением в одну цветовую плоскость и в некоторых вариантах осуществления можно обеспечить интервалы точек сетки, различающиеся степенью 2, например, 8, 16, 32, 64, или 128 и т.д., в горизонтальном и вертикальном направлениях. Очевидно, что, используя степень 2, можно добиться эффективной реализации интерполяции коэффициента усиления с использованием операций сдвига (например, деления) и сложения. С использованием этих параметров, одни и те же значения коэффициента усиления можно использовать даже когда область обрезки датчика изображения изменяется. Например, для выравнивания точек сетки с обрезанной областью необходимо обновлять лишь несколько параметров (например, обновлять смещения 770 и 771 сетки) вместо того, чтобы обновлять все значения коэффициента усиления сетки. Исключительно в порядке примера, это может оказаться полезным, когда обрезка используется в ходе операций цифровой трансфокации. Кроме того, хотя сетка 761 коэффициентов усиления, показанная согласно варианту осуществления, представленному на фиг.73, изображена имеющей, в общем случае, равноразнесенные точки сетки, следует понимать, что в других вариантах осуществления, точки сетки не обязаны быть равноразнесенными. Например, в некоторых вариантах осуществления, точки сетки могут распределяться неравномерно (например, логарифмически), таким образом, что точки сетки менее сконцентрированы в центре области 760 LSC, но более сконцентрированы по углам области 760 LSC, где искажение затенения объектива обычно более заметно.
[00366] В соответствии с раскрытыми здесь методами коррекции затенения объектива, когда положение текущего пикселя располагается вне области 760 LSC, коэффициент усиления не применяется (например, пиксель остается неизменным). Когда положение текущего пикселя находится в положении сетки коэффициентов усиления, можно использовать значение коэффициента усиления в этой конкретной точке сетки. Однако когда положение текущего пикселя находится между точками сетки, коэффициент усиления можно интерполировать с использованием билинейной интерполяции. Ниже, на фиг.74, приведен пример интерполяции коэффициента усиления для положения пикселя “G”.
[00367] Как показано на фиг.74, пиксель G находится между точками G0, G1, G2 и G3 сетки, которые могут соответствовать верхнему левому, верхнему правому, нижнему левому и нижнему правому коэффициентам усиления, соответственно, относительно положения текущего пикселя G. Горизонтальный и вертикальный размер интервала сетки представлены X и Y, соответственно. Дополнительно, ii и jj представляют горизонтальное и вертикальное смещения пикселя, соответственно, относительно позиции верхнего левого коэффициент усиления G0. На основании этих факторов, коэффициент усиления, соответствующий позиции G, можно, таким образом, интерполировать следующим образом:
(13a)
Затем члены в вышеприведенном уравнении 13a можно комбинировать для получения следующего выражения:
(13b)
В одном варианте осуществления, способ интерполяции может осуществляться с приращениями, а не с использованием множителя на каждом пикселе, что позволяет снизить вычислительную сложность. Например, член (ii)(jj) можно реализовать с использованием сумматора, который может быть первоначально установлен равным 0 в положении (0, 0) сетки 761 коэффициентов усиления и увеличиваться на текущий номер строки каждый раз, когда текущий номер столбца увеличивается на пиксель. Как рассмотрено выше, поскольку значения X и Y можно выбирать как степени двойки, интерполяция коэффициента усиления может осуществляться с использованием простых операций сдвига. Таким образом, множитель необходим в точке G0 сетки (а не на каждом пикселе), и только операции сложения необходимы для определения интерполированного коэффициента усиления для остальных пикселей.
[00368] В некоторых вариантах осуществления, интерполяция коэффициентов усиления между точками сетки может использовать 14-битовую точность, и коэффициенты усиления сетки могут быть беззнаковыми 10-битовыми значениями с 2 битами целой части и 8 битами дробной части (например, в представлении 2.8 с плавающей запятой). С использованием этого соглашения, коэффициент усиления может принимать значения в пределах от 0 до 4X, и разрешение по коэффициенту усиления между точками сетки может составлять 1/256.
[00369] Методы коррекции затенения объектива можно дополнительно проиллюстрировать процессом 772, показанным на фиг.75. Как показано, процесс 772 начинается с этапа 773, на котором позиция текущего пикселя определяется относительно границ области 760 LSC, показанной на фиг.73. Затем логика 774 принятия решения определяет, находится ли позиция текущего пикселя в области 760 LSC. Если позиция текущего пикселя находится вне области 760 LSC, процесс 772 переходит к этапу 775, и коэффициент усиления не применяется к текущему пикселю (например, пиксель остается неизменным).
[00370] Если позиция текущего пикселя находится в области 760 LSC, процесс 772 переходит к логике 776 принятия решения, на которой дополнительно производится определение, соответствует ли позиция текущего пикселя точке сетки в сетке 761 коэффициентов усиления. Если позиция текущего пикселя соответствует точке сетки, то значение коэффициента усиления в этой точке сетки выбирается и применяется к текущему пикселю, как показано на этапе 777. Если позиция текущего пикселя не соответствует точке сетки, то процесс 772 переходит к этапу 778, и коэффициент усиления интерполируется на основании граничных точек сетки (например, G0, G1, G2 и G3 на фиг.74). Например, интерполированный коэффициент усиления можно вычислить в соответствии с уравнениями 13a и 13b, как рассмотрено выше. После этого, процесс 772 заканчивается на этапе 779, на котором интерполированный коэффициент усиления из этапа 778 применяется к текущему пикселю.
[00371] Очевидно, что процесс 772 может повторяться для каждого пикселя данных изображения. Например, на фиг.76 проиллюстрирован трехмерный профиль, изображающий коэффициенты усиления, которые могут применяться к каждой позиции пикселя в области LSC (например, 760). Как показано, коэффициент усиления, применяемый в углах 780 изображения, в общем случае, может быть больше, чем коэффициент усиления, применяемый к центру 781 изображения вследствие большего спада интенсивности света в углах, как показано на фиг.71 и 72. С использованием описанных здесь методов коррекции затенения объектива, возникновение спадов интенсивности света в изображении можно ослабить или, по существу, исключить. Например, на фиг.77 приведен пример того, как может выглядеть цветной чертеж изображения 759 из фиг.72 после применения коррекции затенения объектива. Как показано, по сравнению с исходным изображением из фиг.72, общая интенсивность света, в общем случае, является более однородной по изображению. В частности, интенсивность света вблизи центра изображения может быть, по существу, равна значениям интенсивности света на углах и/или краях изображения. Дополнительно, как упомянуто выше, вычисление интерполированного коэффициента усиления (уравнения 13a и 13b) можно, в некоторых вариантах осуществления, заменить аддитивной “дельтой” между точками сетки, воспользовавшись преимуществом структуры последовательного увеличения номеров столбца и строки. Очевидно, что это позволяет снизить вычислительную сложность.
[00372] В дополнительных вариантах осуществления, помимо использования коэффициентов усиления сетки, используется глобальный коэффициент усиления для каждой цветовой компоненты, который масштабируется как функция расстояния от центра изображения. Центр изображения можно обеспечить как входной параметр и можно оценивать, анализируя амплитуду интенсивности света каждого пикселя изображения в однородно освещенном изображении. Радиальное расстояние между идентифицированным центральным пикселем и текущим пикселем, затем можно использовать для получения линейно масштабированного радиального коэффициента усиления, Gr, как показано ниже:
(14)
где Gp[c] представляет параметр глобального коэффициента усиления для каждой цветовой компоненты c (например, компонент R, B, Gr и Gb для шаблона Байера), и где R представляет радиальное расстояние между центральным пикселем и текущим пикселем.
[00373] Согласно фиг.78, которая демонстрирует рассмотренную выше область 760 LSC, расстояние R можно вычислять или оценивать с использованием нескольких методов. Как показано, пиксель C, соответствующий центру изображения, может иметь координаты (x0, y0), и текущий пиксель G может иметь координаты (xG, yG). В одном варианте осуществления, логика 740 LSC может вычислять расстояние R с использованием следующего уравнения:
(15)
[00374] В другом варианте осуществления, для получения оценочного значения для R можно использовать упрощенную формулу оценивания, показанную ниже.
(16)
В уравнении 16, оценочные коэффициенты α и β можно масштабировать до 8-битовых значений. Исключительно в порядке примера, в одном варианте осуществления, α может быть равен приблизительно 123/128, и β может быть равен приблизительно 51/128 для обеспечения оценочного значения для R. При использовании этих значений коэффициентов, наибольшая ошибка может составлять приблизительно 4%, при средней ошибке приблизительно 1,3%. Таким образом, несмотря на то, что метод оценивания может быть несколько менее точным, чем использование способа вычисления при определении R (уравнение 15), граница ошибки достаточно низка, что позволяет использовать оценочные значения R для определения радиальных компонент коэффициента усиления для существующих методов коррекции затенения объектива.
[00375] Затем радиальный коэффициент усиления Gr можно умножить на интерполированное значение коэффициента G усиления сетки (уравнения 13a и 13b) для текущего пикселя для определения полного коэффициента усиления, который может применяться к текущему пикселю. Выходной пиксель Y получается посредством умножения входного пиксельного значение X на полный коэффициент усиления, как показано ниже:
(17)
Таким образом, в соответствии с настоящим изобретением, коррекция затенения объектива может осуществляться с использованием только интерполированного коэффициента усиления, совместно интерполированного коэффициента усиления и радиальных компонент коэффициента усиления. Альтернативно, коррекция затенения объектива также может осуществляться с использованием только радиального коэффициента усиления совместно с таблицей радиальной сетки, которая компенсирует ошибки радиальной аппроксимации. Например, вместо прямоугольной сетки 761, коэффициентов усиления, показанной на фиг.73, может быть обеспечена радиальная сетка коэффициентов усиления, имеющая множество точек сетки, задающих коэффициенты усиления в радиальном и угловом направлениях. Таким образом, при определении коэффициента усиления для применения к пикселю, который не выровнен с одной из точек радиальный сетки в области 760 LSC, интерполяцию можно применять с использованием четырех точек сетки, окружающих пиксель, для определения надлежащего интерполированного коэффициента усиления затенения объектива.
[00376] На фиг.79 использование интерполированной и радиальной компонент коэффициента усиления в коррекции затенения объектива проиллюстрировано процессом 782. Следует отметить, что процесс 782 может включать в себя этапы, аналогичные этапам процесса 772, описанного выше на фиг.75. Соответственно, такие этапы обозначены аналогичными ссылочными позициями. Начиная с этапа 773, принимается текущий пиксель и определяется его положение относительно области 760 LSC. Затем логика 774 принятия решения определяет, находится ли позиция текущего пикселя в области 760 LSC. Если позиция текущего пикселя находится вне области 760 LSC, процесс 782 переходит к этапу 775, и коэффициент усиления не применяется к текущему пикселю (например, пиксель остается неизменным). Если позиция текущего пикселя находится в области 760 LSC, то процесс 782 может одновременно перейти к этапу 783 и логике 776 принятия решения. На этапе 783 извлекаются данные, идентифицирующие центр изображения. Как рассмотрено выше, определение центра изображения может включать в себя анализ амплитуд интенсивность света для пикселей при однородном освещении. Это может происходить, например, в ходе калибровки. Таким образом, следует понимать, что этап 783 не обязательно предусматривает повторяющееся вычисление центра изображения для обработки каждого пикселя, но может подразумевать извлечение данных (например, координат) ранее определенного центра изображения. После идентификации центра изображения, процесс 782 может перейти к этапу 784, на котором определяется расстояние между центром изображения и положением (R) текущего пикселя. Как рассмотрено выше, значение R можно вычислять (уравнение 15) или оценивать (уравнение 16). Затем, на этапе 785, радиальную компоненту коэффициента усиления Gr можно вычислить с использованием расстояния R и параметр глобального коэффициента усиления, соответствующего цветовой компоненте текущего пикселя (уравнение 14). Радиальную компоненту коэффициента усиления Gr можно использовать для определения полного коэффициента усиления, что будет рассмотрено ниже на этапе 787.
[00377] Логика 776 принятия решения определяет, соответствует ли позиция текущего пикселя точке сетки в сетке 761 коэффициентов усиления. Если позиция текущего пикселя соответствует точке сетки, то значение коэффициента усиления в этой точке сетки определяется, как показано на этапе 786. Если позиция текущего пикселя не соответствует точке сетки, то процесс 782 переходит к этапу 778, и интерполированный коэффициент усиления вычисляется на основании граничных точек сетки (например, G0, G1, G2 и G3 на фиг.74). Например, интерполированный коэффициент усиления можно вычислить в соответствии с уравнениями 13a и 13b, как рассмотрено выше. Затем, на этапе 787, полный коэффициент усиления определяется на основании радиального коэффициента усиления, определенного на этапе 785, а также одного из коэффициентов усиления сетки (этап 786) или интерполированного коэффициента усиления (778). Очевидно, что это может зависеть от ветви, выбранной логикой 776 принятия решения в процессе 782. Затем полный коэффициент усиления применяется к текущему пикселю, как показано на этапе 788. Опять же, следует отметить, что, аналогично процессу 772, процесс 782 также может повторяться для каждого пикселя данных изображения.
[00378] Использование радиального коэффициента усиления совместно с коэффициентами усиления сетки может обеспечивать различные преимущества. Например, использование радиального коэффициента усиления позволяет использовать единую общую сетку коэффициентов усиления для всех цветовых компонент. Это позволяет значительно сократить суммарную емкость хранилища, необходимую для хранения отдельных сеток коэффициентов усиления для каждой цветовой компоненты. Например, в байеровском датчике изображения, использование единой сетки коэффициентов усиления для каждой из компонент R, B, Gr и Gb может сокращать объем данных сетки коэффициентов усиления приблизительно на 75%. Очевидно, что, это сокращение объема данных сетки коэффициента усиления позволяет снизить стоимость реализации, поскольку таблицы данных сетки коэффициента усиления могут занимать значительный участок памяти или площадь микросхемы в оборудовании обработки изображений. Кроме того, в зависимости от аппаратной реализации, использование единого набора значений сетки коэффициентов усиления может обеспечивать дополнительные преимущества, например уменьшение общей площади микросхемы (например, когда значения сетки коэффициентов усиления хранятся во внутрикристальной памяти) и снижение требований к пропускной способности памяти (например, когда значения сетки коэффициентов усиления хранятся во внекристалльной внешней памяти).
[00379] Исходя из полностью описанных функциональных возможностей логики 740 коррекции затенения объектива, показанной на фиг.68, выходной сигнал логики 740 LSC затем перенаправляется на логику 741 обратной компенсации уровня черного (IBLC). Логика 741 IBLC обеспечивает коэффициент усиления, смещение и отсечку независимо для каждой цветовой компоненты (например, R, B, Gr и Gb) и, в общем случае, осуществляет обратную функцию относительно логики 739 BLC. Например, как демонстрирует следующая операция, значение входного пикселя сначала умножается на коэффициент усиления и затем смещается на знаковое значение.
(18)
где X представляет входное пиксельное значение для данной цветовой компоненты c (например, R, B, Gr или Gb), O[c] представляет знаковое 16-битовое смещение для текущей цветовой компоненты c, и G[c] представляет значение коэффициента усиления для цветовой компоненты c. В одном варианте осуществления, коэффициент усиления G[c] может принимать значения в пределах приблизительно от 0 до 4X (4-кратное входное пиксельное значение X). Следует отметить, что эти переменные могут быть теми же переменными, которые рассмотрены выше в уравнении 11. Вычисленное значение Y может быть обрезано до минимального и максимального диапазона с использованием, например, уравнения 12. В одном варианте осуществления, логика 741 IBLC может быть сконфигурирована для поддержания счетчика количества пикселей, которые были отсечены выше и ниже максимума и минимума, соответственно, для каждой цветовой компоненты.
[00380] После этого, выходной сигнал логики 741 IBLC принимается блоком 742 сбора статистики, который может обеспечивать сбор различных точек статистических данных о датчике(ах) 90 изображения, например, относящихся к автоматической установке экспозиции (AE), автоматическому балансу белого (AWB), автофокусировке (AF), обнаружению мерцания и т.д. На основании вышеизложенного, описание некоторых вариантов осуществления блока 742 сбора статистики и различных связанных с ним аспектов представлено ниже со ссылкой на фиг.80-97.
[00381] Очевидно, что статистику AWB, AE и AF можно использовать при получении изображений в цифровых фотоаппаратах, а также видеокамерах. Для простоты, статистика AWB, AE и AF может совместно именоваться здесь “статистикой 3A”. Согласно варианту осуществления логики предварительной обработки ISP, представленному на фиг.68, архитектуру для логики 742 сбора статистики (“логика статистики 3A”) можно реализовать в оборудовании, программном обеспечении, или их комбинации. Кроме того, программное обеспечение или программно-аппаратное обеспечение управления можно использовать для анализа статистических данных, собранных логикой 742 статистики 3A и управления различными параметрами объектива (например, фокусным расстоянием), датчика (например, коэффициентами аналогового усиления, временами интегрирования), и конвейера 82 ISP (например, коэффициентами цифрового усиления, коэффициентами матрицы цветовой коррекции). В некоторых вариантах осуществления, схема 32 обработки изображений может быть сконфигурирована для обеспечения гибкости при сборе статистики, позволяющей программному обеспечению или программно-аппаратному обеспечению управления реализовать различные алгоритмы AWB, AE и AF.
[00382] В отношении балансировки белого (AWB), отклик датчика изображения на каждом пикселе может зависеть от источника освещения, поскольку источник света отражается от объектов в сцене изображения. Таким образом, каждое пиксельное значение, записанное в сцене изображения, связано с цветовой температурой источника света. Например, на фиг.79 изображен график 789, демонстрирующий цветовой диапазон областей белого при низких и высоких цветовых температурах для цветового пространства YCbCr. Как показано, ось x графика 789 представляет цветоразность (Cb) синего, и ось y графика 789 представляет цветоразность (Cr) красного цветового пространства YCbCr. График 789 также демонстрирует ось 790 низкой цветовой температуры и ось 791 высокой цветовой температуры. Область 792, в которой располагаются оси 790 и 791, представляет цветовой диапазон областей белого при низких и высоких цветовых температурах в цветовом пространстве YCbCr. Однако следует понимать, что цветовое пространство YCbCr является лишь одним примером цветового пространства, которое можно использовать совместно с обработкой автоматической балансировки белого в настоящем варианте осуществления. Другие варианты осуществления могут использовать любое пригодное цветовое пространство. Например, в некоторых вариантах осуществления, другие пригодные цветовые пространства могут включать в себя цветовое пространство Lab (CIELab) (например, на основании CIE 1976), цветовое пространство, нормализованное по красному/синему (например, цветовое пространство R/(R+2G+B) и B/(R+2G+B); цветовое пространство R/G и B/G; цветовое пространство Cb/Y и Cr/Y и т.д.). Соответственно, в целях этого раскрытия, оси цветового пространства, используемого логикой 742 статистики 3A, могут именоваться C1 и C2 (как в случае на фиг.80).
[00383] Когда белый объект освещается при низкой цветовой температуре, он может выглядеть красноватым в захваченном изображении. Напротив, белый объект, освещаемый при высокой цветовой температуре, может выглядеть синеватым в захваченном изображении. Таким образом, целью балансировки белого является регулировка значений RGB таким образом, чтобы изображение воспринималось человеческим глазом, как в условиях канонического освещения. Таким образом, в контексте статистики формирования изображения, относящейся к балансу белого, информация цвета о белых объектах собирается для определения цветовой температуры источника света. В целом, алгоритмы баланса белого могут включать в себя два основных этапа. Во-первых, оценивается цветовая температура источника света. Во-вторых, оцененная цветовая температура используется для регулировки значений цветового коэффициента усиления и/или определения/регулировки коэффициентов матрицы цветовой коррекции. Такие коэффициенты усиления могут быть комбинацией коэффициентов аналогового и цифрового усиления датчика изображения, а также коэффициентов цифрового усиления ISP.
[00384] Например, в некоторых вариантах осуществления, устройство 30 формирования изображения можно калибровать с использованием множественных разных опорных источников света. Соответственно, точку белого текущей сцены можно определить посредством выбора коэффициентов цветовой коррекции, соответствующих опорному источнику света, который наиболее точно совпадает с источником света текущей сцены. Исключительно в порядке примера, один вариант осуществления может калибровать устройство 30 формирования изображения с использованием пяти опорных источников света, источника света низкой цветовой температуры, источника света умеренно низкой цветовой температуры, источника света средней цветовой температуры, источника света умеренно высокой цветовой температуры и источника света высокой цветовой температуры. Как показано на фиг.81, один вариант осуществления может задавать коэффициенты усиления баланса белого с использованием следующих профилей цветовой коррекции: Horizon (H) (имитирующий цветовую температуру около 2300 градусов), накальный (A или IncA) (имитирующий цветовую температуру около 2856 градусов), D50 (имитирующий цветовую температуру около 5000 градусов), D65 (имитирующий цветовую температуру около 6500 градусов) и D75 (имитирующий цветовую температуру около 7500 градусов).
[00385] В зависимости от источника света текущей сцены, коэффициенты усиления баланса белого можно определить с использованием коэффициентов усиления, соответствующих опорному источнику света, который наиболее точно совпадает с текущим источником света. Например, если логика 742 статистики (более подробно описанная ниже на фиг.82) определяет, что текущий источник света приблизительно совпадает с опорным источником света средней цветовой температуры, D50, то коэффициенты усиления баланса белого приблизительно 1,37 и 1,23 могут применяться к цветовым каналам красного и синего, соответственно, тогда как к каналам зеленого (G0 и G1 для байеровских данных) не применяется приблизительно никакого коэффициента усиления (1.0). В некоторых вариантах осуществления, если цветовая температура текущего источника света находится между двумя опорными источниками света, коэффициенты усиления баланса белого можно определить посредством интерполяции коэффициентов усиления баланса белого между двумя опорными источниками света. Кроме того, хотя настоящий пример демонстрирует устройство формирования изображения, калибруемое с использованием источников света H, A, D50, D65 и D75, следует понимать, что для калибровки камеры можно использовать любой пригодный тип источника света, например TL84 или CWF (люминесцентные опорные источники света) и т.д.
[00386] Как будет дополнительно описано ниже, для AWB может быть обеспечено несколько статистик, включающих в себя двухмерную (2D) цветовую гистограмму, и суммы RGB или YCC для обеспечения множественных программируемых цветовых диапазонов. Например, в одном варианте осуществления, логика 742 статистики может обеспечивать набор множественных пиксельных фильтров, причем для обработки AWB можно выбирать поднабор множественных пиксельных фильтров. В одном варианте осуществления, может быть обеспечено восемь наборов фильтров, каждый из которых имеет свои отдельные конфигурируемые параметры, и три набора фильтров цветового диапазона можно выбирать из набора для сбора мозаичной статистики, а также для сбора статистики для каждого плавающего окна. В порядке примера, первый выбранный фильтр может быть сконфигурирован для покрытия текущей цветовой температуры для получения точной оценки цвета, второй выбранный фильтр может быть сконфигурирован для покрытия областей низкой цветовой температуры, и третий выбранный фильтр может быть сконфигурирован для покрытия областей высокой цветовой температуры. Эта конкретная конфигурация может позволять алгоритму AWB регулировать область текущей цветовой температуры, когда источник света изменяется. Кроме того, 2D цветовую гистограмму можно использовать для определения глобальных и локальных источников света и для определения различных порогов пиксельного фильтра для накопления значений RGB. Опять же, следует понимать, что выбор трех пиксельных фильтров призван иллюстрировать лишь один вариант осуществления. В других вариантах осуществления, для статистики AWB можно выбирать меньше или больше пиксельных фильтров.
[00387] Кроме того, помимо выбора трех пиксельных фильтров, один дополнительный пиксельный фильтр также можно использовать для автоматической установки экспозиции (AE), которая, в общем случае, означает процесс регулировки времени интегрирования и коэффициентов усиления пикселя для управления яркостью захваченного изображения. Например, автоматическая установка экспозиции может управлять количеством света из сцены, захваченной датчиком(ами) изображения, посредством задания времени интегрирования. В некоторых вариантах осуществления, мозаичные элементы и плавающие окна статистики яркости можно собирать с помощью логики 742 статистики 3A и обрабатывать для определения параметров управления интегрированием и коэффициентом усиления.
[00388] Кроме того, автофокусировка может относиться к определению оптимального фокусного расстояния объектива для, по существу, оптимизации фокусировки изображения. В некоторых вариантах осуществления, можно собирать плавающие окна высокочастотной статистики и можно регулировать фокусное расстояние объектива для фокусировки изображения. Как дополнительно рассмотрено ниже, в одном варианте осуществления, регулировки автофокусировки могут использовать грубые и точные регулировки на основании одной или более метрик, именуемых показателями автофокусировки (показателями AF) для фокусировки изображения. Кроме того, в некоторых вариантах осуществления, статистику/показатели AF можно определять для разных цветов, и соотношение между статистикой/показателями AF для каждого цветового канала можно использовать для определения направления фокуса.
[00389] Таким образом, эти различные типы статистики, в том числе, можно определять и собирать с помощью блока 742 сбора статистики. Как показано, выходной сигнал STATS0 блока 742 сбора статистики блока 142 статистической обработки Sensor0 могут отправляться в память 108 и перенаправляться на управляющую логику 84 или, альтернативно, может отправляться непосредственно на управляющую логику 84. Кроме того, следует понимать, что блок 144 статистической обработки Sensor1 также может включать в себя аналогично сконфигурированный блок сбора статистики 3A, который обеспечивает статистику STATS1, как показано на фиг.10.
[00390] Как рассмотрено выше, управляющая логика 84, которая может представлять собой специализированный процессор в подсистеме 32 ISP устройства 10, может обрабатывать собранные статистические данные для определения одного или более параметров управления для управления устройством 30 формирования изображения и/или схемой 32 обработки изображений. Например, такие параметры управления могут включать в себя параметры для оперирования объективом датчика 90 изображения (например, параметры регулировки фокусного расстояния), параметры датчика изображения (например, коэффициенты аналогового и/или цифрового усиления, время интегрирования), а также параметры конвейерной обработки ISP (например, значения коэффициента цифрового усиления, коэффициенты матрицы цветовой коррекции (CCM)). Дополнительно, как упомянуто выше, в некоторых вариантах осуществления, статистическая обработка может происходить с точностью 8 битов и, таким образом, первичные пиксельные данные, имеющие более высокую битовую глубину, могут подвергаться понижающей дискретизации до 8-битового формата в целях статистики. Как рассмотрено выше, понижающая дискретизация до 8 битов (или любого другого более низкобитового разрешения) может уменьшать размер (например, площадь) оборудования и также снижать сложность обработки, а также позволяет повышать устойчивость статистических данных к шуму (например, с использованием пространственного усреднения данных изображения).
[00391] Исходя из вышеизложенного, на фиг.82 показана блок-схема, изображающая логику для реализации одного варианта осуществления логики 742 статистики 3A. Как показано, логика 742 статистики 3A может принимать сигнал 793, представляющий байеровские RGB данные, которые, как показано на фиг.68, могут соответствовать выходному сигналу логики 741 обратной BLC. Логика 742 статистики 3A может обрабатывать байеровские RGB данные 793 для получения различной статистики 794, которая может представлять выходной сигнал STATS0 логики 742 статистики 3A, как показано на фиг.68, или, альтернативно выходной сигнал STATS1 логики статистики, связанной с блоком 144 Sensor1 статистической обработки.
[00392] В проиллюстрированном варианте осуществления, чтобы статистика была более устойчива к шуму, входные байеровские RGB пиксели 793 сначала усредняются логикой 795. Например, усреднение может осуществляться в окне размером 4×4 пикселя датчика, состоящий из четырех байеровских четверок 2×2 (например, блок 2×2 пикселей, представляющий шаблон Байера), и усредненные значения красного (R), зеленого (G) и синего (B) в окне 4×4 можно вычислить и преобразовать в 8 битов, как упомянуто выше. Этот процесс более подробно проиллюстрирован на фиг.83, которая демонстрирует окно 796 4×4 пикселей, образованное четырьмя байеровскими четверками 797 2×2. С использованием этой конфигурации, каждый цветовой канал включает в себя блок 2×2 соответствующих пикселей в окне 796, и пиксели одного и того же цвета можно суммировать и усреднять для получения среднего значения цвета для каждого цветового канала в окне 796. Например, пиксели 799 красного можно усреднять для получения среднего значения 803 красного (RAV), и пиксели 800 синего можно усреднять для получения среднего значения 804 синего (BAV) в выборке 796. В отношении усреднения пикселей зеленого, можно использовать несколько методов, поскольку шаблон Байера имеет вдвое больше выборок зеленого, чем выборок красного или синего. В одном варианте осуществления, среднее значение 802 зеленого (GAV) можно получить посредством усреднения только пикселей 798 Gr, только пикселей 801 Gb, или всех вместе пикселей 798 и 801 Gr и Gb. В другом варианте осуществления, можно усреднять пиксели 798 и 801 Gr и Gb в каждой байеровской четверке 797, и среднее значений зеленого для каждой байеровской четверки 797 можно дополнительно усреднять совместно для получения GAV 802. Очевидно, что, усреднение пиксельных значений по пиксельным блокам может обеспечивать снижение шума. Кроме того, следует понимать, что использование блока 4×4 в качестве оконной выборки служит исключительно для обеспечения одного примера. Действительно, в других вариантах осуществления, можно использовать любой пригодный размер блока (например, 8×8, 16×16, 32×32 и т.д.).
[00393] После этого, байеровские RGB значения 806 уменьшенного масштаба поступают на логические блоки 807 и 808 преобразования цветового пространства. Поскольку некоторые статистические данные 3A могут опираться на пиксель, пиксели после применения преобразования цветового пространства, логика 807 преобразования цветового пространства (CSC) и логика 808 CSC могут быть сконфигурированы для преобразования подвергнутых понижающей дискретизации байеровских значений RGB 806 в одно или более других цветовых пространств. В одном варианте осуществления, логика 807 CSC может обеспечивать преобразование нелинейного пространства, и логика 808 CSC может обеспечивать линейное преобразование пространства. Таким образом, логические блоки 807 и 808 CSC могут преобразовывать первичные данные изображения из байеровского RGB датчика в другое цветовое пространство (например, sRGBlinear, sRGB, YCbCr и т.д.) которое может быть более идеально или пригодно для осуществления оценивания белого по точкам для баланса белого.
[00394] В настоящем варианте осуществления, нелинейная логика 807 CSC может быть сконфигурирована для осуществления умножения на матрицу 3×3, сопровождаемого нелинейным отображением, реализованным в виде поисковой таблицы, и дополнительно сопровождаемого умножением на другую матрицу 3×3 с добавленным смещением. Это позволяет преобразованию цветового пространства статистики 3A дублировать цветовую обработку обработки RGB в конвейере 82 ISP (например, применяя коэффициент усиления баланс белого, применяя матрицу цветовой коррекции, применяя регулировки гаммы RGB и осуществляя преобразование цветового пространства) для данной цветовой температуры. Это также может обеспечивать преобразование байеровских RGB значений в более согласованное по цвету цветовое пространство, например CIELab, или любое другое из цветовых пространств, рассмотренных выше (например, YCbCr, цветовое пространство, нормализованное по красному/синему, и т.д.). В некоторых условиях, цветовое пространство Lab может быть более пригодно для операций баланса белого поскольку цветность более линейна относительно яркости.
[00395] Как показано на фиг.82, выходные пиксели из байеровского RGB сигнала 806 уменьшенного масштаба обрабатываются с помощью первой матрицы 3×3 цветовой коррекции (3A_CCM), обозначенной здесь ссылочной позицией 808. В настоящем варианте осуществления, 3A_CCM 809 может быть сконфигурирована для преобразования из цветового пространства RGB камеры (camRGB), в линейное калиброванное пространство sRGB (sRGBlinear). Программируемое преобразование цветового пространства, которое можно использовать в одном варианте осуществления, представлено ниже уравнениями 19-21:
sRlinear=max(0, min(255, (3A_CCM_00*R+3A_CCM_01*G+3A_CCM_02*B))); (19)
sGlinear=max(0, min(255, (3A_CCM_10*R+3A_CCM_11*G+3A_CCM_12*B))); (20)
sBlinear=max(0, min(255, (3A_CCM_20*R+3A_CCM_21*G+3A_CCM_22*B))); (21)
где 3A_CCM_00 - 3A_CCM_22 представляют знаковые коэффициенты матрицы 808. Таким образом, каждую из компонент sRlinear, sGlinear и sBlinear, цветового пространства sRGBlinear можно определить, сначала определяя сумму подвергнутых понижающей дискретизации байеровских значений красного, синего и зеленого RGB с применением соответствующих коэффициентов 3A_CCM, и затем урезая это значение до 0 или 255 (минимального и максимального пиксельных значений для 8-битовых пиксельных данных), если значение больше 255 или меньше 0. Результирующие значения sRGBlinear представлены на фиг.82 ссылочной позицией 810 как выход 3A_CCM 809. Дополнительно, логика 742 статистики 3A может поддероживать счетчик количества урезанных пикселей для каждой из компонент sRlinear, sGlinear и sBlinear, что выражено ниже:
3A_CCM_R_clipcount_low: количество урезанных пикселей sRlinear<0
3A_CCM_R_clipcount_high: количество урезанных пикселей sRlinear>255
3A_CCM_G_clipcount_low: количество урезанных пикселей sGlinear<0
3A_CCM_G_clipcount_high: количество урезанных пикселей sGlinear>255
3A_CCM_B_clipcount_low: количество урезанных пикселей sBlinear<0
3A_CCM_B_clipcount_high: количество урезанных пикселей sBlinear>255
[00396] Затем пиксели 810 sRGBlinear можно обрабатывать с использованием нелинейной поисковой таблицы 811 для формирования пикселей 812 sRGB. Поисковая таблица 811 может содержать записи 8-битовых значений, причем значение каждой записи таблицы представляет выходные уровни. В одном варианте осуществления, поисковая таблица 811 может включать в себя 65 равномерно распределенных входных записей, причем индекс таблицы представляет входные значения с шагом 4. Когда входное значение попадает между интервалами, выходные значения линейно интерполируются.
[00397] Очевидно, что цветовое пространство sRGB может представлять цветовое пространство окончательного изображения, сформированного устройством 30 формирования изображения (фиг.7) для данной точки белого, поскольку сбор статистики баланса белого осуществляется в цветовом пространстве окончательного изображения, сформированного устройством формирования изображения. В одном варианте осуществления, точку белого можно определить, сопоставляя характеристики сцены изображения с одним или более опорными источниками света на основании, например, отношений красного к зеленому и/или синего к зеленому. Например, один опорный источник света может быть D65, источник света стандарта CIE для имитации условий дневного освещения. Помимо D65, калибровку устройства 30 формирования изображения также можно осуществлять для разных других опорных источников света, и процесс определения баланса белого может включать в себя определение текущего источника света таким образом, чтобы обработку (например, балансировка цветов) можно было регулировать для текущего источника света на основании соответствующих точек калибровки. В порядке примера, в одном варианте осуществления, устройство 30 формирования изображения и логику 742 статистики 3A можно калибровать с использованием, помимо D65, люминесцентного (CWF) опорного источника холодного белого света, опорного источника света TL84 (другого люминесцентного источника) и опорного источника света IncA (или A), который имитирует накальное освещение. Дополнительно, как рассмотрено выше, различные другие источники света, соответствующие разным цветовым температурам (например, H, IncA, D50, D65 и D75 и т.д.) также можно использовать при калибровке камеры для обработки баланса белого. Таким образом, точку белого можно определить, анализируя сцену изображения и определяя, какой опорный источник света наиболее точно совпадает с текущим источником света.
[00398] В отношении нелинейной логики 807 CSC, выходной сигнал 812 пикселя sRGB поисковой таблицы 811 может дополнительно обрабатываться с помощью второй матрицы 8133×3 цветовой коррекции, именуемой здесь 3A_CSC. В представленном варианте осуществления, матрица 813 3A_CSC показана сконфигурированной для преобразования из цветового пространства sRGB в цветовое пространство YCbCr, хотя она также может быть сконфигурирована для преобразования значений sRGB в другие цветовые пространства. В порядке примера, можно использовать следующее программируемое преобразование цветового пространства (уравнения 22-27):
Y=3A_CSC_00*sR+3A_CSC_01*sG+3A_CSC_02*sB+3A_OffsetY; (22)
Y=max(3A_CSC_MIN_Y, min(3A_CSC_MAX_Y, Y)); (23)
C1=3A_CSC_10*sR+3A_CSC_11*sG+3A_CSC_12*sB+3A_OffsetC1; (24)
C1=max(3A_CSC_MIN_C1, min(3A_CSC_MAX_C1, C1)); (25)
C2=3A_CSC_20*sR+3A_CSC_21*sG+3A_CSC_22*sB+3A_OffsetC2; (26)
C2=max(3A_CSC_MIN_C2, min(3A_CSC_MAX_C2, C2)); (27)
где 3A_CSC_00 - 3A_CSC_22 представляют знаковые коэффициенты для матрицы 813, 3A_OffsetY, 3A_OffsetC1 и 3A_OffsetC2 представляют знаковые смещения, и C1 и C2 представляют разные цвета, в данном случае цветоразность (Cb) синего и цветоразность (Cr) красного, соответственно. Однако следует понимать, что C1 и C2 могут представлять цвета любой пригодной цветоразности, не обязательно цвета Cb и Cr.
[00399] Как показано в уравнениях 22-27, при определении каждой компоненты из YCbCr, надлежащие коэффициенты из матрицы 813 применяются к значениям 812 sRGB, и результат суммируется с соответствующим смещением (например, уравнения 22, 24 и 26). По существу, этот этап является этапом умножения на матрицу 3×1. Этот результат матричного умножения затем подвергается отсечке между максимальным и минимальным значениями (например, уравнения 23, 25 и 27). Соответствующие минимальное и максимальное значения отсечки могут быть программируемыми и могут зависеть, например, от конкретных используемых стандартов формирования изображения или видеосигнала (например, BT.601 или BT.709).
[00400] Логика 742 статистики 3A также может поддерживать счетчик количества урезанных пикселей для каждой из компонент Y, C1 и C2, что выражено ниже:
3A_CSC_Y_clipcount_low: количество урезанных пикселей Y<3A_CSC_MIN_Y
3A_CSC_Y_clipcount_high: количество урезанных пикселей Y>3A_CSC_MAX_Y
3A_CSC_C1_clipcount_low: количество урезанных пикселей C1<3A_CSC_MIN_C1
3A_CSC_C1_clipcount_high: количество урезанных пикселей C1>3A_CSC_MAX_C1
3A_CSC_C2_clipcount_low: количество урезанных пикселей C2<3A_CSC_MIN_C2
3A_CSC_C2_clipcount_high: количество урезанных пикселей C2>3A_CSC_MAX_C2
[00401] Выходные пиксели из байеровского RGB сигнала 806, подвергнутого понижающей дискретизации, также может поступать на линейную логику 808 преобразования цветового пространства, которая может быть сконфигурирована для реализации преобразования цветового пространства камеры. Например, выходные пиксели 806 из логики 795 понижающей дискретизации байеровского RGB можно обрабатывать с помощью другой матрицы 815 3×3 цветового преобразования (3A_CSC2) логики 808 CSC для преобразования из RGB датчика (camRGB) в линейное сбалансированное по уровню белого цветовое пространство (camYC1C2), в котором C1 и C2 могут соответствовать Cb и Cr, соответственно. В одном варианте осуществления, пиксели цветности можно масштабировать по яркости, что может давать преимущество при реализации цветового фильтра с улучшенным согласованием цветов и устойчивостью к цветовым сдвигам вследствие изменений яркости. Пример того, как может осуществляться преобразование цветового пространства камеры с использованием матрицы 815 3×3, приведен ниже в уравнениях 28-31:
camY=3A_CSC2_00*R+3A_CSC2_01*G+3A_CSC2_02*B+3A_Offset2Y; (28)
camY=max(3A_CSC2_MIN_Y, min(3A_CSC2_MAX_Y, camY)); (29)
camC1=(3A_CSC2_10*R+3A_CSC2_11*G+3A_CSC2_12*B); (30)
camC2=(3A_CSC2_20*R+3A_CSC2_21*G+3A_CSC2_22*B); (31)
где 3A_CSC2_00 - 3A_CSC2_22 представляют знаковые коэффициенты для матрицы 815, 3A_Offset2Y представляет знаковое смещение для camY, и camC1 и camC2 представляют разные цвета, в данном случае, цветоразность (Cb) синего и цветоразность (Cr) красного, соответственно. Как показано в уравнении 28, для определения camY, соответствующие коэффициенты из матрицы 815 применяются к байеровским RGB значениям 806, и результат суммируется с 3A_Offset2Y. Этот результат затем подвергается отсечке между максимальным и минимальным значениями, как показано в уравнении 29. Как рассмотрено выше, пределы отсечки могут быть программируемыми.
[00402] При этом, пиксели camC1 и camC2 выхода 816 являются знаковыми. Как рассмотрено выше, в некоторых вариантах осуществления, пиксели цветности можно масштабировать. Например, один метод для реализации масштабирования по цветности показанный ниже:
camC1=camC1 * ChromaScale * 255/(camY ? camY: 1); (32)
camC2=camC2 * ChromaScale * 255/(camY ? camY: 1); (33)
где ChromaScale представляет масштабный коэффициент с плавающей запятой между 0 и 8. В уравнениях 32 и 33, выражение (camY ? camY:1) призвано предотвращать возникновение условия деления на нуль. Таким образом, если camY равен нулю, значение camY устанавливается равным 1. Кроме того, в одном варианте осуществления, ChromaScale может принимать одно из двух возможных значений в зависимости от знака camC1. Например, как показано ниже в уравнении 34, ChomaScale может быть присвоено первое значение (ChromaScale0), если camC1 отрицательный, иначе ему присваивается второе значение (ChromaScale1):
ChromaScale = ChromaScale0 если (camC1<0) (34)
ChromaScale1 в противном случае
[00403] После этого прибавляются смещения цветности, и пиксели camC1 и camC2 цветности урезаются, как показано ниже в уравнениях 35 и 36, для генерации соответствующих беззнаковых пиксельных значений:
camC1=max(3A_CSC2_MIN_C1, min(3A_CSC2_MAX_C1, (camC1+3A_Offset2C1))) (35)
camC2=max(3A_CSC2_MIN_C2, min(3A_CSC2_MAX_C2,
(camC2+3A_Offset2C2))) (36)
где 3A_CSC2_00 - 3A_CSC2_22 - знаковые коэффициенты матрицы 815, и 3A_Offset2C1 и 3A_Offset2C2 - знаковые смещения. Кроме того, количество урезанных пикселей для camY, camC1 и camC2 отсчитывается, как показано ниже:
3A_CSC2_Y_clipcount_low: количество урезанных пикселей camY<3A_CSC2_MIN_Y
3A_CSC2_Y_clipcount_high: количество урезанных пикселей camY>3A_CSC2_MAX_Y
3A_CSC2_C1_clipcount_low: количество урезанных пикселей camC1<3A_CSC2_MIN_C1
3A_CSC2_C1_clipcount_high: количество урезанных пикселей camC1>3A_CSC2_MAX_C1
3A_CSC2_C2_clipcount_low: количество урезанных пикселей camC2<3A_CSC2_MIN_C2
3A_CSC2_C2_clipcount_high: количество урезанных пикселей camC2>3A_CSC2_MAX_C2
[00404] Таким образом, нелинейная и линейная логики 807 и 808 преобразования цветового пространства могут, в настоящем варианте осуществления, обеспечивать пиксельные данные в различных цветовых пространствах: sRGBlinear (сигнал 810), sRGB (сигнал 812), YCbYr (сигнал 814), и camYCbCr (сигнал 816). Следует понимать, что коэффициенты для каждой матрицы 809 (3A_CCM), 813 (3A_CSC) и 815 (3A_CSC2) преобразования, а также значения в поисковой таблице 811, можно независимо устанавливать и программировать.
[00405] Согласно фиг.82, выходные пиксели цветности из преобразования нелинейного цветового пространства (YCbCr 814) или из преобразования цветового пространства камеры (camYCbCr 816) можно использовать для генерации двухмерной (2D) цветовой гистограммы 817. Как показано, логика 818 и 819 выбора, которую можно реализовать в виде мультиплексоров или в виде любой другой пригодной логики, может быть сконфигурирована для выбора между пикселями яркости и цветности из преобразования нелинейного цветового пространства или из преобразования цветового пространства камеры. Логика 818 и 819 выбора может действовать в ответ на соответствующие сигналы управления, которые, в одном варианте осуществления, могут выдаваться главной управляющей логикой 84 схемы 32 обработки изображений (фиг.7) и могут устанавливаться через программное обеспечение.
[00406] Для настоящего примера, можно предположить, что логики 818 и 819 выбора выбирают преобразование (814) цветового пространства YC1C2, где первой компонентой является яркость, и где C1, C2 - первый и второй цвета (например, Cb, Cr). 2D гистограмма 817 в цветовом пространстве C1-C2 генерируется для одного окна. Например, окно может задаваться началом и шириной столбца и началом и высотой строки. В одном варианте осуществления, позицию и размер окна можно задавать кратными 4 пикселям, и можно использовать 32×32 бина, т.е. всего 1024 бина. Границы бинов могут располагаться с фиксированным интервалом, и, для обеспечения возможности трансфокации и панорамирования коллекции гистограммы в конкретных областях цветового пространства, можно задать масштабирование и смещение пикселей.
[00407] 5 старших битов (представляющих всего 32 значения) C1 и C2 после смещения и масштабирования можно использовать для определения бина. Индексы бинов для C1 и C2, обозначенные здесь как C1_index и C2_index, можно определить следующим образом:
C1_index=((C1-C1_offset)>>(3-C1_scale) (37)
C2_index=((C2-C2_offset)>>(3-C2_scale) (38)
После определения индексов, бины цветовой гистограммы увеличиваются на значение Count (которое может иметь значение между 0 и 3 в одном варианте осуществления), если индексы бинов находятся в диапазоне [0, 31], как показано ниже в уравнении 39. По сути дела, это позволяет взвешивать счетчики цвета на основании значений яркости (например, более яркие пиксели получают увеличенный весовой коэффициент, а не как все остальные (например, 1)).
if(C1_index>=0 && C1_index<=31 && C2_index>=0 && C2_index<=31) (39)
StatsCbCrHist[C2_index&31][C1_index&31]+=Count;
где Count определяется на основании выбранного значения яркости, Y в этом примере. Очевидно, что этапы, представленные уравнениями 37, 38 и 39 можно реализовать логическим блоком 821 обновления бинов. Кроме того, в одном варианте осуществления, можно устанавливать множественные пороги яркости для задания интервалов яркости. В порядке примера, четыре порога яркости (Ythd0-Ythd3) могут задавать пять интервалов яркости, при этом для каждого интервала задаются значения Count Count0-4. Например, Count0-Count4 можно выбирать (например, с помощью логики 820 пиксельного условия) на основании порогов яркости следующим образом:
if(Y<=Ythd0) (40)
Count=Count0
else if(Y<=Ythd1)
Count=Count1
else if(Y<=Ythd2)
Count=Count2
else if(Y<=Ythd3)
Count=Count3
Else
Count=Count4
[00408] Исходя из вышеизложенного, фиг.84 иллюстрирует цветовую гистограмму с масштабированием и смещениями, заданными равными нулю для обоих C1 и C2. Пространстве CbCr делится на 32×32 бина (всего 1024 бинов). На Фиг.85 приведен пример трансфокации и панорамирования в 2D цветовой гистограмме для дополнительной точности, в которой прямоугольная область 822, где малый прямоугольник указывает положение 32×32 бина.
[00409] В начале кадра данных изображения, значения бинов первоначально установлены равными нулю. Для каждого пикселя, входящего в 2D цветовую гистограмму 817, бин, соответствующий совпадающему значению C1C2, увеличивается на определенное значение Count (Count0-Count4), которое, как рассмотрено выше, может базироваться на значении яркости. Для каждого бина в 2D гистограмме 817, суммарный отсчет пикселей сообщается как часть собранных статистических данных (например, STATS0). В одном варианте осуществления, суммарный отсчет пикселей для каждого бина может иметь разрешение 22 бита, что позволяет обеспечивать выделение внутренней памяти, равной 1024×22 бита.
[00410] Возвращаясь к фиг.82, байеровские RGB пиксели (сигнал 806), пиксели sRGBlinear (сигнал 810), пиксели sRGB (сигнал 812), и пиксели YC1C2 (например, YCbCr) (сигнал 814) поступают на набор пиксельных фильтров 824a-c, где посредством RGB, sRGBlinear, sRGB, YC1C2 или camYC1C2 суммы могут условно накапливаться при пиксельных условиях camYC1C2 или YC1C2, заданных каждым пиксельным фильтром 824. Таким образом, значения Y, C1 и C2 из выхода преобразования нелинейного цветового пространства (YC1C2) или выхода преобразования цветового пространства камеры (camYC1C2) используются для условного выбора значений RGB, sRGBlinear, sRGB или YC1C2 для накопления. Хотя в настоящем варианте осуществления изображено, что в логике 742 статистики 3A обеспечено 8 пиксельных фильтров (PF0-PF7), следует понимать, что может быть обеспечено любое количество пиксельных фильтров.
[00411] Фиг.86 демонстрирует функциональную логическую схему, изображающую вариант осуществления пиксельных фильтров, в частности, PF0 (824a) и PF1 (824b) из фиг.82. Как показано, каждый пиксельный фильтр 824 включает в себя логику выбора, которая принимает байеровские RGB пиксели, пиксели sRGBlinear, пиксели sRGB и пиксели одного из YC1C2 и camYC1C2, выбранных другой логикой 826 выбора. В порядке примера, логики 825 и 826 выбора можно реализовать с использованием мультиплексоров или любой другой пригодной логики. Логика 826 выбора может выбирать YC1C2 или camYC1C2. Выбор может осуществляться в ответ на сигнал управления, который может выдаваться главной управляющей логикой 84 схемы 32 обработки изображений (фиг.7) и/или устанавливаться программным обеспечением. Затем пиксельный фильтр 824 может использовать логику 827 для оценивания пикселей YC1C2 (например, нелинейного или камерного), выбранных логикой 826 выбора, относительно пиксельного условия. Каждый пиксельный фильтр 824 может использовать схему 825 выбора для выбора одного из байеровских пикселей RGB, пикселей sRGBlinear, пикселей sRGB, и пикселя YC1C2 или camYC1C2 в зависимости от выходного сигнала схемы 826 выбора.
[00412] Используя результаты оценивания, можно накапливать (828) пиксели, выбранные логикой 825 выбора. В одном варианте осуществления, пиксельное условие можно задать с использованием порогов C1_min, C1_max, C2_min, C2_max, как показано на графике 789 на фиг.80. Пиксель включается в статистику, если он удовлетворяет следующим условиям:
1. C1_min<=C1<=C1_max
2. C2_min<=C2<=C2_max
3. abs((C2_delta*C1)-(C1_delta*C2)+ смещение)<distance_max
4. Ymin<=Y<=Ymax
Согласно графику 829 представленному на фиг.87, в одном варианте осуществления, точка 830 представляет значения (C2, C1), соответствующие текущим пиксельным данным YC1C2, выбранным логикой 826. C1_delta можно определить как разность между C1_1 и C1_0, и C2_delta можно определить как разность между C2_1 и C2_0. Как показано на фиг.87, точки (C1_0, C2_0) и (C1_1, C2_1) могут задавать минимальную и максимальную границы для C1 и C2. Смещение можно определить посредством умножения C1_delta на значение 832 (C2_intercept) в точке пересечения линии 831 с осью C2. Таким образом, предполагая, что Y, C1 и C2 удовлетворяют минимальному и максимальному граничным условиям, выбранные пиксели (байеровского RGB, sRGBlinear, sRGB и YC1C2/camYC1C2) включается в сумму накопления, если его расстояние 833 от линии 831 меньше distance_max 834, которое может быть расстоянием 833 в пикселях от линии, умноженным на нормирующий множитель:
distance_max=distance * sqrt(C1_delta^2+C2_delta^2)
В настоящем варианте осуществления, distance, C1_delta и C2_delta может принимать значения в пределах от -255 до 255. Таким образом, distance_max 834 можно представить 17 битами. Точки (C1_0, C2_0) и (C1_1, C2_1), а также параметры для определения distance_max (например, нормирующий(е) множитель(и)), могут быть обеспечены как часть логики 827 пиксельного условия в каждом пиксельном фильтре 824. Очевидно, что пиксельные условия 827 могут быть конфигурируемыми/программируемыми.
[00413] Хотя пример, показанный на фиг.87, изображает пиксельное условие на основании двух наборов точек (C1_0, C2_0) и (C1_1, C2_1), в дополнительных вариантах осуществления, некоторые пиксельные фильтры могут задавать более сложные формы и области, в которых определяются пиксельные условия. Например, фиг.88 демонстрирует вариант осуществления, где пиксельный фильтр 824 может задавать пятисторонний многоугольник 835 с использованием точек (C1_0, C2_0), (C1_1, C2_1), (C1_2, C2_2) и (C1_3, C2_3), и (C1_4, C2_4). Каждая сторона 836a-836e может задавать условие линии. Однако в отличие от случая, показанного на фиг.87 (например, пиксель может находиться с каждой стороны от линии 831 при условии, что distance_max удовлетворяется), условие может состоять в том, что пиксель (C1, C2) должен располагаться по одну сторону от линии 836a-836e и, таким образом, находиться внутри многоугольника 835. Таким образом, пиксель (C1, C2) подсчитывается, когда выполняются условия пересечения множественных линий. Например, на фиг.88, такое пересечение происходит относительно пикселя 837a. Однако пиксель 837b не может удовлетворить условию линии для линии 836d и, таким образом, не может подсчитываться в статистике при обработке пиксельным фильтром, сконфигурированным таким образом.
[00414] В дополнительном варианте осуществления, показанном на фиг.89, пиксельное условие можно определить на основании перекрывающихся форм. Например, фиг.89 демонстрирует, как пиксельный фильтр 824 может иметь пиксельные условия, заданные с использованием двух перекрывающихся форм, в данном случае прямоугольников 838a и 838b, заданных точками (C1_0, C2_0), (C1_1, C2_1), (C1_2, C2_2) и (C1_3, C2_3) и точками (C1_4, C2_4), (C1_5, C2_5), (C1_6, C2_6) и (C1_7, C2_7), соответственно. В этом примере, пиксель (C1, C2) может удовлетворять условиям линий, заданным таким пиксельным фильтром, будучи заключен в области, совместно ограниченной формами 838a и 838b (например, удовлетворяя условиям линий каждой линии, задающей обе формы). Например, на фиг.89, эти условия выполняются относительно пикселя 839a. Однако пиксель 839b не может удовлетворять этим условиям (в частности относительно линии 840a прямоугольника 838a и линии 840b прямоугольника 838b) и, таким образом, не может подсчитываться в статистике при обработке пиксельным фильтром, сконфигурированным таким образом.
[00415] Для каждого пиксельного фильтра 824, квалифицирующие пиксели идентифицируются на основании пиксельных условий, заданных логикой 827 и, для квалификации пиксельных значений, машина 742 статистики 3A может собирать следующую статистику: 32-битовые суммы: (Rsum, Gsum, Bsum) или (sRlinear_sum, sGlinear_sum, sBlinear_sum), или (sRsum, sGsum, sBsum) или (Ysum, C1sum, C2sum) или 24-битовый счетчик пикселей, Count, который может представлять суммарное количество пикселей, включенных в статистику. В одном варианте осуществления, программное обеспечение может использовать сумма для генерации среднего в мозаичном элементе или окне.
[00416] Когда пиксели camYC1C2 выбираются логикой 825 пиксельного фильтра 824, цветовые пороги могут осуществляться на масштабированных значениях цветности. Например, поскольку интенсивность цветности в точках белого увеличивается со значением яркости, использование цветности, масштабированной значением яркости в пиксельном фильтре 824 может, в ряде случаев, обеспечивать результаты с улучшенной согласованностью. Например, условия минимальной и максимальной яркость могут позволять фильтру игнорировать темные и/или яркие области. Если пиксель удовлетворяет пиксельному условию YC1C2, значения RGB, sRGBlinear, sRGB или YC1C2 накапливаются. Выбор пиксельных значений логикой 825 выбора может зависеть от необходимого типа информации. Например, для баланса белого обычно выбираются пиксели RGB или sRGBlinear. Для обнаружения конкретных условий, например, неба, травы, телесных тонов и т.д., набор пикселей YCC или sRGB может быть более пригодным.
[00417] В настоящем варианте осуществления можно задать восемь наборов пиксельных условий, по одному, связанному с каждым из пиксельных фильтров 824 PF0-PF7. Некоторые пиксельные условия можно задать для вырезания области в цветовом пространстве C1-C2 (фиг.80), где, вероятно, находится точка белого. Это можно определить или оценить на основании текущего источника света. Затем, накопленные суммы RGB можно использовать для определения текущей точки белого на основании отношений R/G и/или B/G для регулировок баланса белого. Кроме того, некоторые пиксельные условия можно задать или адаптировать для осуществления анализа и классификаций сцены. Например, некоторые пиксельные фильтры 824 и окна/мозаичные элементы можно использовать для обнаружения условий, например, синего неба в верхней части кадра изображения или зеленой травы в нижней части кадра изображения. Эту информацию также можно использовать для регулировки баланса белого. Дополнительно, некоторые пиксельные условия можно задать или адаптировать для обнаружения телесных тонов. Для таких фильтров, мозаичные элементы можно использовать для обнаружения областей кадра изображения, которые имеют телесный тон. Идентифицируя эти области, можно повысить качество телесного тона, например, за счет снижения величины фильтра шума в областях телесного тона и/или снижения квантования при сжатии видеосигнала в этих областях для повышения качества.
[00418] Логика 742 статистики 3A также может обеспечивать сбор данных яркости. Например, значение яркости, camY, из преобразования цветового пространства камеры (camYC1C2) можно использовать для накопления статистики суммарной яркости. В одном варианте осуществления, логика 742 статистики 3A может собирать следующую информацию яркости:
Ysum: сумма camY
cond(Ysum): сумма camY, которая удовлетворяет условию: Ymin<=camY<Ymax
Ycount1: счетчик пикселей, где camY<Ymin,
Ycount2: счетчик пикселей, где camY>=Ymax
Здесь, Ycount1 может представлять количество недоэкспонированных пикселей, и Ycount2 может представлять количество переэкспонированных пикселей. Их можно использовать для определения, является ли изображение переэкспонированным или недоэкспонированным. Например, если пиксели не достигают насыщения, сумма camY (Ysum) может указывать среднюю яркость в сцене, которую можно использовать для достижения целевой экспозиции AE. Например, в одном варианте осуществления, среднюю яркость можно определить делением Ysum на количество пикселей. Кроме того, зная статистику яркости/AE для мозаичной статистики и положений окон, можно осуществлять измерение AE. Например, в зависимости от сцены изображения, может быть желательным взвешивать статистику AE в центральном окне больше, чем в окнах на краях изображения, например, в случае портретной съемки.
[00419] В проиллюстрированном здесь варианте осуществления, логика сбора статистики 3A может быть сконфигурирована для сбора статистики в мозаичных элементах и окнах. В проиллюстрированной конфигурации, одно окно можно задать для мозаичной статистики 863. Окно может задаваться началом и шириной столбца и началом и высотой строки. В одном варианте осуществления, позицию и размер окна можно выбирать кратным четырем пикселям и, в этом окне, статистика собирается в мозаичных элементах произвольных размеров. В порядке примера, все мозаичные элементы в окне можно выбирать таким образом, чтобы они имели одинаковый размер. Размер мозаичного элемента можно устанавливать независимо для горизонтального и вертикального направлений и, в одном варианте осуществления, можно устанавливать максимальный предел на количество горизонтальных мозаичных элементов (например, предел в 128 горизонтальных мозаичных элементов). Кроме того, в одном варианте осуществления, можно устанавливать минимальный размер мозаичного элемента, равный, например, 8 пикселей в ширину на 4 пикселя в высоту. Ниже приведены некоторые примеры конфигураций мозаичных элементов на основании разных режимов и стандартов видео/формирования изображения для получения окна 16×16 мозаичных элементов:
VGA 640×480: мозаичный интервал 40×30 пикселей
HD 1280×720: мозаичный интервал 80×45 пикселей
HD 1920×1080: мозаичный интервал 120×68 пикселей
5MP 2592×1944: мозаичный интервал 162×122 пикселей
8MP 3280×2464: мозаичный интервал 205×154 пикселей
[00420] В отношении настоящего варианта осуществления, из восьми доступных пиксельных фильтров 824 (PF0-PF7), четыре можно выбирать для мозаичной статистики 863. Для каждого мозаичного элемента, следующую статистику можно собрать:
(Rsum0, Gsum0, Bsum0) или (sRlinear_sum0, sGlinear_sum0, sBlinear_sum0), или
(sRsum0, sGsum0, sBsum0) или (Ysum0, C1sum0, C2sum0), Count0
(Rsum1, Gsum1, Bsum1) или (sRlinear_sum1, sGlinear_sum1, sBlinear_sum1), или
(sRsum1, sGsum1, sBsum1) или (Ysum1, C1sum1, C2sum1), Count1
(Rsum2, Gsum2, Bsum2) или (sRlinear_sum2, sGlinear_sum2, sBlinear_sum2), или
(sRsum2, sGsum2, sBsum2) или (Ysum2, C1sum2, C2sum2), Count2
(Rsum3, Gsum3, Bsum3) или (sRlinear_sum3, sGlinear_sum3, sBlinear_sum3), или
(sRsum3, sGsum3, sBsum3) или (Ysum3, C1sum3, C2sum3), Count3, или
Ysum, cond(Ysum), Ycount1, Ycount2 (из camY)
В вышеприведенной статистике, Count0-3 представляет счетчик пикселей, которые удовлетворяют пиксельным условиям, соответствующим выбранным четырем пиксельным фильтрам. Например, если пиксельные фильтры PF0, PF1, PF5 и PF6 выбраны в качестве четырех пиксельных фильтра для конкретного мозаичного элемента или окна, то вышеприведенные выражения могут соответствовать значениям Count и суммам, соответствующим пиксельным данным (например, байеровского RGB, sRGBlinear, sRGB, YC1Y2, camYC1C2), которые выбираются для этих фильтров (например, логикой 825выбора). Дополнительно, значения Count можно использовать для нормирования статистики (например, делением цветовых сумм на соответствующие значения Count). Как показано, в зависимости, по меньшей мере, частично, от необходимых типов статистики, выбранные пиксельные фильтры 824 могут быть сконфигурированы для выбора между пиксельными данными либо одного из байеровского RGB, sRGBlinear или sRGB, либо пиксельными данными YC1C2 (преобразования нелинейного или камерного цветового пространства в зависимости от выбора логикой 826), и определения статистики цветовой суммы для выбранных пиксельных данных. Дополнительно, как рассмотрено выше, значение яркости, camY, из преобразования цветового пространства камеры (camYC1C2) также собирается для информации суммарной яркости для статистики автоматической установки экспозиции (AE).
[00421] Дополнительно, логика 742 статистики 3A также может быть сконфигурирована для сбора статистики 861 для множественных окон. Например, в одном варианте осуществления, можно использовать до восьми плавающих окон, с любой прямоугольной областью, любой размер которой кратен четырем пикселям (например, высота x ширина), вплоть до максимального размера, соответствующего размеру кадра изображения. Однако положение окон не обязательно ограничивать кратными четырех пикселей. Например, окна могут перекрываться друг с другом.
[00422] В настоящем варианте осуществления, четыре пиксельных фильтра 824 можно выбирать из доступных восьми пиксельных фильтра (PF0-PF7) для каждого окна. Статистику для каждого окна можно собирать таким же образом, как для мозаичных элементов, рассмотренных выше. Таким образом, для каждого окна можно собирать следующую статистику 861:
(Rsum0, Gsum0, Bsum0) или sRlinear_sum0, sGlinear_sum0, sBlinear_sum0), или
(sRsum0, sGsum0, sBsum0) или (Ysum0, C1sum0, C2sum0), Count0
(Rsum1, Gsum1, Bsum1) или (sRlinear_sum1, sGlinear_sum1, sBlinear_sum1), или
(sRsum1, sGsum1, sBsum1) или (Ysum1, C1sum1, C2sum1), Count1
(Rsum2, G sum2, B sum2) или (sRlinear_sum2, sGlinear_sum2, sBlinear_sum2), или
(sRsum2, sGsum2, sBsum2) или (Ysum2, C1sum2, C2sum2), Count2
(Rsum3, Gsum3, Bsum3) или (sRlinear_sum3, sGlinear_sum3, sBlinear_sum3), или
(sRsum3, sGsum3, sBsum3) или (Ysum3, C1sum3, C2sum3), Count3, или
Ysum, cond(Ysum), Ycount1, Ycount2 (из camY)
В вышеприведенной статистике, Count0-3 представляет счетчик пикселей, которые удовлетворяют пиксельным условиям, соответствующим выбранным четырем пиксельным фильтрам для конкретного окна. Из восьми доступных пиксельных фильтров PF0-PF7, четыре активных пиксельных фильтра можно выбирать независимо для каждого окна. Дополнительно, один из наборов статистики можно собирать с использованием пиксельных фильтров или статистики яркости camY. Оконная статистика, собранная для AWB и AE, может, в одном варианте осуществления, отображаться в один или более регистров.
[00423] Согласно фиг.82, логика 742 статистики 3A также может быть сконфигурирована для получения статистики 859 суммарной яркости по строке для одного окна с использованием значения яркости, camY, для преобразования цветового пространства камеры. Эту информацию можно использовать для обнаружения и компенсации мерцания. Мерцание генерируется периодическим изменением в некоторых люминесцентных и накальных источниках света, обычно вызванного сигналом мощности переменного тока. Например, на фиг.90 показан график, демонстрирующий, как мерцание может быть вызвано изменениями в источнике света. Обнаружение мерцания, таким образом, можно использовать для обнаружения частоты мощности переменного тока, используемой для источника света (например, 50 Гц или 60 Гц). Когда частота известна, мерцания можно избежать посредством задания времени интегрирования датчика изображения равным целому кратному периода мерцания.
[00424] Для обнаружения мерцания, яркость камеры, camY, накапливается по каждой строке. Вследствие понижающей дискретизации входных байеровских данных, каждое значение camY может соответствовать 4 строкам исходных первичных данных изображения. Затем управляющая логика и/или программно-аппаратное обеспечение может осуществлять частотный анализ среднего по строке или, что более надежно, разностей средних по строке по последовательным кадрам для определения частоты мощности переменного тока, связанной с конкретным источником света. Например, согласно фиг.90, времена интегрирования для датчика изображения могут базироваться на временах t1, t2, t3 и t4 (например, таким образом, чтобы интегрирование происходило в моменты времени, когда источник освещения, демонстрирующий изменения, имеет, в общем случае, один и тот же уровень яркости.
[00425] В одном варианте осуществления, может задаваться окно суммарной яркости по строке и статистика 859 сообщается для пикселей в этом окне. В порядке примера, для захвата видео в формате 1080p HD, предполагая, что окно имеет высоту 1024 пикселя, генерируется 256 суммарных яркостей по строке (например, по одной сумме для каждых четырех строк вследствие понижающей дискретизации логикой 795), и каждое накопленное значение можно выразить 18 битами (например, 8-битовыми значениями camY для до 1024 выборок на строку).
[00426] Логика 742 сбора статистики 3A, показанная на фиг.82, также может обеспечивать сбор статистики 842 автофокусировки (AF) посредством логики 841 статистики автофокусировки. Функциональная блок-схема, демонстрирующая вариант осуществления логики 841 статистики AF, более подробно представлена на фиг.91. Как показано, логика 841 статистики AF может включать в себя горизонтальный фильтр 843 и детектор 844 края, который применяется к исходному байеровскому RGB (без понижающей дискретизации), два фильтра 846 3×3 по Y из Байера, и два фильтра 847 3×3 по camY. В целом, горизонтальный фильтр 843 обеспечивает точную статистику разрешения для каждой цветовой компоненты, фильтры 846 3×3 могут обеспечивать точную статистику разрешения по BayerY (байеровский RGB с примененным преобразованием 3×1 (логика 845)), и фильтры 847 3×3 могут обеспечивать более грубую двухмерную статистику по camY (поскольку camY получается с использованием данных байеровского RG уменьшенного масштаба, т.е. логики 815). Кроме того, логика 841 может включать в себя логику 852 для прореживания байеровских RGB данных (например, усреднения 2×2, усреднения 4×4 и т.д.), и прореженные байеровские RGB данные 853 можно фильтровать с использованием фильтров 854 3×3 для генерации фильтрованного выходного сигнала 855 для прореженных байеровских RGB данных. Настоящий вариант осуществления обеспечивает 16 окон статистики. На границах первичного кадра, краевые пиксели дублируются для фильтров логики 841 статистики AF. Различные компоненты логики 841 статистики AF более подробно описаны ниже.
[00427] Прежде всего, процесс обнаружения горизонтального края включает в себя применение горизонтального фильтра 843 ля каждой цветовой компоненты (R, Gr, Gb, B), сопровождаемого необязательным детектором 844 края на каждом цветовом компоненте. Таким образом, в зависимости от условий формирования изображения, эта конфигурация позволяет устанавливать логику 841 статистики AF как фильтр высоких частот без обнаружения края (например, с отключенным детектором края) или, альтернативно, как фильтр низких частот, сопровождаемый детектором края (например, с включенным детектором края). Например, в условиях низкой освещенности, горизонтальный фильтр 843 может быть более восприимчив к шуму, и, таким образом, логика 841 может конфигурировать горизонтальный фильтр как фильтр низких частот, сопровождаемый включенным детектором 844 края. Как показано, сигнал 848 управления может включать или отключать детектор 844 края. Статистика из разных цветовых каналов используются для определения направления фокуса для повышения резкости, поскольку разные цвета могут фокусироваться на разной глубине. В частности, логика 841 статистики AF может обеспечивать средства управления автофокусировкой с использованием комбинации грубых и точных регулировок (например, фокусного расстояния объектива). Варианты осуществления таких средств описаны более подробно описаны ниже.
[00428] В одном варианте осуществления, горизонтальный фильтр может представлять собой 7-отводный фильтр и может быть задан следующим образом в уравнениях 41 и 42:
out(i)=(af_horzfilt_coeff[0] *(in(i-3)+in(i+3))+af_horzfilt_coeff[1] *(in(i-2)+in(i+2))+(41)
af_horzfilt_coeff[2] *(in(i-1)+in(i+1))+af_horzfilt_coeff[3]*in(i))
out(i)=max(-255, min(255, out(i))) (42)
Здесь, каждый коэффициент af_horzfilt_coeff[0:3] может находиться в диапазоне [-2, 2], и i представляет индекс входного пикселя для R, Gr, Gb или B. Фильтрованный выходной сигнал out(i) может отсекаться между минимальным и максимальным значениями -255 и 255, соответственно (уравнение 42). Коэффициенты фильтрации можно задавать независимо для каждой цветовой компоненты.
[00429] Необязательный детектор 844 края может быть предусмотрен на выходе горизонтального фильтра 843. В одном варианте осуществления, детектор 844 края можно задать как:
edge(i)=abs(-2*out(i-1)+2*out(i+1))+abs(-out(i-2)+ out(i+2))(43)
edge (i)=max(0, min(255, edge(i))) (44)
Таким образом, детектор 844 края, когда включен, может выводить значение на основании двух пикселей по обе стороны текущего входного пикселя i, как показано в уравнении 43. Результат можно обрезать до 8-битового значения между 0 и 255, как показано в уравнении 44.
[00430] В зависимости от того, обнаружен ли край, окончательный выходной сигнал пиксельного фильтра (например, фильтра 843 и детектора 844) можно выбирать, либо как выходной сигнал горизонтального фильтра 843, либо как выходной сигнал детектора 844 края. Например, как показано в уравнении 45, выходным сигналом 849 детектора 844 края может быть edge(i), если край обнаружен, или абсолютное значение выходного сигнала горизонтального фильтра out(i), если край не обнаружен.
edge(i)=(af_horzfilt_edge_detected) ? edge(i): abs(out(i)) (45)
Для каждого окна накопленные значения, edge_sum[R, Gr, Gb, B], можно выбирать, либо как (1) сумму edge(j,i) для каждого пикселя по окну, либо как (2) максимальное значение edge(i) по линии в окне, max(edge), просуммированное по линиям в окне. Предполагая, что размер первичного кадра составляет 4096×4096 пикселей, количество битов, необходимых для хранения максимальных значений edge_sum[R, Gr, Gb, B], равно 30 битам (например, 8 битов на пиксель, плюс 22 бита для окна, покрывающего весь первичный кадр изображения).
[00431] Как рассмотрено, фильтры 847 3×3 для яркости camY могут включать в себя два программируемых фильтра 3×3, именуемые F0 и F1, которые применяются к camY. Результат фильтра 847 поступает либо на квадратичную функцию, либо на функцию абсолютного значения. Результат накапливается по данному окну AF для обоих фильтров F0 и F1 3×3 для генерации краевого значения яркости. В одном варианте осуществления, краевые значения яркости на каждом пикселе camY задаются следующим образом:
edgecamY_FX(j,i)=FX * camY (46)
=FX(0,0) * camY (j-1, i-1)+FX(0,1) * camY (j-1, i)+FX(0,2) * camY (j-1, i+1)+
FX(1,0) * camY (j, i-1)+FX(1,1) * camY (j, i)+FX(1,2) * camY (j, i+1)+
FX(2,0) * camY (j+1, i-1)+FX(2,1) * camY (j+1, i)+FX(2,2) * camY (j+1, i+1)
edgecamY_FX(j,i)=f(max(-255, min(255, edgecamY_FX(j,i)))) (47)
f(a)=a^2 or abs(a)
где FX представляет программируемые фильтры 3×3, F0 и F1, со знаковыми коэффициентами в диапазоне [-4, 4]. Индексы j и i представляют положения пикселя в изображении camY. Как рассмотрено выше, фильтр по camY может обеспечивать грубую статистику разрешения, поскольку camY выводится с использованием байеровских RGB данных уменьшенного масштаба (например, из 4×4 в 1). Например, в одном варианте осуществления, фильтры F0 и F1 можно устанавливать с использованием оператора Шарра, который обеспечивает улучшенную вращательную симметрию, чем оператор Собеля, пример чего показан ниже:
[00432] Для каждого окна, накопленные значения 850, определенные фильтрами 847, edgecamY_FX_sum (где FX=F0 и F1), можно выбирать либо как (1) сумму edgecamY_FX(j,i) для каждого пикселя по окну, либо как (2) максимальное значение edgecamY_FX(j) по линии в окне, просуммированное по линиям в окне. В одном варианте осуществления, edgecamY_FX_sum может достигать насыщения при 32-битовом значении, когда f(a) устанавливается равным a^2 для обеспечения “более пиковой” статистики с повышенным разрешением. Во избежание насыщения, максимальный размер окна X*Y в пикселях первичного кадра можно устанавливать таким образом, чтобы он не превышал всего 1024×1024 пикселя (например, т.е. X*Y <=1048576 пикселей). Как упомянуто выше, f(a) также можно установить как абсолютное значение для обеспечения более линейной статистики.
[00433] Фильтры 846 AF 3×3 на Y Байера можно задавать аналогичным образом, как фильтры 3×3 в camY, но они применяются к значениям яркости Y, генерируемым из байеровской четверки (2×2 пикселя). Прежде всего, 8-битовые байеровские RGB значения преобразуются в Y с программируемыми коэффициента в диапазоне [0, 4] для генерации значения Y, сбалансированного по уровню белого, как показано ниже в уравнении 48:
bayerY=max(0, min(255, bayerY_Coeff[0] * R+bayerY_Coeff[1] * (Gr+Gb)/2 + bayerY_Coeff[2] * B)) (48)
[00434] Аналогично фильтрам 847 для camY, фильтры 846 3×3 для яркости bayerY могут включать в себя два программируемых фильтра 3×3, именуемые F0 и F1, которые применяются к bayerY. Результат фильтра 846 поступает либо на квадратичную функцию, либо на функцию абсолютного значения. Результат накапливается по данному окну AF для обоих фильтров F0 и F1 3×3 для генерации краевого значения яркости. В одном варианте осуществления, краевые значения яркости на каждом пикселе bayerY задаются следующим образом:
edgebayerY_FX(j,i)=FX * bayerY (49)
=FX(0,0) * bayerY (j-1, i-1)+FX(0,1) * bayerY (j-1, i)+FX(0,2) * bayerY (j-1, i)+
FX(1,0) * bayerY (j, i-1)+FX(1,1) * bayerY (j, i)+FX(1,2) * bayerY (j-1, i)+
FX(2,0) * bayerY (j+1, i-1)+FX(2,1) * bayerY (j+1, i)+FX(2,2) * bayerY (j+1, i)
edgebayerY_FX(j,i)=f(max(-255, min(255, edgebayerY_FX(j,i)))) (50)
f(a)=a^2 или abs(a)
где FX представляет программируемые фильтры 3×3, F0 и F1, со знаковыми коэффициентами в диапазоне [-4, 4]. Индексы j и i представляют положения пикселя в изображении bayerY. Как рассмотрено выше, фильтр по Y Байера может обеспечивать точную статистику разрешения, поскольку байеровский RGB сигнал, принятый логикой 841 AF, не прорежен. Исключительно в порядке примера, фильтры F0 и F1 логики 846 фильтра можно устанавливать с использованием одной из следующих конфигураций фильтра:
[00435] Для каждого окна, накопленные значения 851, определенные фильтрами 846, edgebayerY _FX_sum (где FX=F0 и F1), можно выбирать либо как (1) сумму edgebayerY_FX(j,i) для каждого пикселя по окну, либо как (2) максимальное значение edgebayerY_FX(j) по линии в окне, просуммированное по линиям в окне. В данном случае, edgebayerY _FX_sum может достигать насыщения при 32 битах, когда f(a) устанавливается равным a^2. Таким образом, во избежание насыщения, максимальный размер окна X*Y в пикселях первичного кадра следует устанавливать таким образом, чтобы он не превышал всего 512×512 пикселей (например, X*Y <=262144). Как рассмотрено выше, задавая f(a) как a^2, можно обеспечить более пиковую статистику, а задавая f(a) как abs(a), можно обеспечить более линейную статистику.
[00436] Как рассмотрено выше, статистика 842 для AF собирается для 16 окон. Окна могут представлять собой любую прямоугольную область, каждый размер которой кратен 4 пикселям. Поскольку каждая логика 846 и 847 фильтрации включает в себя два фильтра, в ряде случаев, один фильтр можно использовать для нормализации по 4 пикселям и может быть сконфигурирован для фильтрации в вертикальном и горизонтальном направлениях. Кроме того, в некоторых вариантах осуществления, логика 841 AF может нормализовать статистику AF по яркости. Это может осуществляться посредством задания одного или более фильтров логических блоков 846 и 847 как обходных фильтров. В некоторых вариантах осуществления, положение окон может ограничиваться величиной, кратной 4 пикселям, и допустимо перекрывание окон. Например, одно окно можно использовать для получения значений нормализации, а другое окно можно использовать для дополнительной статистики, например, дисперсии, как рассмотрено ниже. В одном варианте осуществления, фильтры AF (например, 843, 846, 847) могут не реализовать дублирование пикселей на краю кадра изображения и, таким образом, чтобы фильтры AF использовали все действительные пиксели, окна AF можно устанавливать таким образом, чтобы каждое из них располагалось, по меньшей мере, в 4 пикселях от верхнего края кадра, по меньшей мере, в 8 пикселях от нижнего края кадра и, по меньшей мере, в 12 пикселях от левого/правого края кадра. В проиллюстрированном варианте осуществления, для каждого окна можно собирать и сообщать следующую статистику:
32-битовая edgeGr_sum для Gr
32-битовая edgeR_sum для R
32-битовая edgeB_sum для B
32-битовая edgeGb_sum для Gb
32-битовая edgebayerY_F0_sum для Y из Байера для filter0 (F0)
32-битовая edgebayerY_F1_sum для Y из Байера для filter1 (F1)
32-битовая edgecamY_F0_sum для camY для filter0 (F0)
32-битовая edgecamY_F1_sum для camY для filter1 (F1)
В таком варианте осуществления, память, необходимая для хранения статистики 842 AF, может составлять 16 (окон) умноженные на 8 (Gr, R, B, Gb, bayerY_F0, bayerY_F1, camY_F0, camY_F1), умноженные на 32 бита.
[00437] Таким образом, в одном варианте осуществления, накопленное значение на окно можно выбирать между: выходным сигналом фильтра (который может быть сконфигурирован как настройка по умолчанию), входным пикселем или входным пикселем в квадрате. Выбор может осуществляться для каждого из 16 окон AF, и может применяться ко всем 8 статистическим параметрам AF (перечисленным выше) в данном окне. Это можно использовать для нормирования показателя AF между двумя перекрывающимися окнами, одно из которых сконфигурировано для сбора выходного сигнала фильтра, и другое сконфигурировано для сбора суммы входных пикселей. Дополнительно, для вычисления дисперсии пикселя в случае двух перекрывающихся окон, одно окно может быть сконфигурировано для сбора суммы входных пикселей, а другое для сбора суммы квадратов входных пикселей, таким образом, благодаря чему, дисперсию можно вычислять как:
Variance = (avg_pixel2) - (avg_pixel)^2
[00438] С использованием статистики AF, управляющая логика 84 ISP (фиг.7) может быть сконфигурирована для регулировки фокусного расстояния объектива устройства формирования изображения (например, 30) с использованием ряда регулировок фокусного расстояния на основании “показателей” грубой и точной автофокусировки для фокусировки изображения. Как рассмотрено выше, фильтры 847 3×3 для camY могут обеспечивать грубую статистику, тогда как горизонтальный фильтр 843 и детектор 844 края может обеспечивать сравнительно более точную статистику для каждой цветовой компоненты, тогда как фильтры 846 3×3 на BayerY могут обеспечивать точную статистику на BayerY. Кроме того, фильтры 854 3×3 на прореженном байеровском RGB сигнале 853 могут обеспечивать грубую статистику для каждого цветового канала. Как дополнительно рассмотрено ниже, показатели AF можно вычислять на основании выходных значений фильтра для конкретного входного сигнала (например, суммы выходных сигналов F0 и F1 фильтра для прореженных camY, BayerY, байеровского RGB или на основании выходных сигналов детектора горизонтали/края и т.д.).
[00439] Фиг.92 демонстрирует график 856, который изображает кривые 858 и 860, которые представляют показатели грубой и точной AF, соответственно. Как показано, показатели грубой AF на основании грубой статистики могут иметь более линейную характеристику относительно фокусного расстояния объектива. Таким образом, в любой позиции фокуса, движение объектива может генерировать изменение показателя автофокусировки, которое можно использовать для обнаружения улучшения или ухудшения фокусировки изображения. Например, увеличения показателя грубой AF после регулировки объектива может указывать, что фокусное расстояние регулируется в правильном направлении (например, к оптической позиции фокуса).
[00440] Однако, по мере приближения к оптической позиции фокуса, изменение показателя грубой AF для меньших шагов регулировки объектива может возрастать, затрудняя распознавание верного направления регулировки фокуса. Например, как показано на графике 856, изменение показателя грубой AF между грубой позицией (CP) CP1 и CP2 представлено как ∆C12, что демонстрирует увеличение в целом от CP1 к CP2. Однако, как показано, от CP3 к CP4, изменение ∆C34 показателя грубой AF (который проходит через оптимальную позицию фокуса (OFP)), хотя все еще увеличивается, относительно меньше. Следует понимать, что позиции CP1-CP6 вдоль фокусного расстояния L не обязаны соответствовать величинам шага, используемым логикой автофокусировки вдоль фокусного расстояния. Таким образом, между каждой грубой позицией могут использоваться дополнительные шаги, которые не показаны. Проиллюстрированные позиции CP1-CP6 призваны лишь демонстрировать, как изменение показателя грубой AF может постепенно уменьшаться, когда позиция фокуса приближается к OFP.
[00441] Когда приближенная позиция OFP определена (например, на основании показателей грубой AF, показанных на фиг.92, приближенная позиция OFP может находиться между CP3 и CP5), значения показателя точной AF, представленные кривой 860, можно оценивать для уточнения позиции фокуса. Например, показатели точной AF могут быть уплощенными, когда изображение расфокусировано, поэтому большое позиционное изменение объектива не приводит к большому изменению показателя точной AF. Однако когда позиция фокуса достигает оптической позиции фокуса (OFP), показатель точной AF может изменяться резко при малых позиционных регулировках. Таким образом, находя положение пика или вершины 862 на кривой 860, показателя точной AF, можно определить OFP для текущей сцены изображения. Таким образом, в итоге, показатели грубой AF можно использовать для определения общей окрестности оптической позиции фокуса, тогда как показатели точной AF можно использовать для точного указания более точной позиции в этой окрестности.
[00442] В одном варианте осуществления, процесс автофокусировки может начинаться с получения показателей грубой AF по всему доступному фокусному расстоянию, начиная с позиции 0 и заканчивая позицией L (показанной на графике 856), и определять показатели грубой AF в различных шаговых позициях (например, CP1-CP6). В одном варианте осуществления, после того, как позиция фокуса объектива достигнет позиции L, позицию можно сбрасывать на 0 до оценивания показателей AF в различных фокальных позициях. Например, это может быть обусловлено временем успокоения пружины механического элемента, управляющего позицией фокуса. В этом варианте осуществления, после сброса в позицию 0, позицию фокуса можно регулировать в направлении позиции L к позиции, которая первой указала отрицательное изменение показателя грубой AF, в данном случае, позиции CP5, демонстрирующей отрицательное изменение ∆C45 относительно позиции CP4. От позиции CP5, позицию фокуса можно регулировать малыми приращениями относительно приращений, используемых при регулировках показателя грубой AF (например, позиции FP1, FP2, FP3 и т.д.) обратно в направлении к позиции 0, одновременно ища пик 862 кривой 860 показателя точной AF. Как рассмотрено выше, позиция фокуса OFP, соответствующая пику 862 кривой 860 показателя точной AF, может быть оптимальной позицией фокуса для текущей сцены изображения.
[00443] Очевидно, что вышеописанные методы определения положения оптимальной области и оптимальный позиции фокуса могут именоваться “восхождением по выпуклой поверхности”, в том смысле, что изменения кривых показателей 858 и 860 AF анализируются для определения положения OFP. Кроме того, хотя анализ показателей грубой AF (кривая 858) и показателей точной AF (кривая 860) показан с использованием шагов одинакового размера для анализа грубого показателя (например, расстояния между CP1 и CP2) и шагов одинакового размера для анализа точного показателя (например, расстояния между FP1 и FP2), в некоторых вариантах осуществления, величины шага могут изменяться в зависимости от изменения показателя от позиции к позиции. Например, в одном варианте осуществления, размер шага между CP3 и CP4 можно уменьшить относительно размера шага между CP1 и CP2 поскольку общая дельта показателя грубой AF (∆C34) меньше дельты от CP1 до CP2 (∆C12).
[00444] Способ 864, изображающий этот процесс, представлен на фиг.93. Начиная с блока 865, показатель грубой AF определяется для данных изображения с различными шагами вдоль фокусного расстояния, от позиции 0 к позиции L (фиг.92). После этого, на блоке 866, показатели грубой AF анализируются, и грубая позиция, демонстрирующая первое отрицательное изменение показателя грубой AF, идентифицируется как исходный пункт для анализа показателя точной AF. Например, затем, на блоке 867, позиция фокуса пошагово изменяется обратно к начальной позиции 0 с меньшими шагами, причем показатель точной AF анализируется шаг за шагом, пока не будет найден пик кривой показателя AF (например, кривой 860 на фиг.92). На блоке 868, позиция фокуса, соответствующая пику, устанавливается как оптимальная позиция фокуса для текущей сцены изображения.
[00445] Как рассмотрено выше, вследствие времен успокоения механической пружины, вариант осуществления метода, показанного на фиг.93, можно адаптировать для первоначального получения показателей грубой AF по всему фокусному расстоянию, вместо того, чтобы анализировать каждую грубую позицию по одной и искать оптимальную зону фокусирования. Однако другие варианты осуществления, в которых времена успокоения пружины не столь важны, могут анализировать показатели грубой AF по одному шаг за шагом, вместо того, чтобы искать по всему фокусному расстоянию.
[00446] В некоторых вариантах осуществления, показатели AF можно определять с использованием значений яркости, сбалансированных по уровню белого, полученных из байеровских RGB данных. Например, значение яркости, Y, можно вывести посредством прореживания байеровской четверки 2×2 с коэффициентом 2, как показано на фиг.94, или посредством прореживания пиксельного блока 4×4, состоящего из четырех байеровских четверок 2×2, с коэффициентом 4, как показано на фиг.95. В одном варианте осуществления, показатели AF можно определить с использованием градиентов. В другом варианте осуществления, показатели AF можно определить посредством применения преобразования 3×3 с использованием оператора Шарра, который обеспечивает вращательную симметрию, в то же время, минимизируя средневзвешенные квадратичные угловые ошибки в области Фурье. В порядке примера, ниже показано вычисление показателя грубой AF на camY с использованием общего оператора Шарра (рассмотренного выше):
где in представляет прореженное значение Y яркости. В других вариантах осуществления, показатель AF для грубой и точной статистики можно вычислять с использованием других преобразований 3×3.
[00447] Регулировки автофокусировки также можно осуществлять по-разному в зависимости от цветовых компонент, поскольку объектив может по-разному влиять на разные длины волны света, из-за чего горизонтальный фильтр 843 применяется независимо к каждой цветовой компоненте. Таким образом, автофокусировка может осуществляться даже в присутствие хроматической аберрации в объективе. Например, поскольку красный и синий свет обычно фокусируется в разных позициях или на разном расстоянии относительно зеленого цвета при наличии хроматических аберраций, относительные показатели AF для каждого цвета можно использовать для определения направления к фокусу. Это лучше представлено на фиг.96, которая демонстрирует оптимальную позицию фокуса для цветовых каналов синего, красного и зеленого для объектива 870. Как показано, оптимальные фокальные позиции для красного, зеленого и синего изображены буквенными обозначениями R, G и B соответственно, каждая из которых соответствует показателю AF, при текущей позиции 872 фокуса. В общем случае, в такой конфигурации, может быть желательным выбирать оптимальную позицию фокуса как позицию, соответствующую оптимальной позиции фокуса для компонент зеленого (например, поскольку байеровский RGB имеет вдвое больше компонент зеленого, чем красного или синего), здесь позиция G. Таким образом, можно ожидать, что для оптимальной позиции фокуса, канал зеленого должен демонстрировать наивысший показатель автофокусировки. Таким образом, на основании позиций оптимальных фокальных позиций для каждого цвета (чем выше показатели AF, тем ближе к объективу), логика 841 AF и соответствующая управляющая логика 84 могут определять направление фокусировки на основании относительных показателей AF для синего, зеленого и красного. Например, если канал синего имеет более высокий показатель AF относительно канала зеленого (как показано на фиг.96), то позиция фокуса регулируется в отрицательном направлении (к датчику изображения) без первоначального анализа в положительном направление от текущей позиции 872. В некоторых вариантах осуществления, может осуществляться обнаружение или анализ источника света с использованием цветокоррелированных температур (CCT).
[00448] Кроме того, как упомянуто выше, также можно использовать показатели дисперсии. Например, пиксельные суммы и значения суммы квадратов пикселей можно накапливать для размеров блока (например, 8×8 - 32×32 пикселей) и можно использовать для получения показателей дисперсии (например, avg_pixel2) - (avg_pixel)^2). Дисперсии можно суммировать для получения показателя суммарной дисперсии для каждого окна. Меньшие размеры блока можно использовать для получения точных показателей дисперсии, и большие размеры блока можно использовать для получения более грубых показателей дисперсии.
[00449] Что касается логики 742 статистики 3A, показанной на фиг.82, логика 742 также может быть сконфигурирована для сбора компонентных гистограмм 874 и 876. Очевидно, что, гистограммы можно использовать для анализа распределения уровня пикселя в изображении. Это может оказаться полезным для реализации некоторых функций, например, выравнивания гистограммы, где данные гистограммы используются для определения спецификации гистограммы (согласования гистограммы). В порядке примера, гистограммы яркости можно использовать для AE (например, для регулировки/задания времен интегрирования датчика), и гистограммы цвета можно использовать для AWB. В настоящем варианте осуществления, гистограммы могут быть 256, 128, 64 или 32 бинов (где 8, 7, 6 и 5 старших битов пикселя используется для определения бина, соответственно) для каждой цветовой компоненты, что указано размером бина (BinSize). Например, когда пиксельные данные являются 14-битовыми, дополнительный масштабный коэффициент между 0-6 и смещение могут задаваться для определения, какой диапазон (например, какие 8 битов) пиксельных данных собирается в целях статистики. Номер бина можно получить следующим образом:
idx=((pixel-hist_offset)>>(6-hist_scale)
[00450] В одном варианте осуществления, бины цветовой гистограммы увеличиваются, только если индексы бинов находятся в диапазоне [0, 2^(8-BinSize)]:
if (idx>=0 && idx<2^(8-BinSize))
StatsHist[idx]+=Count;
[00451] В настоящем варианте осуществления, блок 142 статистической обработки может включать в себя два блока гистограммы. Эта первая гистограмма 874 (Hist0) может быть сконфигурирована для сбора пиксельных данных как части сбора статистики после прореживания 4×4. Для Hist0, компоненты можно выбирать как RGB, sRGBlinear, sRGB или YC1C2 с использованием схемы 880 выбора. Вторая гистограмма 876 (Hist1) может быть сконфигурирована для сбора пиксельных данных до конвейера статистики (до логики 738 коррекции дефектных пикселей), как показано более подробно на фиг.96. Например, первичные байеровские RGB данные (выход из 146) можно прореживать (для генерации сигнала 878) с использованием логики 882 посредством пропуска пикселей, как дополнительно рассмотрено ниже. Для канала зеленого, цвет можно выбирать между Gr, Gb или обоими Gr и Gb (в бинах зеленого накапливаются оба счетчика Gr и Gb).
[00452] Чтобы поддерживать ширину бина гистограммы одинаковой между двумя гистограммами, Hist1 может быть сконфигурирована для сбора пиксельных данных через каждые 4 пикселя (каждой второй байеровской четверки). Начало окна гистограммы определяет положение первой байеровской четверки, где гистограмма начинает накапливаться. Начиная с этого положения, каждая вторая байеровская четверка пропускается горизонтально и вертикально для Hist1. Начальным положением окна может быть любая позиция пикселя для Hist1, и, таким образом, пиксели, пропускаемые при вычислении гистограммы, можно выбирать, изменяя начальное положение окна. Hist1 можно использовать для сбора данных, представленных 884 на фиг.97, вблизи уровня черного для помощи в динамической компенсации уровня черного на блоке 739. Таким образом, хотя в целях иллюстрации, на фиг.97 она показана отдельно от логики 742 статистики 3A, следует понимать, что гистограмма 876 фактически может быть частью статистики, записанной в памяти, и может фактически физически располагаться в блоке 142 статистической обработки.
[00453] В настоящем варианте осуществления, бины красного (R) и синего (B) могут быть 20-битовыми, а бин зеленого (G) является 21-битовым (зеленый больше для обеспечения накопления Gr и Gb в Hist1). Это обеспечивает максимальный размер изображения 4160 на 3120 пикселей (12 MP). Необходимый размер внутренней памяти составляет 3×256×20(1) битов (3 цветовых компоненты, 256 бинов).
[00454] В отношении формата памяти, статистика для окон AWB/AE, окон AF, 2D цветовой гистограммы и компонентных гистограмм может отображаться в регистры для облегчения доступа со стороны программно-аппаратного обеспечения. В одном варианте осуществления, два указателя памяти можно использовать для записи статистики в память, один для мозаичной статистики 863, и другой для статистики 859 суммарных яркостей по строке, сопровождаемой всей остальной собранной статистикой. Все статистические данные записываются во внешнюю память, в качестве которой можно использовать память DMA. Адресные регистры памяти могут быть дважды буферизованными, благодаря чему, на каждом кадре может указываться новая ячейка памяти.
[00455] Прежде чем перейти к подробному рассмотрению логики 82 конвейерной обработки ISP, располагающейся после логики 80 предварительной обработки ISP, следует понять, что конфигурация различных функциональных логических блоков в блоках 142 и 144 статистической обработки (например, логических блоков 738, 739, 740, 741 и 742) и блоке 150 предварительной обработки пикселей ISP (например, логических блоков 650 и 652) призваны иллюстрировать только один вариант осуществления настоящего изобретения. Действительно, в других вариантах осуществления, проиллюстрированные здесь логические блоки, могут располагаться в другом порядке или могут включать в себя дополнительные логические блоки, которые могут осуществлять дополнительные функции обработки изображений, конкретно здесь не описанные. Кроме того, следует понимать, что операции обработки изображений, осуществляемые в блоках статистической обработки (например, 142 и 144), например коррекция затенения объектива, обнаружение/коррекция дефектных пикселей и компенсация уровня черного, осуществляются в блоках статистической обработки в целях сбора статистических данных. Таким образом, операции обработки, осуществляемые на данных изображения, принятых блоками статистической обработки, фактически не отражаются в сигнале 109 изображения (FEProcOut), который выводится из логики 150 предварительной обработки пикселей ISP и перенаправляется на логику 82 конвейерной обработки ISP.
[00456] Прежде чем продолжить, следует также отметить, что при наличии достаточного времени обработки и сходства между многими требованиями к обработке различных описанных здесь операций, можно переконфигурировать показанные здесь функциональные блоки для осуществления обработки изображений в последовательном, а не конвейерном режиме. Очевидно, что это может дополнительно снизить общую стоимость аппаратной реализации, но также может повысить требования к ширине полосы для доступа к внешней памяти (например, для кэширования/сохранения промежуточных результатов/данных).
ЛОГИКА ОБРАБОТКИ КОНВЕЙЕРА (“КОНВЕЙЕРНОЙ ОБРАБОТКИ”) ISP
[00457] На основании подробно описанной выше логики 80 предварительной обработки ISP, настоящее рассмотрение теперь сконцентрируется на логике 82 конвейерной обработки ISP. В общем случае, функция логики 82 конвейерной обработки ISP состоит в приеме первичных данные изображения, которые могут поступать из логики 80 предварительной обработки ISP или извлекаться из памяти 108, и в осуществлении дополнительных операций обработки изображений, т.е. до вывода данных изображения на устройство 28 отображения.
[00458] Блок-схема, демонстрирующая вариант осуществления логики 82 конвейерной обработки ISP, изображена на фиг.67. Как показано, логика 82 конвейерной обработки ISP может включать в себя логику 900 первичной обработки, логику 902 обработки RGB, и логику 904 обработки YCbCr. Логика 900 первичной обработки может осуществлять различные операции обработки изображений, например обнаружение и коррекцию дефектных пикселей, коррекцию затенения объектива, демозаику, а также применение коэффициентов усиления для автоматического баланса белого и/или установки уровня черного, как будет дополнительно описано ниже. Как показано в настоящем варианте осуществления, входным сигналом 908 на логику 900 первичной обработки может быть выходной сигнал 109 первичного пикселя (сигнал FEProcOut) из логики 80 предварительной обработки ISP или первичные пиксельные данные 112 из памяти 108, в зависимости от настоящей конфигурации логики 906 выбора.
[00459] В результате операций демозаики, осуществляемых в логике 900 первичной обработки, выходной сигнал 910 изображения может находиться в области RGB, и затем может перенаправляться на логику 902 обработки RGB. Например, как показано на фиг.98, логика 902 обработки RGB принимает сигнал 916, который может быть выходным сигналом 910 или сигналом 912 изображения RGB из памяти 108, в зависимости от настоящей конфигурации логики 914 выбора. Логика 902 обработки RGB может обеспечивать различные операции регулировки цвета RGB, включающие в себя цветовую коррекцию (например, с использованием матрицы цветовой коррекции), применение цветовых коэффициентов усиления для автоматической балансировки белого, а также отображения глобальных тонов, что будет дополнительно описано ниже. Логика 904 обработки RGB также может обеспечивать преобразование цветового пространства данных изображения RGB в цветовое пространство YCbCr (яркость/цветность). Таким образом, выходной сигнал 918 изображения может находиться в области YCbCr, и затем может перенаправляться на логику 904 обработки YCbCr.
[00460] Например, как показано на фиг.98, логика 904 обработки YCbCr принимает сигнал 924, который может быть выходным сигналом 918 из логики 902 обработки RGB или сигналом 920 YCbCr из памяти 108, в зависимости от настоящей конфигурации логики 922 выбора. Как будет более подробно рассмотрено ниже, логика 904 обработки YCbCr может обеспечивать операции обработки изображений в цветовом пространстве YCbCr, включающие в себя масштабирование, подавление цветности, яркостное повышение резкости, регулировки яркости, контрастности и цвета (BCC), отображение гаммы YCbCr, прореживание цветности и т.д. Выходной сигнал 926 изображения логики 904 обработки YCbCr может отправляться в память 108 или может выводиться из логики 82 конвейерной обработки ISP в качестве сигнала 114 изображения (фиг.7). Затем, в соответствии с вариантом осуществления схемы 32 обработки изображений, изображенной на фиг.7, сигнал 114 изображения может отправляться на устройство 28 отображения (либо непосредственно, либо через память 108) для просмотра пользователем, или может дополнительно обрабатываться с использованием машины сжатия (например, кодера 118), ЦП/ГП, машины графики и т.п. Дополнительно, согласно варианту осуществления, где блок 120 логики окончательной обработки ISP входит в состав схемы 32 обработки изображений (например, фиг.8), сигнал 114 изображения может направляться на логику 120 окончательной обработки ISP для дополнительной нижерасположенной последующей обработки.
[00461] В соответствии с вариантами осуществления настоящего изобретения, логика 82 конвейерной обработки ISP может поддерживать обработку первичных пиксельных данных в 8-битовом, 10-битовом, 12-битовом или 14-битовом форматах. Например, в одном варианте осуществления, 8-битовые, 10-битовые или 12-битовые входные данные могут преобразовываться в 14-битовые на входе логики 900 первичной обработки, и операции первичной обработки и обработки RGB могут осуществляться с 14-битовой точностью. В последнем варианте осуществления, 14-битовые данные изображения могут подвергаться понижающей дискретизации до 10 битов до преобразования данных RGB в цветовое пространство YCbCr, и обработка YCbCr (логика 904) может осуществляться с 10-битовой точностью.
[00462] Для обеспечения исчерпывающего описания различных функций, обеспеченных логикой 82 конвейерной обработки ISP, каждая из логики 900 первичной обработки, логики 902 обработки RGB и логики 904 обработки YCbCr, а также выходной логики для осуществления различных операций обработки изображений, которые можно реализовать в каждом соответствующем блоке логики 900, 902 и 904, будет последовательно рассмотрена ниже, начиная с логики 900 первичной обработки. Например, со ссылкой на фиг.99, проиллюстрирована блок-схема, демонстрирующая более детализированный вид варианта осуществления логики 900 первичной обработки, в соответствии с вариантом осуществления настоящего изобретения. Как показано, логика 900 первичной обработки включает в себя логику 930 коэффициента усиления, смещения и ограничения (GOC), логику 932 обнаружения/коррекции дефектных пикселей (DPDC), логику 934 шумопонижения, логику 936 коррекции затенения объектива, логику 938 GOC и логику 940 демозаики. Кроме того, хотя в рассмотренных ниже примерах предполагается использование матрицы байеровских цветовых фильтров с датчиком(ами) 90 изображения, следует понимать, что другие варианты осуществления настоящего изобретения могут использовать и другие типы цветовых фильтров.
[00463] Входной сигнал 908, который может быть первичным сигналом изображения, сначала принимается логикой 930 коэффициента усиления, смещения и ограничения (GOC). Логика 930 GOC может обеспечивать аналогичные функции и может быть реализована по аналогии с логикой 739 BLC блока 142 статистической обработки логики 80 предварительной обработки ISP, рассмотренной выше на фиг.68. Например, логика 930 GOC может обеспечивать коэффициент цифрового усиления, смещения и ограничение (отсечку) независимо для каждой цветовой компоненты R, B, Gr и Gb байеровского датчика изображения. В частности, логика 930 GOC может осуществлять автоматический баланс белого или устанавливать уровень черного первичных данных изображения. Кроме того, в некоторых вариантах осуществления, логику 930 GOC также можно использовать для коррекции или компенсации смещения между цветовыми компонентами Gr и Gb.
[00464] В ходе эксплуатации, входное значение для текущего пикселя сначала смещается на знаковое значение и умножается на коэффициент усиления. Эта операция может осуществляться с использованием формулы, показанной в вышеприведенном уравнении 11, где X представляет входное пиксельное значение для данной цветовой компоненты R, B, Gr или Gb, O[c] представляет знаковое 16-битовое смещение для текущей цветовой компоненты c, и G[c] представляет значение коэффициента усиления для цветовой компоненты c. Значения G[c] могут заранее определяться в ходе статистической обработки (например, в блоке 80 логики предварительной обработки ISP). В одном варианте осуществления, коэффициент усиления G[c] может представлять собой 16-битовое беззнаковое число с 2 битами целой части и 14 битами дробной части (например, в представлении 2.14 с плавающей запятой), и коэффициент усиления G[c] можно применять с округлением. Исключительно в порядке примера, коэффициент усиления G[c] может принимать значения в пределах от 0 до 4X.
[00465] Вычисленное пиксельное значение Y (которое включает в себя коэффициент усиления G[c] и смещение O[c]) из уравнения 11 затем ограничивается минимальным и максимальным диапазоном в соответствии с уравнением 12. Как рассмотрено выше, переменные min[c] и max[c] может представлять знаковые 16-битовые “значения отсечки” для минимального и максимального выходных значений, соответственно. В одном варианте осуществления, логика 930 GOC также может быть сконфигурирована для поддержания счетчика количества пикселей, которые были отсечены выше и ниже максимального и минимального диапазонов, соответственно, для каждой цветовой компоненты.
[00466] Затем выходной сигнал логики 930 GOC перенаправляется на логику 932 обнаружения и коррекции дефектных пикселей. Как рассмотрено выше со ссылкой на фиг.68 (логика DPDC 738), наличие дефектных пикселей может объясняться рядом факторов, и они могут включать в себя “горячие” (или с утечкой) пиксели, “залипшие” пиксели и “мертвые пиксели, где горячие пиксели демонстрируют сверхнормативную утечку заряда относительно недефектных пикселей и, таким образом, могут выглядеть ярче, чем недефектный пиксель, и где залипший пиксель выглядит, как постоянно включенный (например, полностью заряженный) и, таким образом, выглядит ярче, тогда как мертвый пиксель выглядит, как постоянно отключенный. По этой причине, может быть желательным иметь схему обнаружения пикселей, достаточно надежную для идентификации и исправления различных типов сценариев отказа. В частности, при сравнении с предварительной логикой 738 DPDC, которая может обеспечивать только обнаружение/коррекцию динамических дефектов, логика 932 конвейерной обработки DPDC может обеспечивать обнаружение/коррекцию фиксированных или статических дефектов, обнаружение/коррекцию динамических дефектов, а также удаление спеклов.
[00467] В соответствии с вариантами осуществления описанного здесь изобретения, коррекция/обнаружение дефектных пикселей, осуществляемые логикой 932 DPDC, могут происходить независимо для каждой цветовой компоненты (например, R, B, Gr и Gb), и могут включать в себя различные операции для обнаружения дефектных пикселей, а также для коррекции обнаруженных дефектных пикселей. Например, в одном варианте осуществления, операции обнаружения дефектных пикселей могут обеспечивать обнаружение статических дефектов, динамических дефектов, а также обнаружение спекла, которые могут быть связаны с электрическими помехами или шумом (например, фотонным шумом), которые могут присутствовать в датчике формирования изображения. По аналогии, спекл может возникать в изображении как, по-видимому, случайные шумовые артефакты, аналогично тому, как статика может возникать на дисплее, например, телевизионном дисплее. Кроме того, как упомянуто выше, коррекция динамических дефектов считается динамической в том смысле, что характеризация пикселя как дефектного в данный момент времени может зависеть от данных изображения в соседних пикселях. Например, залипший пиксель, который всегда имеет максимальную яркость, может не рассматриваться как дефектный пиксель, если залипший пиксель располагается в области текущего изображения, где преобладают яркие белые цвета. Напротив, если залипший пиксель находится в области текущего изображения, где преобладают черный или более темные цвета, то залипший пиксель можно идентифицировать как дефектный пиксель в ходе обработки логикой 932 DPDC и соответственно корректировать.
[00468] В отношении обнаружения статических дефектов, положение каждого пикселя сравнивается с таблицей статических дефектов, где могут храниться данные, соответствующие положению пикселей, в отношении которых известно, что они дефектные. Например, в одном варианте осуществления, логика 932 DPDC может отслеживать обнаружение дефектных пикселей (например, с использованием механизма счетчика или регистра) и, если наблюдаются постоянные отказы конкретного пикселя, положение этого пикселя заносится в таблицу статических дефектов. Таким образом, в ходе обнаружения статических дефектов, если определено, что положение текущего пикселя указано в таблице статических дефектов, то текущий пиксель идентифицируется как дефектный пиксель, и значение замены определяется и временно сохраняется. В одном варианте осуществления, значение замены может представлять собой значение предыдущего пикселя (на основании порядка сканирования) той же цветовой компоненты. Значение замены можно использовать для коррекции статического дефекта в ходе обнаружения и коррекции динамических дефектов/спеклов, как будет рассмотрено ниже. Дополнительно, если предыдущий пиксель находится вне первичного кадра 310 (фиг.23), корректировать в процессе коррекции динамических дефектов. Кроме того, из соображений памяти, в таблице статических дефектов может храниться конечное количество записей положения. Например, в одном варианте осуществления, таблицу статических дефектов можно реализовать как очередь FIFO, сконфигурированную для хранения всего 16 положений для каждых двух линий данных изображения. Тем не менее, положения, заданные в таблице статических дефектов будут корректироваться с использованием значения замены предыдущего пикселя (а не посредством процесса обнаружения динамических дефектов, рассмотренного ниже). Как упомянуто выше, варианты осуществления настоящего изобретения также могут обеспечивать обновление таблица статических дефектов с перерывами с течением времени.
[00469] Варианты осуществления могут обеспечивать таблицу статических дефектов, реализуемую во внутрикристальной памяти или внекристальной памяти. Очевидно, что использование внутрикристальной реализации может увеличить общую площадь/размер микросхемы, тогда как использование внекристальной реализации может уменьшить площадь/размер микросхемы, но при этом увеличить требования к пропускной способности памяти. Таким образом, следует понимать, что таблицу статических дефектов можно реализовать либо на кристалле, либо вне кристалла в зависимости от требований конкретной реализации, т.е. полного количества пикселей, подлежащих хранению в таблице статических дефектов.
[00470] Процессы обнаружения динамических дефектов и спеклов могут быть сдвинуты по времени относительно рассмотренного выше процесса обнаружения статических дефектов. Например, в одном варианте осуществления, процесс обнаружения динамических дефектов и спеклов может начинаться после того, как процесс обнаружения статических дефектов проанализирует две линии сканирования (например, строки) пикселей. Очевидно, что, это позволяет идентифицировать статические дефекты и их соответствующие значения замены, подлежащие определению до обнаружения динамических дефектов/спеклов. Например, в процессе обнаружения динамических дефектов/спеклов, если текущий пиксель был ранее помечен как статический дефект, вместо применения операций обнаружения динамических дефектов/спеклов, статический дефект без труда корректируется с использованием ранее оцененного значения замены.
[00471] В отношении обнаружения динамических дефектов и спеклов, эти процессы могут происходить последовательно или параллельно. Обнаружение и коррекция динамических дефектов и спеклов, которые осуществляются логикой 932 DPDC, могут опираться на адаптивное обнаружение края с использованием градиентов в направлении от пикселя к пикселю. В одном варианте осуществления, логика 932 DPDC может выбирать восемь непосредственных соседей текущего пикселя, имеющих ту же цветовую компоненту, которые используются в первичном кадре 310 (фиг.23). Другими словами, текущий пиксель и его восемь непосредственных соседей P0, P1, P2, P3, P4, P5, P6 и P7 могут формировать область 3×3, как показано ниже на фиг.100.
[00472] Однако следует отметить, что в зависимости от положения текущего пикселя P, пиксели вне первичного кадра 310 не рассматриваются при вычислении градиентов от пикселя к пикселю. Например, в отношении “верхнего левого” случая 942, показанного на фиг.100, текущий пиксель P находится в верхнем левом углу первичного кадра 310, и, таким образом, соседние пиксели P0, P1, P2, P3 и P5 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P4, P6 и P7 (N=3). В “верхнем” случае 944, текущий пиксель P находится на самом верхнем краю первичного кадра 310, и, таким образом, соседние пиксели P0, P1 и P2 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P3, P4, P5, P6 и P7 (N=5). Затем, в “верхнем правом” случае 946, текущий пиксель P находится в верхнем правом углу первичного кадра 310, и, таким образом, соседние пиксели P0, P1, P2, P4 и P7 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P3, P5 и P6 (N=3). В “левом” случае 948, текущий пиксель P находится на самом левом краю первичного кадра 310, и, таким образом, соседние пиксели P0, P3 и P5 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P1, P2, P4, P6 и P7 (N=5).
[00473] В “центральном” случае 950, все пиксели P0-P7 лежат в первичном кадре 310 и, таким образом, используются при определении градиентов от пикселя к пикселю (N=8). В “правом” случае 952, текущий пиксель P находится на самом правом краю первичного кадра 310, и, таким образом, соседние пиксели P2, P4 и P7 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P0, P1, P3, P5 и P6 (N=5). Дополнительно, в “нижнем левом” случае 954, текущий пиксель P находится в нижнем левом углу первичного кадра 310, и, таким образом, соседние пиксели P0, P3, P5, P6 и P7 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P1, P2 и P4 (N=3). В “нижнем” случае 956, текущий пиксель P находится на самом нижнем краю первичного кадра 310, и, таким образом, соседние пиксели P5, P6 и P7 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P0, P1, P2, P3 и P4 (N=5). Наконец, в “нижнем правом” случае 958, текущий пиксель P находится в нижнем правом углу первичного кадра 310, и, таким образом, соседние пиксели P2, P4, P5, P6 и P7 вне первичного кадра 310 не рассматриваются, оставляя только пиксели P0, P1 и P3 (N=3).
[00474] Таким образом, в зависимости от позиции текущего пикселя P, количество пикселей, используемых при определении градиентов от пикселя к пикселю, может составлять 3, 5 или 8. В проиллюстрированном варианте осуществления, для каждого соседнего пикселя (k=0~7) внутри границы изображения (например, первичный кадр 310), градиенты от пикселя к пикселю можно вычислять следующим образом:
, для (только для k в первичном кадре) (51)
Дополнительно, средний градиент, Gav, можно вычислять как разность между текущим пикселем и средним, Pav, окружающих его пикселей, как показано в нижеследующих уравнениях:
, где N=3, 5 или 8 (в зависимости от позиции пикселя) (52a)
(52b)
Значения градиента от пикселя к пикселю (уравнение 51) можно использовать при определении случая динамического дефекта, и среднее соседних пикселей (уравнения 52a и 52b) можно использовать при идентификации случаев спеклов, как дополнительно рассмотрено ниже.
[00475] В одном варианте осуществления, обнаружение динамических дефектов может осуществляться логикой 932 DPDC следующим образом. Прежде всего, предполагается, что пиксель является дефектным, если некоторое количество градиентов Gk находятся на конкретном пороге или ниже, который обозначается переменной dynTh (порог динамического дефекта). Таким образом, для каждого пикселя, накапливается счетчик (C) количества градиентов для соседних пикселей внутри границ изображения, которые находятся на пороге или ниже dynTh. Порог dynTh может быть комбинацией фиксированной пороговой компоненты и динамической пороговой компоненты, которая может зависеть от “активности” окружающих пикселей. Например, в одном варианте осуществления, динамическую пороговую компоненту dynTh можно определить посредством вычисления значения высокочастотной компоненты Phf на основании суммирования абсолютной разности между средними пиксельными значениями Pav (уравнение 52a) и каждым соседним пикселем, как показано ниже:
где N=3, 5 или 8 (52c)
В случаях, когда пиксель располагается в углу изображения (N=3) или на краю изображения (N=5), Phf можно умножать на 8/3 или 8/5, соответственно. Очевидно, что это гарантирует, что высокочастотная компонента Phf нормализуется на основании восьми соседних пикселей (N=8).
[00476] Определив Phf, порог dynTh обнаружения динамических дефектов можно вычислить, как показано ниже:
dynTh=dynTh1+(dynTh2 × Phf), (53)
где dynTh1 представляет фиксированную пороговую компоненту, и dynTh2 представляет динамическую пороговую компоненту и является множителем для Phf в уравнении 53. Для каждой цветовой компоненты может быть обеспечена отдельная фиксированная пороговая компонента dynTh1, но для каждого пикселя одного и того же цвета dynTh1 один и тот же. Исключительно в порядке примера, dynTh1 можно устанавливать, по меньшей мере, выше дисперсии шума в изображении.
[00477] Динамическую пороговую компоненту dynTh2 можно определить на основании некоторой характеристики изображения. Например, в одном варианте осуществления, dynTh2 можно определить с использованием сохраненных эмпирических данных, касающихся экспозиции и/или времени интегрирования датчика. Эмпирические данные могут определяться в ходе калибровки датчика изображения (например, 90) и могут связывать значения динамической пороговой компоненты, которые можно выбирать для dynTh2, с каждой из ряда точек данных. Таким образом, на основании текущего значения экспозиции и/или времени интегрирования датчика, которые можно определить в ходе статистической обработки в логике 80 предварительной обработки ISP, dynTh2 можно определить посредством выбора значения динамической пороговой компоненты из сохраненных эмпирических данных, которые соответствуют текущему значению экспозиции и/или времени интегрирования датчика. Дополнительно, если текущее значение экспозиции и/или времени интегрирования датчика не соответствует непосредственно одной из эмпирических точек данных, то dynTh2 можно определить посредством интерполяции значений динамической пороговой компоненты, связанных с точками данных, между которыми находится текущее значение экспозиции и/или времени интегрирования датчика. Кроме того, по аналогии с фиксированной пороговой компонентой dynTh1, динамическая пороговая компонента dynTh2 может иметь разные значения для каждой цветовой компоненты. Таким образом, составное пороговое значение dynTh может изменяться для каждой цветовой компоненты (например, R, B, Gr, Gb).
[00478] Как упомянуто выше, для каждого пикселя, определяется счетчик C количества градиентов для соседних пикселей внутри границ изображения, которые находятся на пороге или ниже dynTh. Например, для каждого соседнего пикселя в первичном кадре 310, накопленный счетчик C градиентов Gk, которые находятся на пороге или ниже dynTh, можно вычислить следующим образом:
C=(Gk dynTh), (54)
для (только для k в первичном кадре)
Затем, если определено, что накопленный счетчик C меньше или равен максимальному счетчику, обозначенному переменной dynMaxC, то пиксель можно рассматривать как динамический дефект. В одном варианте осуществления, разные значения для dynMaxC могут быть обеспечены для условий N=3 (угол), N=5 (край) и N=8. Эта логика выражена ниже:
если (C dynMaxC), то текущий пиксель P является дефектным. (55)
[00479] Как упомянуто выше, положение дефектных пикселей может сохраняться в таблице статических дефектов. В некоторых вариантах осуществления, минимальное значение градиента (min(Gk)), вычисленное в ходе обнаружения динамических дефектов для текущего пикселя, можно сохранять и можно использовать для сортировки дефектных пикселей, так что большее минимальное значение градиента указывает более высокую “степень тяжести” дефекта и подлежит коррекции в ходе коррекции пикселей до того, как будут скорректированы менее тяжелые дефекты. В одном варианте осуществления, пиксель может нуждаться в обработке по множественным кадрам формирования изображения до сохранения в таблице статических дефектов, например, посредством фильтрации положений дефектных пикселей с течением времени. В последнем варианте осуществления, положение дефектного пикселя может сохраняться в таблице статических дефектов, только если дефект возникает в конкретном количестве последовательных изображений в одном и том же положении. Кроме того, в некоторых вариантах осуществления, таблица статических дефектов может быть сконфигурирована для сортировки сохраненных положений дефектных пикселей на основании минимальных значений градиента. Например, наивысшее минимальное значение градиента может указывать дефект большей “степени тяжести”. Упорядочивая положения таким образом, можно устанавливать приоритет коррекции статических дефектов, чтобы наиболее тяжелые или важные дефекты корректировались в первую очередь. Дополнительно, таблица статических дефектов могут обновляться с течением времени для включения в нее вновь обнаруженных статических дефектов и их упорядочения, соответственно, на основании их соответствующих минимальных значений градиента.
[00480] Обнаружение спеклов, которое может происходить параллельно вышеописанному процессу обнаружения динамических дефектов, может осуществляться посредством определения, превышает ли значение Gav (уравнение 52b) порог spkTh обнаружения спеклов. По аналогии с порогом dynTh динамического дефекта, спековый порог spkTh также может включать в себя фиксированные и динамические компоненты, обозначаемые spkTh1 и spkTh2, соответственно. В целом, фиксированные и динамические компоненты spkTh1 и spkTh2 можно устанавливать более “агрессивно” по сравнению со значениями dynTh1 и dynTh2, во избежание ошибочного обнаружения спекла в областях изображения, которые могут быть более тяжело текстурированы, и других, таких как, текст, листва, некоторые рисунки ткани и т.д. Соответственно, в одном варианте осуществления, динамическая пороговая компонента spkTh2 спекла может увеличиваться для высокотекстурированных областей изображения и уменьшаться для “уплощенных” или более однородных областей. Порог spkTh обнаружения спеклов можно вычислить, как показано ниже:
spkTh=spkTh1+(spkTh2 × Phf), (56)
где spkTh1 представляет фиксированную пороговую компоненту, и spkTh2 представляет динамическую пороговую компоненту. Затем обнаружение спекла можно определить в соответствии со следующим выражением:
если (Gav > то текущий пиксель P является спекловым. (57)
[00481] После идентификации дефектных пикселей, логика 932 DPDC может применять операции коррекции пикселей в зависимости от типа обнаруженного дефекта. Например, если дефектный пиксель идентифицирован как статический дефект, пиксель заменяется сохраненным значением замены, как рассмотрено выше (например, значением предыдущего пикселя той же цветовой компоненты). Если пиксель идентифицирован либо как динамический дефект, либо как спекл, то коррекция пикселей может осуществляться следующим образом. Сначала, градиенты вычисляются как сумма абсолютных разностей между центральным пикселем и первым и вторым соседними пикселями (например, вычисление Gk согласно уравнению 51) для четырех направлений, горизонтального (h) направления, вертикального (v) направления, диагонально положительного (dp) направления и диагонально отрицательного (dn) направление, как показано ниже:
Gh=G3+G4 (58)
Gv=G1+G6 (59)
Gdp=G2+G5 (60)
Gdn=G0+G7 (61)
[00482] Затем, корректирующее пиксельное значение PC можно определить посредством линейной интерполяции двух соседних пикселей, связанных с направленным градиентом Gh, Gv, Gdp и Gdn, который имеет наименьшее значение. Например, в одном варианте осуществления, нижеприведенное логическое утверждение может выражать вычисление PC:
if(min==Gh) (62)
;
else if(min==Gv)
;
else if(min==Gdp)
;
else if(min==Gdn)
;
Методы коррекции пикселей, реализованные логикой 932 DPDC, также могут предусматривать исключения при граничных условиях. Например, если один из двух соседних пикселей, связанных с выбранным направлением интерполяции, находится вне первичного кадра, то вместо него подставляется значение соседнего пикселя, который находится в первичном кадре. Таким образом, с использованием этого метода, корректирующее пиксельное значение будет эквивалентно значению соседнего пикселя в первичном кадре.
[00483] Следует отметить, что методы обнаружения/коррекции дефектных пикселей, применяемые логикой 932 DPDC в ходе конвейерной обработки ISP надежны по сравнению с логикой 738 DPDC в логике 80 предварительной обработки ISP. Как рассмотрено выше согласно варианту осуществления, логика 738 DPDC осуществляет только обнаружение и коррекцию динамических дефектов с использованием соседних пикселей только в горизонтальном направлении, тогда как логика 932 DPDC обеспечивает обнаружение и коррекцию статических дефектов, динамических дефектов, а также спеклов, с использованием соседних пикселей в горизонтальном и вертикальном направлениях.
[00484] Очевидно, что, сохранение положения дефектных пикселей с использованием таблицы статических дефектов может обеспечивать временную фильтрацию дефектных пикселей с более низкими требованиями к памяти. Например, по сравнению со многими традиционными методами, которые предусматривают сохранение полных изображений и применение временной фильтрации для идентификации статических дефектов с течением времени, варианты осуществления настоящего изобретения предусматривают сохранение только положений дефектных пикселей, для чего обычно требуется использовать лишь часть памяти, необходимой для хранения полного кадра изображения. Кроме того, как рассмотрено выше, сохранение минимального значения градиента (min(Gk)), позволяет эффективно использовать таблицу статических дефектов, определяющую приоритет порядка положений, в которых корректируются дефектные пиксели (например, начиная с тех, которые наиболее заметны).
[00485] Дополнительно, использование порогов, которые включают в себя динамическую компоненту (например, dynTh2 и spkTh2), может способствовать снижению вероятности ошибочного обнаружения дефектов, каковая проблема часто возникает в традиционных системах обработки изображений при обработке высокотекстурных областей изображения (например, текста, листвы, некоторых рисунков ткани и т.д.). Кроме того, использование направленных градиентов (например, h, v, dp, dn) для коррекции пикселей может снижать заметность визуальных артефактов в случае ошибочного обнаружения дефекта. Например, фильтрация в направлении минимального градиента может приводить к коррекции, которая все еще дает приемлемые результаты в большинстве случаев, даже в случаях ошибочного обнаружения. Дополнительно, включение текущего пикселя P в вычисление градиента может повышать точность обнаружения градиента, в частности, в случае горячих пикселей.
[00486] Рассмотренные выше методы обнаружения и коррекции дефектных пикселей, реализованные логикой 932 DPDC, можно кратко описать рядом блок-схем операций, обеспеченных на фиг.101-103. Например, на фиг.101 проиллюстрирован процесс 960 для обнаружения статических дефектов. На этапе 962 входной пиксель P принимается в первый момент времени T0. Затем, на этапе 964, положение пикселя P сравнивается со значениями, хранящимися в таблице статических дефектов. Логика 966 принятия решения определяет, найдено ли положение пикселя P в таблице статических дефектов. Если положение P указано в таблице статических дефектов, то процесс 960 переходит к этапу 968, на котором пиксель P помечается как статический дефект и определяется значение замены. Как рассмотрено выше, значение замены можно определить на основании значения предыдущего пикселя (в порядке сканирования) одной и той же цветовой компоненты. Затем процесс 960 переходит к этапу 970, на котором процесс 960 переходит к процессу 980 обнаружения динамических дефектов и спеклов, представленному на фиг.102. Дополнительно, если на логике 966 принятия решения, определено, что положение пикселя P не указано в таблице статических дефектов, то процесс 960 переходит к этапу 970, минуя этап 968.
[00487] Согласно фиг.102, входной пиксель P принимается в момент времени T1, как показано на этапе 982, для обработки с целью определения, присутствует ли динамический дефект или спекл. Время T1 может представлять временной сдвиг относительно процесса 960 обнаружения статических дефектов, показанного на фиг.101. Как рассмотрено выше, процесс обнаружения динамических дефектов и спеклов может начинаться после того, как процесс обнаружения статических дефектов проанализирует две линии сканирования (например, строки) пикселей, что дает время для идентификации статических дефектов и их соответствующих значений замены, подлежащих определению до обнаружения динамических дефектов/спеклов.
[00488] Логика 984 принятия решения определяет, помечен ли ранее входной пиксель P как статический дефект (например, на этапе 968 процесса 960). Если P помечен как статический дефект, то процесс 980 может переходить к процессу коррекции пикселей, показанному на фиг.103 и может пропускать остальные этапы, показанные на фиг.102. Если логика 984 принятия решения определяет, что входной пиксель P не является статическим дефектом, то процесс переходит к этапу 986, и идентифицируются соседние пиксели, которые можно использовать в процессе обнаружения динамических дефектов и спеклов. Например, в соответствии с вариантом осуществления, рассмотренном выше и представленном на фиг.100, соседние пиксели могут включать в себя 8 непосредственных соседей пикселя P (например, P0-P7), таким образом, образуя область 3×3 пикселя. Затем, на этапе 988, градиенты от пикселя к пикселю вычисляются относительно каждого соседнего пикселя в первичном кадре 310, как описано в вышеприведенном уравнении 51. Дополнительно, средний градиент (Gav) можно вычислять как разность между текущим пикселем и средним окружающих его пикселей, как показано в уравнениях 52a и 52b.
[00489] Затем процесс 980 переходит к этапу 990 для обнаружения динамических дефектов и к логике 998 принятия решения для обнаружения спеклов. Как упомянуто выше, обнаружение динамических дефектов и обнаружение спеклов, в некоторых вариантах осуществления, может происходить параллельно. На этапе 990 определяется счетчик C количества градиентов, которые меньше или равны порогу dynTh. Как описано выше, порог dynTh может включать в себя фиксированные и динамические компоненты и, в одном варианте осуществления, может определяться в соответствии с вышеприведенным уравнением 53. Если C меньше или равен максимальному счетчику, dynMaxC, то процесс 980 переходит к этапу 996, и текущий пиксель помечается как динамический дефект. После этого, процесс 980 может переходить к процессу коррекции пикселей, показанному на фиг.103, который будет рассмотрен ниже.
[00490] Возвращаясь к ветвлению после этапа 988, для обнаружения спеклов, логика 998 принятия решения определяет, превышает ли средний градиент Gav порог spkTh обнаружения спеклов, который также может включать в себя фиксированную и динамическую компоненты. Если Gav больше порога spkTh, то на этапе 1000 пиксель P помечается как содержащий спекл, и, после этого, процесс 980 переходит к фиг.103 для коррекции спеклового пикселя. Кроме того, если на выходе обоих логических блоков 992 и 998 принятия решения получен ответ “Нет”, это указывает, что пиксель P не содержит динамических дефектов, спеклов и даже статических дефектов (логика 984 принятия решения). Таким образом, когда логики 992 и 998 принятия решения выдают ответ “Нет”, процесс 980 может заключать на этапе 994, в связи с чем, пиксель P остается неизменным, поскольку никаких дефектов (например, статических, динамических или спекловых) не обнаружено.
[00491] На фиг.103 представлен процесс 1010 коррекции пикселей в соответствии с вышеописанными методами. На этапе 1012, входной пиксель P принимается от процесса 980 на фиг.102. Следует отметить, что пиксель P может приниматься процессом 1010 из этапа 984 (статический дефект) или из этапов 996 (динамический дефект) и 1000 (спекловый дефект). Затем логика 1014 принятия решения определяет, помечен ли пиксель P как статический дефект. Если пиксель P является статическим дефектом, то процесс 1010 продолжается и заканчивается на этапе 1016, благодаря чему, статический дефект корректируется с использованием значения замены, определенного на этапе 968 (фиг.101).
[00492] Если пиксель P не идентифицирован как статический дефект, то процесс 1010 переходит от логики 1014 принятия решения к этапу 1018, и вычисляются направленные градиенты. Например, как рассмотрено выше со ссылкой на уравнения 58-61, градиенты можно вычислить как сумму абсолютных разностей между центральным пикселем и первым и вторым соседними пикселями для четырех направлений (h, v, dp и dn). Затем, на этапе 1020 идентифицируется направленный градиент, имеющий наименьшее значение, после чего, логика 1022 принятия решения оценивает, располагается ли один из двух соседних пикселей, связанных с минимальным градиентом, вне кадра изображения (например, первичного кадра 310). Если оба соседние пиксели находятся в кадре изображения, то процесс 1010 переходит к этапу 1024, и значение (PC) коррекции пикселя определяется посредством применения линейной интерполяции к значениям двух соседних пикселей, как показано уравнением 62. После этого, входной пиксель P можно корректировать с использованием интерполированного значения PC коррекции пикселя, как показано на этапе 1030.
[00493] Если на логике 1022 принятия решения определено, что один из двух соседних пикселей располагается вне кадра изображения (например, первичного кадра 165), то вместо использования значения наружного пикселя (Pout), логика 932 DPDC может заменять значение Pout значением другого соседнего пикселя, который находится внутри кадра изображения (Pin), как показано на этапе 1026. После этого, на этапе 1028, значение PC коррекции пикселя определяется посредством интерполяции значений Pin и заменяемого значения Pout. Другими словами, в этом случае, PC может быть эквивалентно значению Pin. Наконец, на этапе 1030, пиксель P корректируется с использованием значения PC. Прежде чем продолжить, следует понять, что конкретные процессы обнаружения и коррекции дефектных пикселей, рассмотренные здесь со ссылкой на логику 932 DPDC, призваны отражать лишь один возможный вариант осуществления настоящего изобретения. В действительности, в зависимости от конструкционных и/или стоимостных ограничений, возможны некоторые изменения, и признаки могут добавляться и устраняться, так что общая сложность и надежность логики обнаружения/коррекции дефектов находится между упрощенной логикой 738 обнаружения/коррекции, реализованный в блоке 80 логики предварительной обработки ISP, и логикой обнаружения/коррекции дефектов, рассмотренной здесь со ссылкой на логику 932 DPDC.
[00494] Согласно фиг.99, скорректированные пиксельные данные выводятся из логики 932 DPDC и затем принимаются логикой 934 шумопонижения для дальнейшей обработки. В одном варианте осуществления, логика 934 шумопонижения может быть сконфигурирована для реализации двухмерной низкочастотной фильтрации с адаптацией к краевым условиям для снижения шума в данных изображения при поддержании деталей и текстур. Пороги с адаптацией к краевым условиям могут устанавливаться (например, управляющей логикой 84) на основании текущих уровней освещенности, благодаря чему, фильтрация может усиливаться в условиях низкой освещенности. Кроме того, как кратко упомянуто выше в отношении определения значений dynTh и spkTh, дисперсию шума можно заранее определить для данного датчика, что позволяет устанавливать пороги шумопонижения чуть выше дисперсии шума, благодаря чему, в ходе обработки шумопонижения, шум снижается без значительного влияния на текстуры и детали сцены (например, для исключения/сокращения ложных обнаружений). Предполагая реализацию байеровского цветового фильтра, логика 934 шумопонижения может обрабатывать каждую цветовую компоненту Gr, R, B и Gb независимо с использованием разделимых 7-отводного горизонтального фильтра и 5-отводного вертикального фильтра. В одном варианте осуществления, процесс шумопонижения может осуществляться посредством коррекции неоднородности на цветовых компонентах (Gb т Gr) зеленого с последующим осуществлением горизонтальной фильтрации и вертикальной фильтрации.
[00495] Неоднородность зеленого (GNU), в общем случае, характеризуется небольшим различием в яркости между пикселями Gr и Gb при условии однородно освещенной плоской поверхности. Без коррекции или компенсации этой неоднородности, после демозаики в полноцветном изображении могут возникать некоторые артефакты, например, артефакт “лабиринта”. В ходе неоднородности зеленого, процесс может включать в себя определение, для каждого пикселя зеленого в первичных байеровских данных изображения, меньше ли абсолютная разность между текущим пикселем зеленого (G1) и пикселем зеленого правее и ниже (G2) текущего пикселя порога коррекции GNU (gnuTh). Фиг.104 иллюстрирует положение пикселей G1 и G2 в области 2×2 шаблона Байера. Как показано, цвет граничных пикселей G1 может зависеть от того, является ли текущий пиксель зеленого пикселем Gb или Gr. Например, если G1 является Gr, то G2 является Gb, пиксель справа от G1 является R (красным), и пиксель под G1 является B (синим). Альтернативно, если G1 является Gb, то G2 является Gr, и пиксель справа от G1 является B, тогда как пиксель под G1 является R. Если абсолютная разность между G1 и G2 меньше порогового значения коррекции GNU, то текущий пиксель зеленого G1 заменяется средним G1 и G2, как показано нижеследующей логикой:
if(abs(G1-G2) gnuTh); (63)
Очевидно, что такое применение коррекции неоднородности зеленого позволяет предотвращать усреднение пикселей G1 и G2 по краям, что повышает и/или сохраняет резкость.
[00496] Горизонтальная фильтрация применяется после коррекции неоднородности зеленого и может, в одном варианте осуществления, предусматривать 7-отводный горизонтальный фильтр. Градиенты по краю каждого отвода фильтра вычисляются, и в случае превышения горизонтального краевого порога (horzTh), отвод фильтра прикладывается к центральному пикселю, что будет проиллюстрировано ниже. В некоторых вариантах осуществления, фильтрация шума может обладать краевой адаптивностью. Например, горизонтальный фильтр может представлять собой фильтр с конечной импульсной характеристикой (КИХ), где отводы фильтра используются только когда разность между центральным пикселем и пикселем на отводе меньше порога, который зависит от дисперсии шума. Горизонтальный фильтр может обрабатывать данные изображения независимо для каждой цветовой компоненты (R, B, Gr, Gb) и может использовать нефильтрованные значения в качестве входных значений.
[00497] В порядке примера, фиг.105 демонстрирует графическое представление набора горизонтальных пикселей P0-P6, где центральный отвод располагается на P3. На основании пикселей, показанных на фиг.105, краевые градиенты для каждого отвода фильтра можно вычислять следующим образом:
Eh0=abs(P0-P1) (64)
Eh1=abs(P1-P2) (65)
Eh2=abs(P2-P3) (66)
Eh3=abs(P3-P4) (67)
Eh4=abs(P4-P5) (68)
Eh5=abs(P5-P6) (69)
Затем краевые градиенты Eh0-Eh5 могут использоваться компонентом горизонтального фильтра для определения выхода горизонтальной фильтрации, Phorz, с использованием формулы, показанной ниже в уравнении 70:
где horzTh[c] - горизонтальный краевой порог для каждой цветовой компоненты c (например, R, B, Gr и Gb), и C0-C6 - коэффициенты отводов фильтра, соответствующие пикселям P0-P6, соответственно. Выходной сигнал Phorz горизонтального фильтра можно применять в положении центрального пикселя P3. В одном варианте осуществления, коэффициенты C0-C6 отводов фильтра могут быть 16-битовыми значениями в формате дополнения до 2 с 3 битами целой части и 13 битами дробной части (в представлении 3.13 с плавающей запятой). Кроме того, следует отметить, что коэффициенты C0-C6 отводов фильтра не обязаны быть симметричными относительно центрального пикселя P3.
[00498] Вертикальная фильтрация также применяется логикой 934 шумопонижения после процессов коррекции неоднородности зеленого и горизонтальной фильтрации. В одном варианте осуществления, операция вертикального фильтра может обеспечивать 5-отводный фильтр, как показано на фиг.106, где центральный отвод вертикального фильтра располагается в P2. Процесс вертикальной фильтрации может происходить аналогичным образом, как вышеописанный процесс горизонтальной фильтрации. Например, градиенты по краю каждого отвода фильтра вычисляются, и в случае превышения вертикального краевого порога (vertTh), отвод фильтра прикладывается к центральному пикселю P2. Вертикальный фильтр может обрабатывать данные изображения независимо для каждой цветовой компоненты (R, B, Gr, Gb) и может использовать нефильтрованные значения в качестве входных значений.
[00499] На основании пикселей, показанных на фиг.106, вертикальные краевые градиенты для каждого отвода фильтра можно вычислять следующим образом:
Ev0=abs(P0-P1) (71)
Ev1=abs(P1-P2) (72)
Ev2=abs(P2-P3) (73)
Ev3=abs(P3-P4) (74)
Затем краевые градиенты Ev0-Ev5 могут использоваться вертикальным фильтром для определения выхода вертикальной фильтрации, Pvert, с использованием формулы, показанной ниже в уравнении 75:
где vertTh[c] - вертикальный краевой порог для каждой цветовой компоненты c (например, R, B, Gr и Gb), и C0-C4 - коэффициенты отводов фильтра, соответствующие пикселям P0-P4 на фиг.106, соответственно. Выходной сигнал Pvert вертикальный фильтр можно применять в положении центрального пикселя P2. В одном варианте осуществления, коэффициенты C0-C4 отводов фильтра могут быть 16-битовыми значениями в формате дополнения до 2 с 3 битами целой части и 13 битами дробной части (в представлении 3,13 с плавающей запятой). Кроме того, следует отметить, что коэффициенты C0-C4 отводов фильтра не обязаны быть симметричными относительно центрального пикселя P2.
[00500] Дополнительно, в отношении граничных условий, когда соседние пиксели находятся вне первичного кадра 310 (фиг.23), значения наружных пикселей дублируются значением пикселя того же цвета на краю первичного кадра. Это соглашение можно реализовать для обеих операций горизонтальной и вертикальной фильтрации. В порядке примера, возвращаясь к фиг.105, в случае горизонтальной фильтрации, если пиксель P2 является краевым пикселем на самом левом краю первичного кадра, и пиксели P0 и P1 находятся вне первичного кадра, то значения пикселей P0 и P1 заменяются значением пикселя P2 для горизонтальной фильтрации.
[00501] Возвращаясь к блок-схеме логики 900 первичной обработки, показанной на фиг.99, выходной сигнал логики 934 шумопонижения затем поступает на логику 936 коррекции затенения объектива (LSC) для обработки. Как рассмотрено выше, методы коррекции затенения объектива могут включать в себя применение надлежащего коэффициента усиления на попиксельной основе для компенсации спадов интенсивности света, что может быть результатом геометрической оптики объектива, несовершенств в изготовлении, рассогласования микролинзовой матрицы и матрицы цветовых фильтров и т.д. Кроме того, инфракрасный (ИК) фильтр в некоторых объективах может приводить к тому, что спад будет зависеть от источника света, что позволяет адаптировать коэффициенты усиления затенения объектива в зависимости от обнаруженного источника света.
[00502] В представленном варианте осуществления, логика 936 LSC конвейерной обработки 82 ISP может быть реализована аналогичным образом и, таким образом, обеспечивать, в общем случае, те же функции, что и логика 740 LSC блока 80 логики предварительной обработки ISP, которые рассмотрены выше со ссылкой на фиг.71-79. Соответственно, во избежание избыточности, следует понимать, что логика 936 LSC проиллюстрированного здесь варианта осуществления сконфигурирована работать, в общем случае, таким же образом, как логика 740 LSC, и поэтому вышеприведенное описание методов коррекции затенения объектива здесь повторяться не будет. Однако, для подведения общих итогов, следует понимать, что логика 936 LSC могут независимо обрабатывать каждую цветовую компоненту потока первичных пиксельных данных для определения коэффициента усиления для применения к текущему пикселю. В соответствии с рассмотренными выше вариантами осуществления, коэффициент усиления коррекции затенения объектива можно определить на основании заданного набора точек сетки коэффициентов усиления, распределенных по кадру формирования изображения, в котором интервал между каждой точкой сетки задается количеством пикселей (например, 8 пикселей, 16 пикселей и т.д.). Если положение текущего пикселя соответствует точке сетки, то значение коэффициента усиления, связанное с этой точкой сетки, применяется к текущему пикселю. Если же положение текущего пикселя находится между точками сетки (например, G0, G1, G2 и G3 на фиг.74), то значение коэффициента усиления LSC можно вычислять посредством интерполяции точек сетки, между которыми располагается текущий пиксель (уравнения 13a и 13b). Этот процесс изображен процессом 772 на фиг.75. Кроме того, как упомянуто выше согласно фиг.73, в некоторых вариантах осуществления, точки сетки могут распределяться неравномерно (например, логарифмически), из-за чего, точки сетки меньше концентрируются в центре области 760 LSC, но больше концентрируются по углам области 760 LSC, где искажение затенения объектива обычно является более заметным.
[00503] Дополнительно, как рассмотрено выше со ссылкой на фиг.78 и 79, логика 936 LSC также может применять радиальную компоненту коэффициента усиления со значениями коэффициента усиления сетки. Радиальную компоненту коэффициента усиления можно определить на основании расстояния текущего пикселя от центра изображения (уравнения 14-16). Как упомянуто, использование радиального коэффициента усиления позволяет использовать единую общую сетку коэффициентов усиления для всех цветовых компонент, что позволяет значительно сократить суммарную емкость хранилища, необходимую для хранения отдельных сеток коэффициентов усиления для каждой цветовой компоненты. Это сокращение объема данных сетки коэффициента усиления позволяет снизить стоимость реализации, поскольку таблицы данных сетки коэффициента усиления могут занимать значительный участок памяти или площадь микросхемы в оборудовании обработки изображений.
[00504] Затем, возвращаясь к блок-схеме 900 логики первичной обработки, показанной на фиг.99, выходной сигнал логики 936 LSC затем поступает на второй блок 938 коэффициента усиления, смещения и ограничения (GOC). Логику 938 GOC можно применять до демозаики (логическим блоком 940) и можно использовать для осуществления автоматического баланса белого на выходном сигнале логики 936 LSC. В представленном варианте осуществления, логику 938 GOC можно реализовать таким же образом, как логику 930 GOC (и логику 739 BLC). Таким образом, в соответствии с вышеприведенным уравнением 11, входной сигнал, принятый логикой 938 GOC, сначала смещается на знаковое значение и затем умножается на коэффициент усиления. Затем результирующее значение ограничивается минимальным и максимальным диапазоном в соответствии с уравнением 12.
[00505] После этого, выходной сигнал логики 938 GOC перенаправляется на логику 940 демозаики для обработки для формирования полноцветного (RGB) изображения на основании первичных байеровских входных данных. Очевидно, что первичный выходной сигнал датчика изображения, использующего матрицу цветовых фильтров, например, байеровский фильтр, является “неполным” в том смысле, что каждый пиксель фильтруется для получения только одного цветовой компоненты. Таким образом, данных, собранных для отдельно взятого пикселя, не достаточно для определения цвета. Соответственно, методы демозаики можно использовать для генерации полноцветного изображения из первичных байеровских данных посредством интерполяции отсутствующих цветовых данных для каждого пикселя.
[00506] На фиг.107 проиллюстрирована схема 692 обработки графики, которая обеспечивает общий обзор того, как можно применять демозаику к шаблону 1034 первичного байеровского изображения для формирования полноцветного RGB. Как показано, участок 1036 4×4 первичного байеровского изображения 1034 может включать в себя отдельные каналы для каждой цветовой компоненты, включающие в себя канал 1038 зеленого, канал 1040 красного и канал 1042 синего. Поскольку каждый пиксель формирования изображения в байеровском датчике получает данные только для одного цвета, цветовые данные для каждого цветового канала 1038, 1040 и 1042 могут быть неполными, что указано символами “?”. Применяя метод 1044 демозаики, недостающие цветовые выборки из каждого канала можно интерполировать. Например, как указано ссылочной позицией 1046, интерполированные данные G' можно использовать для наполнения недостающих выборок на цветовом канале зеленого, аналогично, интерполированные данные R' (в сочетании с интерполированными данными G' 1046) можно использовать для наполнения недостающих выборок на цветовом канале 1048 красного, и интерполированные данные B' (в сочетании с интерполированными данными G' 1046) можно использовать для наполнения недостающих выборок на цветовом канале 1050 синего. Таким образом, в результате процесса демозаики, каждый цветовой канал (R, G, B) будет иметь полный набор цветовых данных, который затем можно использовать для реконструкции полноцветного RGB-изображения 1052.
[00507] Метод демозаики, который можно реализовать логикой 940 демозаики, будет описан ниже в соответствии с одним вариантом осуществления. На цветовом канале зеленого, недостающие цветовые выборки можно интерполировать с использованием низкочастотного направленного фильтра на известных выборках зеленого и высокочастотного (или градиентного) фильтра на соседних цветовых каналах (например, красного и синего). Для цветовых каналов красного и синего, недостающие цветовые выборки можно интерполировать аналогичным образом, но с использованием низкочастотной фильтрации на известных значениях красного или синего и высокочастотной фильтрации на близко расположенных интерполированных значениях зеленого. Кроме того, в одном варианте осуществления, демозаика на цветовом канале зеленого может использовать фильтр пиксельного блока 5×5 с адаптацией к краевым условиям на основании исходных байеровских цветовых данных. Как будет дополнительно описано ниже, использование фильтра с адаптацией к краевым условиям может обеспечивать непрерывное взвешивание на основании градиентов горизонтальных и вертикальных фильтрованных значений, что снижает заметность некоторых артефактов, например, ступенчатых, “шахматных” или “радужных” артефактов, обычно наблюдаемых в традиционных методах демозаики.
[00508] В ходе демозаики на канале зеленого, используются исходные значения для пикселей зеленого (пикселей Gr и Gb) шаблона байеровского изображения. Однако для получения полного набора данных для канала зеленого, значения пикселей зеленого можно интерполировать на пикселях красного и синего шаблона байеровского изображения. В соответствии с настоящим изобретением, горизонтальные и вертикальные энергетические компоненты, соответственно именуемые Eh и Ev, сначала вычисляются на пикселях синего красного и синего на основании вышеупомянутого пиксельного блока 5×5. Значения Eh и Ev можно использовать для получения взвешенного по краю фильтрованного значения из этапов горизонтальной и вертикальной фильтрации, как дополнительно рассмотрено ниже.
[00509] В порядке примера, фиг.108 иллюстрирует вычисление значений Eh и Ev для пикселя красного, центрированного в пиксельном блоке 5×5 в положении (j, i), где j соответствует строке, и i соответствует столбцу. Как показано, вычисление Eh учитывает три средние строки (j-1, j, j+1) пиксельного блока 5×5, и вычисление Ev учитывает три средних столбца (i-1, i, i+1) пиксельного блока 5×5. Для вычисления Eh, абсолютное значение суммы каждого из пикселей в столбцах (i-2, i, i+2) красного, умноженное на соответствующий коэффициент (например, -1 для столбцов i-2 и i+2; 2 для столбца i), суммируется с абсолютным значением суммы каждого из пикселей в столбцах (i-1, i+1) синего, умноженной на соответствующий коэффициент (например, 1 для столбца i-1; -1 для столбца i+1). Для вычисления Ev, абсолютное значение суммы каждого из пикселей в строки (j-2, j, j+2) красного, умноженное на соответствующий коэффициент (например, -1 для строк j-2 и j+2; 2 для строки j), суммируется с абсолютным значением суммы каждого из пикселей в строках (j-1, j+1) синего, умноженным на соответствующий коэффициент (например, 1 для строки j-1; -1 для строки j+1). Эти вычисления проиллюстрированы ниже уравнениями 76 и 77:
Таким образом, полную сумму энергий можно выразить как: Eh+Ev. Кроме того, хотя пример, показанный на фиг.108, иллюстрирует вычисление Eh и Ev для центрального пикселя красного в (j, i), следует понимать, что значения Eh и Ev можно определить аналогичным образом для центральных пикселей синего.
[00510] Затем, горизонтальная и вертикальная фильтрация может применяться к шаблону Байера для получения вертикального и горизонтального фильтрованных значений Gh и Gv, которые могут представлять интерполированные значения зеленого в горизонтальном и вертикальном направлениях, соответственно. Фильтрованные значения Gh и Gv можно определить с использованием фильтра низких частот на известных соседних выборках зеленого помимо использования направленных градиентов соседнего цвета (R или B) для получения высокочастотного сигнала в положениях недостающих выборок зеленого. Например, со ссылкой на фиг.109, будет проиллюстрирован пример горизонтальной интерполяции для определения Gh.
[00511] Как показано на фиг.109, пять горизонтальных пикселей (R0, G1, R2, G3 и R4) красной линии 1060 байеровского изображения, где предполагается, что R2 является центральным пикселем в (j, i), можно рассматривать при определении Gh. Коэффициенты фильтрации, связанные с каждым из этих пяти пикселей, указаны ссылочной позицией 1062. Соответственно, интерполяция значения зеленого, именуемого G2', для центрального пикселя R2, можно определить следующим образом:
G2' = (78)
Различные математические операции затем могут использоваться для формирования выражения для G2', показанного ниже в уравнениях 79 и 80:
G2' = (79)
G2' = (80)
Таким образом, со ссылкой на фиг.109 и вышеприведенные уравнения 78-80, общее выражение для горизонтальной интерполяции для значения зеленого в (j, i) можно вывести в виде:
Gh = (81)
[00512] Компоненту Gv вертикальной фильтрации можно определить аналогичным образом, как Gh. Например, согласно фиг.110, пять вертикальных пикселей (R0, G1, R2, G3 и R4) столбца 1064 красного байеровского изображения и их соответствующие коэффициенты 1068 фильтрации, где предполагается, что R2 является центральным пикселем в (j, i), можно рассматривать при определении Gv. Используя низкочастотную фильтрацию на известных выборках зеленого и высокочастотную фильтрацию на канале красного в вертикальном направлении, можно вывести следующее выражение для Gv:
Gv = (82)
Хотя в рассмотренных здесь примерах показана интерполяция значений зеленого на пикселе красного, следует понимать, что выражения, приведенные в уравнениях 81 и 82, также можно использовать при горизонтальной и вертикальной интерполяции значений зеленого для пикселей синего.
[00513] Окончательное интерполированное значение зеленого G' для центрального пикселя (j, i) можно определить взвешиванием горизонтального и вертикального выходных сигналов фильтра (Gh и Gv) энергетическими компонентами (Eh и Ev), рассмотренными выше, для получения следующего уравнения:
G'(j, i) = (83)
Как рассмотрено выше, энергетические компоненты Eh и Ev могут обеспечивать взвешивание с адаптацией к краевым условиям горизонтального и вертикального выходных сигналов фильтра Gh и Gv, которое может помогать ослаблять артефакты изображения, например, радужные, ступенчатые или шахматные артефакты, в реконструированном RGB-изображении. Дополнительно, логика 940 демозаики может обеспечивать вариант для обхода признака взвешивания с адаптацией к краевым условиям посредством задания значения каждого Eh и Ev равным 1, в результате чего, Gh и Gv взвешиваются одинаково.
[00514] В одном варианте осуществления, горизонтальный и вертикальный весовые коэффициенты, показанные в вышеприведенном уравнении 51, можно квантовать для снижения точности весовых коэффициентов в набор “грубых” значений. Например, в одном варианте осуществления, весовые коэффициенты можно квантовать до восьми возможных отношений весов: 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 и 8/8. Другие варианты осуществления могут квантовать весовые коэффициенты на 16 значений (например, от 1/16 до 16/16), 32 значения (от 1/32 до 32/32) и т.д. Очевидно, что по сравнению с использованием значений полной точности (например, 32-битовых значений с плавающей запятой), квантование весовых коэффициентов может снижать сложность реализации при определении и применении весовых коэффициентов к горизонтальному и вертикальному выходным сигналам фильтра.
[00515] В дополнительных вариантах осуществления, описанное здесь изобретение, помимо определения и использования горизонтальных и вертикальных энергетических компонент для применения весовых коэффициентов к горизонтальному (Gh) и вертикальному (Gv) фильтрованным значениям, также может определять и использовать энергетические компоненты в диагонально положительном и диагонально отрицательном направлениях. Например, в таких вариантах осуществления, фильтрация также может применяться в диагонально положительном и диагонально отрицательном направлениях. Взвешивание выходных сигналов фильтра может включать в себя выбор двух наивысших энергетических компонент, и использование выбранных энергетических компонент для взвешивания их соответствующих выходных сигналов фильтра. Например, предполагая, что две наивысшие энергетические компоненты соответствуют вертикальному и диагонально положительному направлениям, вертикальная и диагональная положительные энергетические компоненты используются для взвешивания вертикального и диагонально положительного выходных сигналов фильтра для определения интерполированного значения зеленого (например, в положение пикселя красного или синего в шаблоне Байера).
[00516] Затем, демозаика на цветовых каналах красного и синего может осуществляться посредством интерполяции значения красного и синего на пикселях зеленого шаблона байеровского изображения, интерполяция значений красного на пикселях синего синего шаблона байеровского изображения, и интерполяция значений синего на пикселях красного шаблона байеровского изображения. В соответствии с рассмотренными здесь методами, недостающие пиксельные значения красного и синего можно интерполировать с использованием низкочастотной фильтрации на основании известных соседних пикселей красного и синего и высокочастотной фильтрации на основании близко расположенных значений пикселей зеленого, которые могут быть исходными или интерполированными значениями (из рассмотренного выше процесса демозаики канала зеленого) в зависимости от положения текущего пикселя. Таким образом, в отношении таких вариантов осуществления, следует понимать, что сначала может осуществляться интерполяция недостающих значений зеленого, в результате чего, образуется полный набор значений зеленого (исходных и интерполированных значений) при интерполяции недостающих выборок красного и синего.
[00517] Интерполяцию пиксельных значений красного и синего можно описать со ссылкой на фиг.111, которая иллюстрирует различные 3×3 блоки шаблона байеровского изображения, к которым можно применять демозаику красного и синего, а также интерполированные значения зеленого (обозначенные G'), которые можно получить в ходе демозаики на канале зеленого. Сначала, на блоке 1070, интерполированное значение красного, R'11, для пикселя Gr (G11) можно определить следующим образом:
, (84)
где G'10 и G'12 представляют интерполированные значения зеленого, как указано ссылочной позицией 1078. Аналогично, интерполированное значение синего, B'11, для пикселя Gr (G11) можно определить следующим образом:
, (85)
где G'01 и G'21 представляют интерполированные значения зеленого (1078).
[00518] Затем, на пиксельном блоке 1072, в котором центральным пикселем является пиксель Gb (G11), интерполированное значение красного, R'11, и значение синего B'11, можно определить, как показано ниже в уравнениях 86 и 87:
(86)
(87)
[00519] Кроме того, согласно пиксельному блоку 1074, интерполяцию значения красного на пикселе синего, B11, можно определить следующим образом:
, (88)
где G'00, G'02, G'11, G'20 и G'22 представляют интерполированные значения зеленого, как указано ссылочной позицией 1080. Наконец, интерполяцию значения синего на пикселе красного, как показано пиксельным блоком 1076, можно вычислять следующим образом:
, (89)
[00520] Хотя рассмотренный выше вариант осуществления опирался на разностях цветов (например, градиентов) для определения интерполированных значений красного и синего, другой вариант осуществления может обеспечивать интерполированные значения красного и синего с использованием отношений цветов. Например, интерполированные значения зеленого (блоки 1078 и 1080) можно использовать для получения отношения цветов в положениях пикселя красного и синего шаблона байеровского изображения, и линейная интерполяция отношений можно использовать для определения интерполированного отношения цветов для недостающей цветовой выборки. Значение зеленого, которое может быть интерполированным или исходным значением, можно умножать на интерполированное отношение цветов для получения окончательного интерполированного значения цвета. Например, интерполяция пиксельных значений красного и синего с использованием отношений цветов может осуществляться в соответствии с нижеследующими формулами, в которых уравнения 90 и 91 демонстрируют интерполяцию значений красного и синего для пикселя Gr, уравнения 92 и 93 демонстрируют интерполяцию значений красного и синего для пикселя Gb, уравнение 94 демонстрирует интерполяцию значения красного на пикселе синего, и уравнение 95 демонстрирует интерполяцию значения синего на пикселе красного:
(90)
(R'11 интерполированный, когда G11 является пикселем Gr)
(91)
(B'11 интерполированный, когда G11 является пикселем Gr)
(92)
(R'11 интерполированный, когда G11 является пикселем Gb)
(93)
(B'11 интерполированный, когда G11 является пикселем Gb)
(94)
(R'11 интерполированный на пикселе B11 синего)
(95)
(B'11 интерполированный на пикселе R11 красного)
[00521] После интерполяции недостающих цветовых выборок для каждого пикселя изображения из шаблона байеровского изображения, полная выборка значений цвета для каждого из цветовых каналов красного, синего и зеленого (например, 1046, 1048 и 1050 на фиг.107) может объединяться для формирования полноцветного RGB-изображения. Например, согласно фиг.98 и 99, выходной сигнал 910 логики 900 обработки первичных пикселей может быть сигналом изображения RGB в 8, 10, 12 или 14-битовом форматах.
[00522] На фиг.112-115 проиллюстрированы различные блок-схемы операций демонстрирующие процессы для демозаики первичного шаблона байеровского изображения в соответствии с раскрытыми вариантами осуществления. В частности, процесс 1082 на фиг.112 изображает определение, какие цветовые компоненты подлежат интерполяции для данного входного пикселя P. На основании определения процессом 1082, один или более из процесса 1100 (фиг.113) для интерполяции значения зеленого, процесса 1112 (фиг.114) для интерполяции значения красного и процесса 1124 (фиг.115) для интерполяции значения синего может осуществляться (например, логикой 940 демозаики).
[00523] Начиная с фиг.112, процесс 1082 начинается с этапа 1084 приема входного пикселя P. Логика 1086 принятия решения определяет цвет входного пикселя. Например, это может зависеть от положения пикселя в шаблоне байеровского изображения. Соответственно, если P идентифицируется как пиксель зеленого (например, Gr или Gb), процесс 1082 переходит к этапу 1088 для получения интерполированных значений красного и синего для P. Это может включать в себя, например, переход к процессам 1112 и 1124 на фиг.114 и 115, соответственно. Если P идентифицируется как пиксель красного, то процесс 1082 переходит к этапу 1090 для получения интерполированных значений зеленого и синего для P. Это может включать в себя дополнительно осуществление процессов 1100 и 1124 на фиг.113 и 115, соответственно. Дополнительно, если P идентифицируется как пиксель синего, то процесс 1082 переходит к этапу 1092 для получения интерполированных значений зеленого и красного для P. Это может включать в себя дополнительно осуществление процессов 1100 и 1112 на фиг.113 и 114, соответственно. Каждый из процессов 1100, 1112 и 1124 дополнительно описан ниже.
[00524] Процесс 1100 для определения интерполированного значения зеленого для входного пикселя P представлен на фиг.113 и включает в себя этапы 1102-1110. На этапе 1102 принимается входной пиксель P (например, от процесса 1082). Затем, на этапе 1104 идентифицируется набор соседних пикселей, образующих пиксельный блок 5×5, причем P является центром блока 5×5. После этого, пиксельный блок анализируется для определения горизонтальных и вертикальных энергетических компонент на этапе 1106. Например, горизонтальные и вертикальные энергетические компоненты можно определить в соответствии с уравнениями 76 и 77 для вычисления Eh и Ev, соответственно. Как рассмотрено, энергетические компоненты Eh и Ev можно использовать как весовые коэффициенты для обеспечения фильтрации с адаптацией к краевым условиям и, таким образом, снижения заметности некоторых артефактов демозаики в окончательном изображении. На этапе 1108 низкочастотная фильтрация и высокочастотная фильтрация применяется в горизонтальном и вертикальном направлениях для определения выходных сигналов горизонтальной и вертикальной фильтрации. Например, выходные сигналы горизонтальной и вертикальной фильтрации, Gh и Gv, можно вычислять в соответствии с уравнениями 81 и 82. Затем процесс 1082 переходит к этапу 1110, на котором интерполированное значение зеленого G' вычисляется на основании значений Gh и Gv, взвешенных энергетическими компонентами Eh и Ev, как показано в уравнении 83.
[00525] Затем, в отношении процесса 1112 на фиг.114, интерполяция значений красного может начинаться на этапе 1114, на котором принимается входной пиксель P (например, от процесса 1082). На этапе 1116 идентифицируется набор соседних пикселей, образующих 3×3 пиксельный блок, где P является центром блока 3×3. После этого, низкочастотная фильтрация применяется на соседних пикселях красного в блоке 3×3 на этапе 1118, и высокочастотная фильтрация применяется (этап 1120) на близко расположенных соседних значениях зеленого, которые могут быть исходными значениями зеленого, захваченными байеровским датчиком изображения, или интерполированными значениями (например, определенными в процессе 1100 на фиг.113). Интерполированное значение красного R' для P можно определить на основании выходных сигналов низкочастотной и высокочастотной фильтрации, как показано на этапе 1122. В зависимости от цвета P, R' можно определить в соответствии с одним из уравнений 84, 86 или 88.
[00526] В отношении интерполяции значений синего, можно применять процесс 1124 на фиг.115. Этапы 1126 и 1128, в общем случае, идентичны этапам 1114 и 1116 процесса 1112 (фиг.114). На этапе 1130, низкочастотная фильтрация применяется на соседних пикселях синего в 3×3, и, на этапе 1132, высокочастотная фильтрация применяется на близко расположенных соседних значениях зеленого, которые могут быть исходными значениями зеленого, захваченными байеровским датчиком изображения, или интерполированными значениями (например, определенными в процессе 1100 на фиг.113). Интерполированное значение синего B' для P можно определить на основании выходных сигналов низкочастотной и высокочастотной фильтрации, как показано на этапе 1134. В зависимости от цвета P, B' можно определить в соответствии с одним из уравнений 85, 87 или 89. Кроме того, как упомянуто выше, интерполяцию значений красного и синего можно определить с использованием разностей цветов (уравнения 84-89) или отношений цветов (уравнения 90-95). Опять же, следует понимать, что сначала может осуществляться интерполяция недостающих значений зеленого, в результате чего, образуется полный набор значений зеленого (исходных и интерполированных значений) при интерполяции недостающих выборок красного и синего. Например, процесс 1100 на фиг.113 может применяться для интерполяции всех недостающих цветовых выборок зеленого до осуществления процессов 1112 и 1124 на фиг.114 и 115, соответственно.
[00527] На фиг.116-119 приведены примеры цветных чертежей изображений, обработанных логикой 900 обработки первичных пикселей в конвейере 82 ISP. Фиг.116 изображает сцену 1140 исходного изображения, которое может быть захвачено датчиком 90 изображения устройства 30 формирования изображения. Фиг.117 демонстрирует первичное байеровское изображение 1142, которое может представлять первичные пиксельные данные, захваченные датчиком 90 изображения. Как упомянуто выше, традиционные методы демозаики могут не обеспечивать адаптивную фильтрацию на основании обнаружения краев (например, границ между областями двух или более цветов) в данных изображения, которая может, помимо желания, порождать артефакты в результирующем реконструированном полноцветном RGB-изображении. Например, фиг.118 демонстрирует RGB-изображение 1144, которое реконструировано с использованием традиционных методов демозаики и может включать в себя артефакты, например “шахматные” артефакты 1146, на краю 1148. Однако, сравнивая изображение 1144 с RGB-изображением 1150 на фиг.119, которое может служить примером изображения, реконструированного с использованием вышеописанных методов демозаики, можно видеть, что шахматные артефакты 1146, присутствующие на фиг.118, отсутствуют или, по меньшей мере, существенно менее заметны на краю 1148. Таким образом, изображения, показанные на фиг.116-119, призваны иллюстрировать, по меньшей мере, одно преимущество раскрытых здесь методов демозаики над традиционными способами.
[00528] В соответствии с некоторым аспектом раскрытых здесь методов обработки изображения, различные логические блоки обработки подсистемы 32 ISP можно реализовать с использованием набора линейных буферов, который может быть сконфигурирован для пропускания данных изображения через различные блоки, как показано выше. Например, в одном варианте осуществления, логику 900 обработки первичных пикселей, рассмотренную выше на фиг.99, можно реализовать с использованием конфигурации линейных буферов, скомпонованных как показано на фиг.120-123. В частности, фиг.120 изображает всю компоновка линейных буферов, которую можно использовать для реализации логики 900 обработки первичных пикселей, тогда как фиг.121 изображает более детальный вид первого поднабора линейных буферов, как показано в замкнутой области 1162 на фиг.120, фиг.122 изображает более детальный вид вертикального фильтра, который может входить в состав логики 934 шумопонижения, и фиг.123 изображает более детальный вид второго поднабора линейных буферов, как показано в замкнутой области 1164 на фиг.120.
[00529] Как, в общем случае, представлено на фиг.120, логика 900 обработки первичных пикселей может включать в себя набор из десяти линейных буферов, пронумерованных от 0 до 9 и обозначенных ссылочными позициями 1160a-1160j, соответственно, также строку логики 1160k, которая включает в себя данные изображения, вводимые 908 (от датчика изображения или из памяти) в логику 900 первичной обработки. Таким образом, логика, показанная на фиг.120, может включать в себя 11 строк, из которых 10 строк включают в себя линейные буферы (1160a-1160j). Как рассмотрено ниже, линейные буферы могут использоваться в режиме обобществления логическими блоками логики 900 обработки первичных пикселей, в том числе, логическими блоками 930 и 938 коэффициента усиления, смещение и ограничения (именуемыми GOC1 и GOC2, соответственно, на фиг.120), логики 932 обнаружения и коррекции дефектных пикселей (DPC), логики 934 шумопонижения (показанной на фиг.120 как включающую в себя логику 934a коррекции неоднородность зеленого (GNU), 7-отводный горизонтальный фильтр 934b и 5-отводный вертикальный фильтр 934c), логики 936 коррекции затенения объектива (LSC) и логики 940 демозаики (DEM). Например, согласно варианту осуществления, показанному на фиг.120, нижний поднабор линейных буферов, представленный линейными буферами 6-9 (1160g-1160j) может обобществляться между логикой 932 DPC и участками логики 934 шумопонижения (включающими в себя логику 934a GNU, горизонтальный фильтр 934b и часть вертикального фильтра 934c). Верхний поднабор линейных буферов, представленный линейными буферами 0-5 (1160a-1160f) может обобществляться между участком логики 934c вертикальной фильтрации, логики 936 коррекции затенения объектива, логики 938 коэффициента усиления, смещения и ограничения, и логики 940 демозаики.
[00530] Для общего описания перемещения данных изображения через линейные буферы, первичные данные 908 изображения, которые могут представлять выходной сигнал логики 80 предварительной обработки ISP, сначала принимаются и обрабатываются логикой 930 GOC1, где применяются надлежащие параметры коэффициента усиления, смещения и ограничения. Затем выходной сигнал логики 930 GOC1 поступает на логику 932 DPC. Как показано, обработка обнаружения и коррекции дефектных пикселей может происходить по линейным буферам 6-9. Первый выходной сигнал логики 932 DPC поступает на логику 934a коррекции неоднородности зеленого (логики 934 шумопонижения), которая имеет место на линейном буфере 9 (1160j). Таким образом, линейный буфер 9 (1160j), в настоящем варианте осуществления, обобществляется между логикой 932 DPC и логикой 934a коррекции GNU.
[00531] Затем выходной сигнал линейного буфера 9 (1160j), обозначенный на фиг.121 как W8, поступает на вход линейного буфера 8 (1160i). Как показано, линейный буфер 8 обобществляется между логикой 932 DPC, которая обеспечивает дополнительную обработку обнаружения и коррекции дефектных пикселей, и логикой горизонтальной фильтрации (934b) блока 934 шумопонижения. Как показано в настоящем варианте осуществления, горизонтальный фильтр 934b может быть 7-отводным фильтром, указанным на фиг.121 отводами 1165a-1165g фильтра, и может быть сконфигурирован как фильтр с конечной импульсной характеристикой (КИХ). Как рассмотрено выше, в некоторых вариантах осуществления, фильтрация шума может обладать краевой адаптивностью. Например, горизонтальный фильтр может быть КИХ-фильтром, но в этом случае отводы фильтра используются только когда разность между центральным пикселем и пикселем на отводе меньше порога, который зависит, по меньшей мере, частично от дисперсии шума.
[00532] Выходной сигнал 1163 (фиг.121) логики 934b горизонтальной фильтрации могут поступать на логику 934c вертикальной фильтрации (более подробно проиллюстрированную на фиг.122) и на вход линейного буфера 7 (1160h). В проиллюстрированном варианте осуществления, линейный буфер 7 сконфигурирован для обеспечения задержки (w) до передачи его входного сигнала W7 в линейный буфер 6 (1160g) в качестве входного сигнала W6. Как показано на фиг.121, линейный буфер 6 располагается между логикой 932 DPC и вертикальным фильтром 934c шумопонижения.
[00533] Затем, со ссылкой одновременно на фиг.120, 122 и 123, верхний поднабор линейных буферов, а именно, линейные буферы 0-5 (1160a-1160f) обобществляются между вертикальным фильтром 934c шумопонижения (показанным на фиг.122), логикой 936 коррекции затенения объектива, логикой 938 GOC2 и логикой 940 демозаики. Например, выходной сигнал линейного буфера 5 (1160f), который обеспечивает задержку (w), поступает на линейный буфер 4 (1160e). Вертикальная фильтрация осуществляется в линейном буфере 4, и выходной сигнал W3 участка 934c вертикального фильтра в линейном буфере 4 поступает на линейный буфер 3 (1160d), а также далее на участки логики 936 коррекции затенения объектива, логики 938 GOC2 и логики 940 демозаики, совместно используемые линейным буфером 4. В настоящем варианте осуществления, логика 934c вертикальной фильтрации может включать в себя пять отводов 1166a-1166e (фиг.122), но допускает конфигурирование для работы как в частично рекурсивном (с бесконечной импульсной характеристикой (БИХ)), так и в нерекурсивном (КИХ) режимах. Например, когда используются все пять отводов, так что отвод 1166c является центральным отводом, логика 934c вертикальной фильтрации работает в частично рекурсивном режиме БИХ. Настоящий вариант осуществления также позволяет по выбору использовать три из пяти отводов, а именно отводы 1166c-1166e, при этом отвод 1166d является центральным отводом, для того, чтобы логика 934c вертикальной фильтрации работала в нерекурсивном (КИХ) режиме. Режим вертикальной фильтрации, в одном варианте осуществления, может задаваться с использованием регистра конфигурации, связанного с логикой 934 шумопонижения.
[00534] Затем линейный буфер 3 принимает входной сигнал W3 и обеспечивает задержку (w) до вывода W2 в линейный буфер 2 (1160c), а также далее на участки логики 936 коррекции затенения объектива, логики 938 GOC2 и логики 940 демозаики, совместно используемые линейным буфером 3. Как показано, линейный буфер 2 также обобществляется между вертикальным фильтром 934c, логикой 936 коррекции затенения объектива, логикой 938 GOC2 и логикой 940 демозаики, и выдает выходной сигнал W1 в линейный буфер 1 (1160b). Аналогично, линейный буфер 1 также обобществляется между вертикальным фильтром 934c, логикой 936 коррекции затенения объектива, логикой 938 GOC2 и логикой 940 демозаики, и выдает выходной сигнал W1 в линейный буфер 0 (1160a). Выходной сигнал 910 логики 940 демозаики может подаваться далее на логику 902 обработки RGB для дополнительной обработки, которая будет дополнительно описана ниже.
[00535] Следует понимать, что проиллюстрированный вариант осуществления, изображающий компоновку линейных буферов в режиме обобществления, благодаря чему, такие разные блоки обработки могут одновременно использовать обобществленные линейные буферы, позволяет значительно сократить количество линейных буферов, необходимых для реализации логики 900 первичной обработки. Очевидно, что это позволяет уменьшить площадь помещения под оборудование, необходимое для реализации схемы 32 обработки изображений, и, таким образом, сократить общие затраты на проектирование и производство. В порядке примера, проиллюстрированный здесь метод обобществления линейных буферов между разными компонентами обработки может, в некоторых вариантах осуществления, сократить количество необходимых линейных буферов по сравнению с традиционным вариантом осуществления, не предусматривающий совместное использование линейных буферов, примерно на 40-50 процентов или более. Кроме того, хотя проиллюстрированный здесь вариант осуществления логики 900 обработки первичных пикселей, показанный на фиг.120, использует 10 линейных буферов, очевидно, что в других вариантах осуществления можно использовать меньшее или большее количество линейных буферов. Таким образом, вариант осуществления, показанный на фиг.120 призван всего лишь иллюстрировать принцип обобществления линейных буферов между множественными блоками обработки, и не призван ограничивать настоящий метод только логикой 900 обработки первичных пикселей. Напротив, аспекты раскрытия, показанные на фиг.120, можно реализовать в любом из логических блоков подсистемы 32 ISP.
[00536] На фиг.124 показана блок-схема операций, демонстрирующая способ 1167 обработки первичных пиксельных данных в соответствии с конфигурацией линейного буфера, показанной на фиг.120-123. Начиная с этапа 1168, линейные буферы логики 900 обработки первичных пикселей может принимать первичные пиксельные данные (например, из логики 80 предварительной обработки ISP, памяти 108 или обеих). На этапе 1169, первый набор параметров коэффициента усиления, смещения и ограничения (GOC1) применяется к первичным пиксельным данным. Затем, на этапе 1170, обнаружение и коррекция дефектных пикселей осуществляется с использованием первого поднабора линейных буферов (например, линейных буферов 6-9 на фиг.120). После этого, на этапе 1171, коррекция неоднородности зеленого (GNU) применяется с использованием, по меньшей мере, одного линейного буфера (например, линейного буфера 9) из первого поднабора линейных буферов. Затем, как показано на этапе 1172, применяется горизонтальная фильтрация для шумопонижения, также с использованием, по меньшей мере, одного линейного буфера из первого поднабора. Согласно варианту осуществления, показанному на фиг.120, линейный(е) буфер(ы) из первого поднабора, которые используются для осуществления коррекции GNU и горизонтальной фильтрации, могут различаться.
[00537] Затем способ 1167 переходит к этапу 1173, на котором вертикальная фильтрация для шумопонижения применяется с использованием, по меньшей мере, одного линейного буфера из первого поднабора, а также, по меньшей мере, части второго поднабора линейных буферов (например, линейных буферов 0-5) логики 900 обработки первичных пикселей. Например, как рассмотрено выше, в зависимости от режима вертикальной фильтрации (например, рекурсивного или нерекурсивного), можно использовать часть или весь второй поднабор линейных буферов. Кроме того, в одном варианте осуществления, второй поднабор может включать в себя оставшиеся линейные буферы, не включенные в первый поднабор линейных буферов из этапа 1170. На этапе 1174, второй поднабор линейных буферов используется для применения коррекции затенения объектива к первичным пиксельным данным. Затем, на этапе 1175, второй поднабор линейных буферов используется для применения второго набора параметров коэффициента усиления, смещения и ограничения (GOC2), после чего, второй набор линейных буферов также используется для демозаики первичных данных изображения, как показано на этапе 1176. Затем цветовые данные RGB, подвергнутые демозаике, можно отправлять далее на этапе 1177 для дополнительной обработки посредством логики 902 обработки RGB, что более подробно рассмотрено ниже.
[00538] Полностью описав работу логики 900 обработки первичных пикселей, которая может выводить сигнал 910 изображения RGB, мы, возвращаясь к фиг.98, сосредоточимся на описании обработки сигнала 910 изображения RGB логикой 902 обработки RGB. Как показано, сигнал 910 изображения RGB может отправляться на логику 914 выбора и/или в память 108. Логика 902 обработки RGB может принимать входной сигнал 916, который может представлять собой данные RGB-изображения из сигнала 910 или из памяти 108, обозначенные сигналом 912, в зависимости от конфигурации логики 914 выбора. Данные 916 RGB-изображения можно обрабатывать логикой 902 обработки RGB для осуществления операций регулировки цветов, включающих в себя цветовую коррекцию (например, с использованием матрицы цветовой коррекции), применение цветовых коэффициентов усиления для автоматической балансировки белого, а также отображения глобальных тонов и т.д.
[00539] Блок-схема, изображающая более детализированный вид варианта осуществления логики 902 обработки RGB, представлена на фиг.125. Как показано, логика 902 обработки RGB включает в себя логику 1178 коэффициента усиления, смещения и ограничения (GOC), логику 1179 цветовой коррекции RGB, логику 1180 GOC, логику регулировки гаммы RGB и логику 1182 преобразования цветового пространства. Сначала входной сигнал 916 принимается логикой 1178 коэффициента усиления, смещения и ограничения (GOC). В проиллюстрированном варианте осуществления, логика 1178 GOC может применять коэффициенты усиления для осуществления автоматической балансировки белого на одном или более цветовых каналах R, G или B до обработки логикой 1179 цветовой коррекции.
[00540] Логика 1178 GOC может быть аналогична логике 930 GOC логики 900 обработки первичных пикселей, за исключением того, что обрабатываются цветовые компоненты области RGB, а не компоненты R, B, Gr и Gb байеровских данных изображения. В ходе эксплуатации, входное значение для текущего пикселя сначала смещается на знаковое значение O[c] и умножается на коэффициент усиления G[c], как показано в вышеприведенном уравнении 11, где c представляет R, G и B. Как рассмотрено выше, коэффициент усиления G[c] может представлять собой 16-битовое беззнаковое число с 2 битами целой части и 14 битами дробной части (например, в представлении 2.14 с плавающей запятой), и значения коэффициента усиления G[c] могут быть заранее определены в ходе статистической обработки (например, в блоке 80 логики предварительной обработки ISP). Вычисленное пиксельное значение Y (на основании уравнения 11) затем ограничивается минимальным и максимальным диапазоном в соответствии с уравнением 12. Как рассмотрено выше, переменные min[c] и max[c] могут представлять знаковые 16-битовые “значения отсечки” для минимального и максимального выходных значений, соответственно. В одном варианте осуществления, логика 1178 GOC также может быть сконфигурирована для поддержания счетчика количества пикселей, которые были отсечены выше и ниже максимума и минимума, соответственно, для каждой цветовой компоненты R, G и B.
[00541] Затем выходной сигнал логики 1178 GOC перенаправляется на логику 1179 цветовой коррекции. В соответствии с описанным здесь изобретением, логика 1179 цветовой коррекции может быть сконфигурирована для применения цветовой коррекции к данным RGB-изображения с использованием матрицы цветовой коррекции (CCM). В одном варианте осуществления, CCM может быть матрицей преобразования RGB 3×3, хотя в других вариантах осуществления также можно использовать матрицы других размеров (например, 4×3 и т.д.). Соответственно, процесс осуществления цветовой коррекции на входном пикселе, имеющем компоненты R, G и B, можно выразить следующим образом:
, (96)
где R, G и B представляют текущие значения красного, зеленого и синего для входного пикселя, CCM00-CCM22 представляют коэффициенты матрицы цветовой коррекции, и R', G' и B' представляют скорректированные значения красного, зеленого и синего для входного пикселя. Соответственно, верные значения цвета можно вычислить в соответствии с нижеследующими уравнениями 97-99:
(97)
(98)
(99)
[00542] Коэффициенты (CCM00-CCM22) CCM можно определить в ходе статистической обработки в блоке 80 логики предварительной обработки ISP, как рассмотрено выше. В одном варианте осуществления, коэффициенты для данного цветового канала можно выбирать так, чтобы сумма этих коэффициентов (например, CCM00, CCM01 и CCM02 для коррекции красного цвета) была равна 1, что может способствовать поддержанию яркостного и цветового баланса. Кроме того, коэффициенты обычно выбираются так, чтобы к корректируемому цвету применялся положительный коэффициент усиления. Например, при коррекции красного цвета, коэффициент CCM00 может быть больше 1, тогда как один или оба из коэффициентов CCM01 и CCM02 могут быть меньше 1. Такое задание коэффициентов может усиливать компоненту красного (R) в результирующем скорректированном значении R', одновременно ослабляя какой-либо из компоненты синего (B) и зеленого (G). Очевидно, что это позволяет решать проблемы, связанные с перекрытием цветов, которое может происходить при получении исходного байеровского изображения, вследствие “перетекания” части фильтрованного света для конкретного окрашенного пикселя в соседний пиксель другого цвета. В одном варианте осуществления, коэффициенты CCM могут быть обеспечены как 16-битовые числа в формате дополнения до 2 с 4 битами целой части и 12 битами дробной части (выраженные в представлении 4.12 с плавающей запятой). Дополнительно, логика 1179 цветовой коррекции может обеспечивать отсечку вычисленных скорректированных значений цвета, если значения превышают максимальное значение или ниже минимального значения.
[00543] Затем выходной сигнал логики 1179 цветовой коррекции RGB поступает на другой логический блок 1180 GOC. Логику 1180 GOC можно реализовать таким же образом, как логику 1178 GOC, и поэтому подробное описание обеспеченных здесь функций коэффициента усиления, смещения и ограничения повторяться не будет. В одном варианте осуществления, применение логики 1180 GOC после цветовой коррекции может обеспечивать автоматический баланс белого данных изображения на основании скорректированных значений цвета и также может регулировать изменения датчика в связи с отношениями красного к зеленому и синего к зеленому.
[00544] Затем выходной сигнал логики 1180 GOC передается на логику 1181 регулировки гаммы RGB для дальнейшей обработки. Например, логика 1181 регулировки гаммы RGB может обеспечивать гамма-коррекцию, отображение тонов, согласование гистограммы и т.д. В соответствии с раскрытыми вариантами осуществления, логика 1181 регулировки гаммы может обеспечивать отображение входных значений RGB в соответствующие выходные значения RGB. Например, логика регулировки гаммы может обеспечивать набор из трех поисковых таблиц, по одной таблице для каждой из компонент R, G и B. В порядке примера, каждая поисковая таблица может быть сконфигурирована для хранения 256 записей 10-битовых значений, причем каждое значение представляет уровень выходного сигнала. Записи таблицы могут равномерно распределяться в диапазоне входных пиксельных значений, чтобы в случае, когда входное значение попадает между двумя записями, выходное значение можно было линейно интерполировать. В одном варианте осуществления, каждую из трех поисковых таблиц для R, G и B можно дублировать, в результате чего, поисковые таблицы “дважды буферизуются” в памяти, что позволяет использовать одну таблицу в ходе обработки, в то время как ее дубликат обновляется. На основании рассмотренных выше 10-битовых выходных значений, следует отметить, что 14-битовый сигнал изображения RGB эффективно подвергается понижающей дискретизации до 10 битов в результате процесса гамма-коррекции в настоящем варианте осуществления.
[00545] Выходной сигнал логики 1181 регулировки гаммы может отправляться в память 108 и/или на логику 1182 преобразования цветового пространства. Логика 1182 преобразования цветового пространства (CSC) может быть сконфигурирована для преобразования выходного сигнала RGB из логики 1181 регулировки гаммы в формат YCbCr, в котором Y представляет компоненту яркости, Cb представляет компоненту цветоразности синего, и Cr представляет компоненту цветоразности красного, каждый из которых может иметь 10-битовый формат в результате преобразования битовой глубины данных RGB от 14 битов до 10 битов в ходе операции регулировки гаммы. Как рассмотрено выше, в одном варианте осуществления, выходной сигнал RGB логики 1181 регулировки гаммы может подвергаться понижающей дискретизации до 10 битов и, таким образом, преобразовываться в 10-битовые значения YCbCr логикой 1182 CSC, которые затем могут перенаправляться на логику 904 обработки YCbCr, что будет дополнительно рассмотрено ниже.
[00546] Преобразование из области RGB в цветовое пространство YCbCr может осуществляться с использованием матрицы преобразования цветового пространства (CSCM). Например, в одном варианте осуществления, CSCM может быть матрицей 3×3 преобразования. Коэффициенты CSCM можно устанавливать в соответствии с известным уравнением преобразования, например, стандартами BT.601 и BT.709. Дополнительно, коэффициенты CSCM можно задавать гибко на основании желаемого диапазона входных и выходных сигналов. Таким образом, в некоторых вариантах осуществления, коэффициенты CSCM можно определять и программировать на основании данных, собранных в ходе статистической обработки в блоке 80 логики предварительной обработки ISP.
[00547] Процесс осуществления преобразования цветового пространства YCbCr на входном пикселе RGB можно выразить следующим образом:
, (100)
где R, G и B представляют текущие значения красного, зеленого и синего для входного пикселя в 10-битовой форме (например, обработанные логикой 1181 регулировки гаммы), CSCM00-CSCM22 представляют коэффициенты матрицы преобразования цветового пространства, и Y, Cb и Cr представляют результирующие компоненты яркости и цветности для входного пикселя. Соответственно, значения Y, Cb и Cr можно вычислить в соответствии с нижеследующими уравнениями 101-103:
(101)
(102)
(103)
После операции преобразования цветового пространства, результирующее значения YCbCr могут выводиться из логики 1182 CSC в качестве сигнала 918, который можно обрабатывать логикой 904 обработки YCbCr, как будет рассмотрено ниже.
[00548] В одном варианте осуществления, коэффициенты CSCM могут быть 16-битовыми числами в формате дополнения до 2 с 4 битами целой части и 12 битами дробной части (4.12). В другом варианте осуществления, логика 1182 CSC может быть дополнительно сконфигурирована для применения смещения к каждому из значений Y, Cb и Cr, и для ограничения полученных значений минимальным и максимальным значениями. Исключительно в порядке примера, предполагая, что значения YCbCr находятся в 10-битовой форме, смещение может находиться в диапазоне от -512 до 512, и минимальное и максимальное значения могут быть равны 0 и 1023, соответственно.
[00549] Возвращаясь к блок-схеме логики 82 конвейерной обработки ISP на фиг.98, сигнал 918 YCbCr может отправляться на логику 922 выбора и/или в память 108. Логика 904 обработки YCbCr может принимать входной сигнал 924, который может представлять собой данные YCbCr-изображения из сигнала 918 или из памяти 108, как показано сигналом 920, в зависимости от конфигурации логики 922 выбора. Данные 924 YCbCr-изображения могут затем обрабатываться логикой 904 обработки YCbCr для яркостного повышения резкости, подавления цветности, понижения шума цветности, понижения шума цветности, а также регулировок яркости, контрастности и цвета, и т.д. Кроме того, логика 904 обработки YCbCr может обеспечивать отображение гаммы и масштабирование обработанных данных изображения в горизонтальном и вертикальном направлениях.
[00550] Блок-схема, изображающая более детализированный вид варианта осуществления логики 904 обработки YCbCr, представлена на фиг.126. Как показано, логика 904 обработки YCbCr включает в себя логику 1183 повышения резкости изображения, логику 1184 для регулировки яркости, контрастности и/или цвета, логику 1185 регулировки гаммы YCbCr, логику 1186 прореживания цветности и логику 1187 масштабирования. Логика 904 обработки YCbCr может быть сконфигурирована для обработки пиксельных данных в форматах 4:4:4, 4:2:2 или 4:2:0 с использованием 1-плоскостной, 2-плоскостной или 3-плоскостной конфигурации памяти. Кроме того, в одном варианте осуществления, входной сигнал 924 YCbCr может обеспечивать информацию яркости и цветности в виде 10-битовых значений.
[00551] Очевидно, что 1-плоскостная, 2-плоскостная или 3-плоскостная означает количество плоскостей формирования изображения, используемых в памяти изображений. Например, в 3-плоскостном формате, каждая из компонент Y, Cb и Cr может использовать отдельные соответствующие плоскости памяти. В 2-плоскостном формате, первая плоскость может быть обеспечена для компоненты яркости (Y), и вторая плоскость, которая перемежает выборки Cb и Cr, может быть обеспечена для компонент цветности (Cb и Cr). В 1-плоскостном формате, единственная плоскость в памяти перемежается с выборками яркости и цветности. Кроме того, в отношении форматов 4:4:4, 4:2:2 и 4:2:0, очевидно, что формат 4:4:4 относится к формату дискретизация, в котором каждый из трех компонент YCbCr дискретизируются с одной и той же частотой дискретизации. В формате 4:2:2 компоненты цветности Cb и Cr субдискретизируются на половине частоты дискретизации компоненты яркости Y, из-за чего, разрешение компонент цветности Cb и Cr снижается в два раза в горизонтальном направлении. Аналогично формат 4:2:0 прореживает компоненты цветности Cb и Cr в вертикальном и горизонтальном направлениях.
[00552] Обработка информации YCbCr может происходить в активной области источника, заданной в буфере источника, где активная область источника содержит “действительные” пиксельные данные. Например, на фиг.127 проиллюстрирован буфер 1188 источника, в котором задана активная область 1189 источника. В проиллюстрированном примере, буфер источника может представлять 1-плоскостной формат 4:4:4, обеспечивающий исходные пиксели 10-битовых значений. Активная область 1189 источника может задаваться по отдельности для выборок яркости (Y) и выборок цветности (Cb и Cr). Таким образом, следует понимать, что активная область 1189 источника фактически может включать в себя множественные активной области источника для выборок яркости и цветности. Начало активных областей 1189 источника для яркости и цветности можно определить на основании смещения относительно базового адреса (0,0) 1190 буфера источника. Например, начальную позицию 1191 (Lm_X, Lm_Y) для яркостной активной области источника можно задать смещением 1193 по оси x и смещением 1196 по оси y относительно базового адреса 1190. Аналогично, начальную позицию 1192 (Ch_X, Ch_Y) для цветностной активной области источника можно задать смещением 1194 по оси x и смещением 1198 по оси y относительно базового адреса 1190. Следует отметить, что в настоящем примере, смещения 1196 и 1198 по оси y для яркости и цветности, соответственно, могут быть равны. На основании начальной позиции 1191, яркостная активная область источника может задаваться шириной 1195 и высотой 1200, каждая из которых может представлять количество выборок яркости в направлениях x и y, соответственно. Дополнительно, на основании начальной позиции 1192, цветностная активная область источника может задаваться шириной 1202 и высотой 1204, каждая из которых может представлять количество выборок цветности в направлениях x и y, соответственно.
[00553] На фиг.128 дополнительно приведен пример, демонстрирующий, как можно определить активной области источника для выборок яркости и цветности в двухплоскостном формате. Например, как показано, яркостную активная область 1189 источника можно задать в первом буфере 1188 источника (имеющем базовый адрес 1190) как область, заданную шириной 1195 и высотой 1200 относительно начальной позиции 1191. Цветностную активная область источника 1208 можно задать во втором буфере 1206 источника (имеющем базовый адрес 1190) как область, заданную шириной 1202 и высотой 1204 относительно начальной позиции 1192.
[00554] Исходя из вышеизложенного и возвращаясь к фиг.126, сигнал 924 YCbCr сначала принимается логикой 1183 повышения резкости изображения. Логика 1183 повышения резкости изображения может быть сконфигурирована для осуществления обработки повышения резкости изображения и подчеркивания краев для увеличения детализации текстуры и краев в изображении. Очевидно, что, повышение резкости изображения может повышать воспринимаемое разрешение изображения. Однако, в общем случае, желательно, чтобы существующий шум в изображении не обнаруживался как текстура и/или края, и, таким образом, не усиливался в процессе повышения резкости.
[00555] В соответствии с настоящим изобретением, логика 1183 повышения резкости изображения может осуществлять повышение резкости изображения с использованием фильтра с многомасштабной нерезкой маской на компоненте яркости (Y) сигнала YCbCr. В одном варианте осуществления, может быть обеспечено два или более низкочастотных гауссовых фильтра размеров масштаба разности. Например, согласно варианту осуществления, который предусматривает два гауссова фильтра, выходной сигнал (например, гауссово размывание) первого гауссова фильтра, имеющего первый радиус (x) вычитается из выходного сигнала второго гауссова фильтра, имеющего второй радиус (y), где x больше y, для генерации нерезкой маски. Дополнительные нерезкие маски также можно получить вычитанием выходных сигналов гауссовых фильтров из входного сигнала Y. В некоторых вариантах осуществления, метод также может предусматривать операции сравнения с адаптивным порогом коринга, которые могут осуществляться с использованием нерезких масок, что позволяет, на основании результата(ов) сравнения, прибавлять величины коэффициента усиления к базовому изображению, которое можно выбирать в качестве исходного входного изображения Y, или к выходному сигналу одного из гауссовых фильтров, для генерации окончательного выходного сигнала.
[00556] На фиг.129 проиллюстрирована блок-схема, изображающая примерную логику 1210 для осуществления повышения резкости изображения в соответствии с вариантами осуществления описанного здесь изобретения. Логика 1210 представляет многомасштабную нерезкую маску фильтрации, которая может применяться к входному яркостному изображению Yin. Например, как показано, Yin принимается и обрабатывается двумя низкочастотными гауссовыми фильтрами 1212 (G1) и 1214 (G2). В настоящем примере, фильтр 1212 может быть фильтром 3×3, и фильтр 1214 может быть фильтром 5×5. Однако очевидно, что в дополнительных вариантах осуществления, также можно использовать более двух гауссовых фильтров, включающих в себя фильтры разных масштабов (например, 7×7, 9×9 и т.д.). Очевидно, что вследствие процесса низкочастотной фильтрации, высокочастотные компоненты, которые, в общем случае, соответствуют шуму, можно удалять из выходных сигналов G1 и G2 для формирования “нерезких” изображений (G1out и G2out). Как будет рассмотрено ниже, использованием нерезкого входного изображения в качестве базового изображения позволяет осуществлять шумопонижение как часть фильтра повышения резкости.
[00557] Гауссов фильтр 1212 3×3 и гауссов фильтр 1214 5×5 можно задать, как показано ниже:
Исключительно в порядке примера, значения гауссовых фильтров G1 и G2 можно выбирать в одном варианте осуществления следующим образом:
[00558] На основании Yin, G1out и G2out, можно генерировать три нерезкие маски, Sharp1, Sharp2 и Sharp3. Sharp1 можно определить как результат вычитания нерезкого изображения G2out от гауссова фильтра 1214, из нерезкого изображения G1out гауссова фильтра 1212. Поскольку Sharp1, по существу, равна разности между двумя фильтрами низких частот, она может именоваться “среднеполосной” маской, поскольку шумовые компоненты более высоких частот уже отфильтрованы в нерезких изображениях G1out и G2out. Дополнительно, Sharp2 можно вычислять посредством вычитания G2out из входного яркостного изображения Yin, и Sharp3 можно вычислять посредством вычитания G1out из входного яркостного изображения Yin. Как будет рассмотрено ниже, схему адаптивного порога коринга можно применять с использованием нерезких масок Sharp1, Sharp2 и Sharp3.
[00559] Согласно логике 1216 выбора, базовое изображение можно выбирать на основании сигнала управления UnsharpSel. В проиллюстрированном варианте осуществления, базовым изображением может быть либо входное изображение Yin, либо фильтрованные выходные сигналы G1out или G2out. Очевидно, что, когда исходные изображения имеют высокую дисперсию шума (например, почти такую же высокую, как дисперсия сигнала), использование исходного изображения Yin в качестве базового изображения при повышении резкости может не обеспечивать достаточного снижения шумовых компонент в ходе повышения резкости. Соответственно, при обнаружении конкретного порога шумового наполнения во входном изображении, логику 1216 выбора можно адаптировать для выбора одного из выходных сигналов G1out или G2out фильтра низких частот, из которых удалено высокочастотное наполнение, которое может включать в себя шум. В одном варианте осуществления, значение сигнала управления UnsharpSel можно определить посредством анализа статистических данных, полученных в ходе статистической обработки в блоке 80 логики предварительной обработки ISP, для определения шумового наполнения изображения. В порядке примера, если входное изображение Yin имеет низкое шумовое наполнение, благодаря чему не происходит заметного повышения шума в результате процесса повышения резкости, входное изображение Yin можно выбирать в качестве базового изображения (например, UnsharpSel=0). Если определено, что входное изображение Yin содержит заметный уровень шума, из-за чего процесс повышения резкости может усиливать шум, можно выбирать одно из фильтрованных изображений G1out или G2out (например, UnsharpSel=1 или 2, соответственно). Таким образом, благодаря применению адаптивного метода выбора базового изображения, логика 1210, по существу, обеспечивает функцию шумопонижения.
[00560] Затем коэффициенты усиления можно применять к одной или более из масок Sharp1, Sharp2 и Sharp3 в соответствии со схемой адаптивного порога коринга, как описано ниже. Затем нерезкие значения Sharp1, Sharp2 и Sharp3 можно сравнивать с различными порогами SharpThd1, SharpThd2 и SharpThd3 (не обязательно соответственно) посредством компараторных блоков 1218, 1220 и 1222. Например, значение Sharp1 всегда сравнивается с SharpThd1 на компараторном блоке 1218. В отношении компараторного блока 1220, порог SharpThd2 можно сравнивать либо с Sharp1, либо с Sharp2, в зависимости от логики 1226 выбора. Например, логика 1226 выбора может выбирать Sharp1 или Sharp2 в зависимости от состояния сигнала управления SharpCmp2 (например, SharpCmp2=1 выбирает Sharp1; SharpCmp2=0 выбирает Sharp2). Например, в одном варианте осуществления, состояние SharpCmp2 можно определить в зависимости от дисперсии/наполнения шума входного изображения (Yin).
[00561] В проиллюстрированном варианте осуществления, в общем случае, предпочтительно задавать значения SharpCmp2 и SharpCmp3 для выбора Sharp1, если не обнаружено, что данные изображения имеют относительно низкий уровень шума. Дело в том, что Sharp1, будучи разностью между выходными сигналами гауссовых фильтров G1 и G2 низких частот, в общем случае, менее чувствителен к шуму, что позволяет уменьшать величина изменения значений SharpAmt1, SharpAmt2 и SharpAmt3 вследствие флуктуаций уровня шума “зашумленных” данных изображения. Например, если исходное изображение имеет высокую дисперсию шума, некоторые высокочастотные компоненты не удается уловить с использованием фиксированных порогов, и, таким образом, они могут усиливаться в процессе повышения резкости. Соответственно, в случае высокого шумового наполнения входного изображения, некоторое шумовое наполнение может присутствовать в Sharp2. В таких случаях, SharpCmp2 можно устанавливать равным 1 для выбора среднеполосной маски Sharp1, которая, как рассмотрено выше, снизила высокочастотное наполнение вследствие того, что является разностью двух выходных сигналов фильтров низких частот, и, таким образом, менее чувствительна к шуму.
[00562] Очевидно, что аналогичный процесс может применяться к выбору Sharp1 или Sharp3 логикой 1224 выбора под управлением SharpCmp3. В одном варианте осуществления, SharpCmp2 и SharpCmp3 можно устанавливать равными 1 по умолчанию (например, использовать Sharp1), и устанавливать равными 0 только для тех входных изображений, которые идентифицированы как имеющие, в общем случае, низкие значения дисперсии шума. Это, по существу, обеспечивает схему адаптивного порога коринга, в которой выбор значения сравнения (Sharp1, Sharp2 или Sharp3) является адаптивным на основании дисперсии шума входного изображения.
[00563] На основании выходных сигналов компараторных блоков 1218, 1220 и 1222, можно определить выходное изображение повышенной резкости Ysharp посредством применения нерезких масок с примененным коэффициентом усиления к базовому изображению (например, выбранному посредством логики 1216). Например, на компараторном блоке 1222, SharpThd3 сравнивается с B-входом, обеспеченным логикой 1224 выбора, который будет именоваться здесь “SharpAbs”, и может быть равен Sharp1 или Sharp3 в зависимости от состояния SharpCmp3. Если SharpAbs больше порога SharpThd3, то коэффициент усиления SharpAmt3 применяется к Sharp3, и результирующее значение прибавляется к базовому изображению. Если SharpAbs меньше порога SharpThd3, то можно применять ослабленный коэффициент усиления Att3. В одном варианте осуществления, ослабленный коэффициент усиления Att3 можно определить следующим образом:
(104)
где SharpAbs равен Sharp1 или Sharp3, что определяется логикой 1224 выбора. Выбор суммирования базового изображения с полным коэффициентом усиления (SharpAmt3) или ослабленным коэффициентом усиления (Att3) осуществляется логикой 1228 выбора на основании выходного сигнала компараторного блока 1222. Очевидно, что использование ослабленного коэффициента усиления позволяет разрешать ситуации, в которых SharpAbs не превышает порог (например, SharpThd3), но дисперсия шума изображения, тем не менее, близка к данному порогу. Это позволяет сделать менее заметным переход между резким и нерезким пикселями. Например, если в таких обстоятельствах данные изображения пропускаются без ослабленного коэффициента усиления, результирующий пиксель может выглядеть как дефектный пиксель (например, залипший пиксель).
[00564] Затем аналогичный процесс можно применять в отношении компараторного блока 1220. Например, в зависимости от состояния SharpCmp2, логика 1226 выбора может обеспечивать Sharp1 или Sharp2 в качестве входного сигнала компараторного блока 1220, который сравнивается с порогом SharpThd2. В зависимости от выхода компараторного блока 1220, либо коэффициент усиления SharpAmt2, либо ослабленный коэффициент усиления на основании SharpAmt2, Att2, применяется к Sharp2 и суммируется с выходным сигналом логики 1228 выбора, рассмотренным выше. Очевидно, что ослабленный коэффициент усиления Att2 можно вычислить аналогично вышеприведенному уравнению 104, за исключением того, что коэффициент усиления SharpAmt2 и порог SharpThd2 применяются к SharpAbs, в качестве которого можно выбирать Sharp1 или Sharp2.
[00565] После этого, коэффициент усиления SharpAmt1 или ослабленный коэффициент усиления Att1 применяется к Sharp1, и результирующее значение суммируется с выходным сигналом логики 1230 выбора для генерации пиксельного выхода повышенной резкости Ysharp (из логики 1232 выбора). Применять ли коэффициент усиления SharpAmt1 или ослабленный коэффициент усиления Att1, можно определить на основании выходного сигнала компараторного блока 1218, который сравнивает Sharp1 с порогом SharpThd1. Опять же, ослабленный коэффициент усиления Att1 можно определить аналогично вышеприведенному уравнению 104, за исключением того, что коэффициент усиления SharpAmt1 и порог SharpThd1 применяются к Sharp1. Результирующие пиксельные значения повышенной резкости, масштабированные с использованием каждой из трех масок, прибавляются к входному пикселю Yin для генерации выходного сигнала повышенной резкости Ysharp, который, в одном варианте осуществления, можно обрезать до 10 битов (предполагая, что обработка YCbCr происходит с 10-битовой точностью).
[00566] Очевидно, что, по сравнению с традиционными методами нерезкого маскирования, методы повышения резкости изображения, изложенные в этом раскрытии, могут обеспечивать усовершенствованное подчеркивание текстур и краев с одновременным понижением шума в выходном изображении. В частности, настоящее изобретение можно успешно применять в приложениях, где изображения, захваченные с использованием, например, КМОП-датчиков изображения, демонстрируют низкое отношение сигнал/шум, например изображения, полученные в условиях низкой освещенности с использованием камер пониженного разрешения, встроенных в портативные устройства (например, мобильные телефоны). Например, когда дисперсия шума и дисперсия сигнала сравнимы, трудно использовать фиксированный порог для повышения резкости, поскольку некоторые шумовые компоненты будут подвергаться повышению резкости совместно с текстурой и краями. Соответственно, обеспеченные здесь методы, как рассмотрено выше, позволяют отфильтровывать шум от входного изображения с использованием многомасштабных гауссовых фильтров для выделения признаков из нерезких изображений (например, G1out и G2out) для обеспечения изображения повышенной резкости, которое также демонстрирует сниженное шумовое наполнение.
[00567] Прежде чем продолжить, следует понять, что проиллюстрированная логика 1210 призвана обеспечивать лишь один примерный вариант осуществления настоящего изобретения. В других вариантах осуществления, большее или меньшее количество признаков может быть обеспечено логикой 1183. повышения резкости изображения. Например, в некоторых вариантах осуществления, вместо применения ослабленного коэффициента усиления, логика 1210 может просто передавать базовое значение. Дополнительно, некоторые варианты осуществления могут не включать в себя логические блоки 1224, 1226 или 1216 выбора. Например, компараторные блоки 1220 и 1222 могут просто принимать значения Sharp2 и Sharp3, соответственно, а не выходной сигнал выбора из логических блоков 1224 и 1226 выбора, соответственно. Хотя такие варианты осуществления могут не обеспечивать признаки повышения резкости и/или шумопонижения, которые столь же надежны, как реализация, показанная на фиг.129, очевидно, что такие варианты конструкции могут быть результатом ограничений, связанных с затратами и/или бизнесом.
[00568] В настоящем варианте осуществления, логика 1183 повышения резкости изображения также может обеспечивать признаки подчеркивания краев и подавления цветности после получения выходного сигнала YSharp изображения повышенной резкости. Ниже мы рассмотрим каждый из этих дополнительных признаков. На фиг.130, примерная логика 1234 для осуществления подчеркивания краев, которую можно реализовать, располагая ее после логики 1210 повышения резкости, показанной на фиг.129, проиллюстрирована в соответствии с одним вариантом осуществления. Как показано, исходное входное значение Yin обрабатывается фильтром 1236 Собеля для обнаружения края. Фильтр 1236 Собеля может определять значение градиента YEdge на основании пиксельного блока 3×3 (обозначенного “A”) исходного изображения, где Yin является центральным пикселем блока 3×3. В одном варианте осуществления, фильтр 1236 Собеля может вычислять YEdge посредством вычисления свертки исходных данных изображения для обнаружения изменений в горизонтальном и вертикальном направлениях. Этот процесс показан ниже в уравнениях 105-107.
, (105)
, (106)
, (107)
где Sx и Sy представляют матричные операторы для градиентного обнаружения силы края в горизонтальном и вертикальном направлениях, соответственно, и Gx и Gy представляют градиентные изображения, которые содержат производные горизонтального и вертикального изменения, соответственно. Соответственно, выход YEdge определяется произведение Gx и Gy.
[00569] Затем YEdge принимается логикой 1240 выбора совместно со среднеполосной маской Sharp1, как рассмотрено выше на фиг.129. На основании сигнала EdgeCmp управления, Sharp1 или YEdge сравнивается с порогом, EdgeThd, на компараторном блоке 1238. Состояние EdgeCmp можно определить, например, на основании шумового наполнения изображения, таким образом, обеспечивая схему адаптивного порога коринга для обнаружения и подчеркивания края. Затем выход компараторного блока 1238 может поступать на логика 1242 выбора, и может применяться либо полный коэффициент усиления, либо ослабленный коэффициент усиления. Например, когда выбранный B-вход в компараторный блок 1238 (Sharp1 или YEdge) выше EdgeThd, YEdge умножается на краевой коэффициент усиления, EdgeAmt, для определения величины подчеркивания краев, подлежащего применению. Если B-вход на компараторном блоке 1238 меньше EdgeThd, то может применяться ослабленный краевой коэффициент усиления, AttEdge, во избежание заметных переходов между пикселем с подчеркнутым краем и исходным пикселем. Очевидно, что AttEdge можно вычислять аналогично тому, как показано выше в уравнении 104, но при этом EdgeAmt и EdgeThd применяются к “SharpAbs”, который может представлять собой Sharp1 или YEdge, в зависимости от выходного сигнала логики 1240 выбора. Таким образом, краевой пиксель, усиленный с использованием коэффициента усиления (EdgeAmt) или ослабленного коэффициента усиления (AttEdge), может прибавляться к YSharp (выходному сигналу логики 1210 на фиг.129) для получения выходного пикселя Yout с подчеркнутым краем, который, в одном варианте осуществления, можно обрезать до 10 битов (предполагая, что обработка YCbCr происходит с 10-битовой точностью).
[00570] В отношении признаков подавления цветности, обеспеченных логикой 1183 повышения резкости изображения, такие признаки могут ослаблять цветность на краях яркости. В общем случае, подавление цветности может осуществляться посредством применения коэффициента усиления цветности (коэффициента ослабления) меньшего 1 в зависимости от значения (YSharp, Yout), полученного на рассмотренных выше этапах яркостного повышения резкости и/или подчеркивания краев. В порядке примера, фиг.131 демонстрирует график 1250, который включает в себя кривую 1252, представляющую коэффициенты усиления цветности, которые можно выбирать для соответствующих значений яркости при повышенной резкости (YSharp). Данные, представленные графиком 1250, можно реализовать в виде поисковой таблицы значений YSharp и соответствующих коэффициентов усиления цветности между 0 и 1 (коэффициента ослабления). Поисковые таблицы используются для аппроксимации кривой 1252. Для значений YSharp, которые близко расположены между двумя коэффициентами ослабления в поисковой таблице, линейная интерполяция может применяться к двум коэффициентам ослабления, соответствующим значениям YSharp выше или ниже текущего значения YSharp. Кроме того, в других вариантах осуществления, входное значение яркости также можно выбирать как одно из значений Sharp1, Sharp2 и Sharp3, определенных логикой 1210, как рассмотрено выше на фиг.129, или значения YEdge, определенного логикой 1234, рассмотренной на фиг.130.
[00571] Затем выходной сигнал логики 1183 повышения резкости изображения (фиг.126) обрабатывается логикой 1184 регулировки яркости, контрастности и цвета (BCC). Функциональная блок-схема, изображающая вариант осуществления логики 1184 регулировки BCC, представлен на фиг.132. Как показано, логика 1184 включает в себя блок 1262 обработки яркости и контрастности, блок 1264 управления глобальным тоном и блок 1266 управления насыщенностью. Проиллюстрированный здесь вариант осуществления предусматривает обработку данных YCbCr 10-битовой точности, хотя другие варианты осуществления могут использовать разные битовые глубины. Функции каждого из блоков 1262, 1264 и 1266 рассмотрены ниже.
[00572] На блоке 1262 обработки яркости и контрастности, смещение, YOffset, сначала вычитается из данных яркости (Y) для установки уровня черного на нуль. Это делается для того, чтобы гарантировать, что регулировка контрастности не изменяет уровни черного. Затем значение яркости умножается на значение коэффициента усиления контрастности для применения управления контрастностью. В порядке примера, значение коэффициента усиления контрастности может быть 12-битовым беззнаковым числом с 2 битами целой части и 10 битами дробной части, таким образом, обеспечивающим диапазон коэффициента усиления контрастности, до 4 раз превышающий пиксельное значение. После этого, регулировку яркости можно реализовать посредством прибавления (или вычитания) значения смещения яркости из данных яркости. В порядке примера, смещение яркости в настоящем варианте осуществления может представлять собой 10-битовое значение в формате дополнения до 2, имеющее диапазон от -512 до +512. Кроме того, следует отметить, что регулировка яркости осуществляется после регулировки контрастности во избежание изменения смещения постоянной составляющей при изменении контрастности. После этого, начальное YOffset прибавляется обратно к отрегулированным данным яркости для переустановки уровня черного.
[00573] Блоки 1264 и 1266 обеспечивают регулировку цвета на основании тоновых характеристик данных Cb и Cr. Как показано, смещение 512 (предполагая 10-битовую обработку) сначала вычитается из данных Cb и Cr для установки диапазона приблизительно равным нулю. Затем тон регулируется в соответствии со следующими уравнениями:
Cbadj=Cb cos(θ)+Cr sin(θ), (108)
Cradj=Cr cos(θ)-Cb sin(θ), (109)
где Cbadj и Cradj представляют отрегулированные значения Cb и Cr, и θ представляет угол тона, который можно вычислять следующим образом:
θ=arctan (110)
Вышеописанные операции изображены логикой в блоке 1264 управления глобальным тоном и могут быть представлены следующей матричной операцией:
, (111)
где, Ka=cos(θ), Kb=sin(θ), и θ задан выше в уравнении 110.
[00574] Затем управление насыщенностью может применяться к значениям Cbadj и Cradj, что показано блоком 1266 управления насыщенностью. В проиллюстрированном варианте осуществления, управление насыщенностью осуществляется посредством применения глобального коэффициента насыщенности и коэффициента насыщенности на основе тона для каждого из значений Cb и Cr. Управление насыщенностью на основе тона может улучшать воспроизведение цветов. Тон цвета можно представить в цветовом пространстве YCbCr, как показано круговой диаграммой 1270 цветов на фиг.133. Очевидно, что, цветовой круг 1270 тона и насыщенности YCbCr можно вывести посредством сдвига идентичного цветового круга в цветовом пространстве HSV (тон, насыщенность и интенсивность) приблизительно на 109 градусов. Как показано, график 1270 включает в себя окружные значения, представляющие коэффициент насыщенности (S) в диапазоне от 0 до 1, а также угловые значения, представляющие θ, заданный выше, в диапазоне от 0 до 360°. Каждый θ может представлять отдельный цвет (например, 49° = малиновый, 109° = красный, 229° = зеленый, и т.д.). Тон цвета при конкретном угле θ тона можно регулировать посредством выбора надлежащего коэффициента S насыщенности.
[00575] Возвращаясь к фиг.132, угол θ тона (вычисленный в блоке 1264 управления глобальным тоном) можно использовать как индекс для поисковая таблица 1268 насыщенности Cb и поисковая таблица 1269 насыщенности Cr. В одном варианте осуществления, поисковые таблицы 1268 и 1269 насыщенности могут содержать 256 значений насыщенности, равномерно распределенных в диапазоне тона 0-360° (например, первая запись поисковой таблицы находится на 0° и последняя запись находится на 360°), и значение S насыщенности на данном пикселе можно определить посредством линейной интерполяции значений насыщенности в поисковой таблице непосредственно ниже и выше текущего угла θ тона. Окончательное значение насыщенности для каждой из компонент Cb и Cr получается посредством умножения глобального значения насыщенности (которое может быть глобальной постоянной для каждого из Cb и Cr) на определенное значение насыщенности на основе тона. Таким образом, окончательные скорректированные значения Cb' и Cr' можно определить посредством умножения Cbadj и Cradj с их соответствующими окончательными значениями насыщенности, как показано в блоке 1266 управления насыщенностью на основе тона.
[00576] После этого, выходной сигнал логики 1184 BCC поступает на логику 1185 регулировки гаммы YCbCr, как показано на фиг.126. В одном варианте осуществления, логика 1185 регулировки гаммы может обеспечивать функции нелинейного отображения для каналов Y, Cb и Cr. Например, входные значения Y, Cb и Cr отображаются в соответствующие выходные значения. Опять же, предполагая, что данные YCbCr обрабатываются в 10 битах, можно использовать поисковую таблицу 256 интерполированных 10-битовых записей. Три такие поисковые таблицы могут быть обеспечены по одной для каждого из каналов Y, Cb и Cr. Каждая из 256 входных записей может быть равномерно распределена, и выходной сигнал можно определить посредством линейной интерполяции выходных значений, отображаемых в индексы непосредственно выше и ниже текущего входного индекса. В некоторых вариантах осуществления, также можно использовать неинтерполированную поисковую таблицу, которая имеет 1024 записи (для 10-битовых данных), но может предъявлять значительно более высокие требования к памяти. Очевидно, что, регулируя выходные значения поисковых таблиц, функцию регулировки гаммы YCbCr также можно использовать для осуществления некоторых эффектов фильтра изображения, например, черно-белого, сепии, негативные изображения, соляризации и т.д.
[00577] Затем прореживание цветности может применяться логикой 1186 прореживания цветности к выходному сигналу логики 1185 регулировки гаммы. В одном варианте осуществления, логика 1186 прореживания цветности может быть сконфигурирована для осуществления горизонтального прореживания для преобразования данных YCbCr из формата 4:4:4 в формат 4:2:2, в котором информация цветности (Cr и Cr) субдискретизируется на половине частоты дискретизации данных яркости. Исключительно в порядке примера, прореживание может осуществляться посредством применения 7-отводного фильтра низких частот, например полуполосового фильтра Ланцоша, к набору из 7 горизонтальных пикселей, как показано ниже:
, (112)
где in(i) представляет входной пиксель (Cb или Cr), и C0-C6 представляют коэффициенты фильтрации 7-отводного фильтра. Каждый входной пиксель имеет независимый коэффициент фильтрации (C0-C6) для обеспечения гибкого смещения фазы для фильтрованных выборок цветности.
[00578] Кроме того, прореживание цветности, в ряде случаев, также можно осуществлять без фильтрации. Это может оказаться полезным, когда исходное изображение первоначально принимается в формате 4:2:2, но подвергается повышающей дискретизации до формата 4:4:4 для обработки YCbCr. В этом случае, результирующее прореженное изображение в формате 4:2:2 идентично исходному изображению.
[00579] Затем данные YCbCr, выводимые из логики 1186 прореживания цветности, можно масштабировать с использованием логики 1187 масштабирования до вывода из блока 904 обработки YCbCr. Функция логики 1187 масштабирования может быть аналогична функциональным возможностям логики 709, 710 масштабирования в фильтре 652 компенсации биннинга блока 150 предварительной обработки пикселей, рассмотренных выше со ссылкой на фиг.59. Например, логика 1187 масштабирования может осуществлять горизонтальное и вертикальное масштабирование в два этапа. В одном варианте осуществления, 5-отводный многофазный фильтр можно использовать для вертикального масштабирования, и 9-отвтодный многофазный фильтр можно использовать для горизонтального масштабирования. Многоотводные многофазные фильтры могут умножать пиксели, выбранные из источника изображение, на весовой коэффициент (например, коэффициент фильтрации) и затем суммировать выходные сигналы для формирования окончательного пикселя. Выбранные пиксели могут выбираться в зависимости от позиции текущего пикселя и количества отводов фильтров. Например, с помощью вертикального 5-отводного фильтра, можно выбирать два соседних пикселя на каждой вертикальной стороне текущего пикселя, и, с помощью горизонтального 9-отвтодного фильтра, можно выбирать четыре соседних пикселя на каждой горизонтальной стороне текущего пикселя. Коэффициенты фильтрации могут обеспечиваться из поисковой таблицы и могут определяться текущей межпиксельной дробной позицией. Затем выходной сигнал 926 логики 1187 масштабирования выводится из блока 904 обработки YCbCr.
[00580] Возвращаясь к фиг.98, обработанный выходной сигнал 926 может отправляться в память 108 или, в соответствии с вариантом осуществления схемы 32 обработки изображений показанный на фиг.7, может выводиться из логики 82 конвейерной обработки ISP в качестве сигнала 114 изображения на оборудование отображения (например, дисплей 28) для просмотра пользователем, или на машину сжатия (например, кодер 118). В некоторых вариантах осуществления, сигнал 114 изображения может дополнительно обрабатываться блоком обработки графики и/или машиной сжатия и сохраняться до снятия сжатия и подачи на дисплей. Дополнительно, один или более кадровых буферов также можно обеспечить для управления буферизацией данных изображения, выводимых на дисплей, в частности в отношении данных видеоизображения. Кроме того, согласно варианту осуществления, где предусмотрена логика 120 окончательной обработки ISP (например, фиг.8), сигнал 114 изображения можно отправлять далее для дополнительных этапов последующей обработки, что будет рассмотрено в следующем разделе.
ЛОГИКА ОКОНЧАТЕЛЬНОЙ ОБРАБОТКИ ISP
[00581] На основании подробно описанной выше логики 80 предварительной обработки ISP и конвейера 82 ISP, настоящее рассмотрение теперь сконцентрируется на логике 120 окончательной обработки ISP, которая представлена выше на фиг.8. Как рассмотрено выше, логика 120 окончательной обработки ISP, в общем случае, функционирует для приема обработанные данные изображения, поступающие из конвейера 82 ISP или из памяти 108 (сигнал 124), и для осуществления дополнительных операций последующей обработки изображения, т.е. до вывода данных изображения на устройство 28 отображения.
[00582] Блок-схема, демонстрирующая вариант осуществления логики 120 окончательной обработки ISP, изображена на фиг.134. Как показано, логика 120 окончательной обработки ISP может включать в себя логику 2200 обнаружения признаков, логику 2202 локального тонального отображения (LTM), логику 2204 регулировки яркости, контрастности и цвета, логику 2206 масштабирования и блок 2208 окончательной статистики. Логика 2200 обнаружения признаков, в одном варианте осуществления, может включать в себя логику распознавания лиц и может быть сконфигурирована для идентификации положения(й) лиц/лицевых признаков в кадре изображения, обозначенном здесь ссылочной позицией 2201. В других вариантах осуществления, логика 2200 обнаружения признаков также может быть сконфигурирована для обнаружения положений других типов признаков, например, углов объектов в кадре изображения. Например, эти данные можно использовать для идентификации положения признаков в последовательных кадрах изображения для определения оценки глобального движения между кадрами, которые затем можно использовать для осуществления некоторых операций обработки изображений, например, совмещения изображений. В одном варианте осуществления, идентификация угловых признаков и пр. может быть особенно полезна для алгоритмов, которые объединяют множественные кадры изображения, например, в некоторых алгоритмах формирования изображения с высоким динамическим диапазоном (HDR), а также некоторых алгоритмах панорамного сшивания.
[00583] Для простоты, в нижеследующем описании будем именовать логику 2200 обнаружения признаков логикой распознавания лиц. Однако следует понимать, что логика 2200 не подлежит ограничению только логикой распознавания лиц, и может быть сконфигурирована для обнаружения других типов признаков помимо или совместно с лицевыми признаками. Например, в одном варианте осуществления, логика 2200 может обнаруживать угловые признаки, как рассмотрено выше, и выходной сигнал 2201 логики 2200 обнаружения признаков может включать в себя угловые признаки.
[00584] Логика 2200 распознавания лиц может быть сконфигурирована для приема данных 114 YCC изображения, выдаваемых конвейером 82 ISP, или может принимать изображение пониженного разрешения (представленное сигналом 2207) от логики 2206 масштабирования, и выявлять положение и позиции лиц и/или лицевых признаков в кадре изображения, соответствующем выбранным данным изображения. Как показано на фиг.134, на входе логики 2200 распознавания лиц может находиться схема 2196 выбора, которая принимает данные 114 YCC изображения от конвейера 82 ISP и изображение 2207 пониженного разрешения от логики 2206 масштабирования. Сигнал управления, который может выдавать управляющая логика 84 ISP (например, процессор, выполняющий программно-аппаратное обеспечение), может определять, какой входной сигнал поступает на логику 2200 распознавания лиц.
[00585] Выявленное положение лиц/лицевых признаков, представленное здесь сигналом 2201, может передаваться в качестве данных обратной связи на один или более вышерасположенных блоков обработки, а также на один или более нижерасположенных блоков. В порядке примера, данные 2201 может представлять положения, в которых лица или лицевые признаки появляются в данном кадре изображения. В некоторых вариантах осуществления, данные 2201 могут включать в себя изображение преобразования к пониженному разрешению, которое может обеспечивать дополнительную информацию для распознавания лиц. Кроме того, логика 2200 распознавания лиц, в некоторых вариантах осуществления, может использовать алгоритм обнаружения лиц, например, алгоритм обнаружения лиц/объектов Виолы/Джонса, или может использовать любой другой алгоритм, преобразование или метод обнаружения/поиска совпадения шаблонов, пригодный для обнаружения лицевых признаков в изображении.
[00586] В проиллюстрированном варианте осуществления, данные 2201 распознавания лиц могут возвращаться на управляющую логику 84, которая может представлять процессор, выполняющий программно-аппаратное обеспечение для управления схемой 32 обработки изображений. Управляющая логика 84, в одном варианте осуществления, может выдавать данные 2201 на контур управления предварительной статистикой (например, включающую в себя блоки (142 и 144) предварительной статистической обработки логики 80 предварительной обработки ISP, показанной на фиг.10), благодаря чему, блоки 142 или 144 статистической обработки могут использовать данные 2201 обратной связи для позиционирования надлежащего(их) окна(он) и/или выбора конкретных мозаичных элементов для обработки автоматического баланса белого, автоматической установки экспозиции и автофокусировки. Очевидно, что повышение точности передачи цветов и/или тонов для областей изображения, которые содержат лицевые признаки, может приводить к изображению, которое будет более эстетически привлекательно для наблюдателя. Как будет дополнительно описано ниже, данные 2201 также могут поступать на логику 2202 LTM, блок 2208 окончательной статистики, а также на блок 118 кодера/декодера.
[00587] Логика 2202 LTM также может принимать данные 114 YCC изображения от конвейера 82 ISP. Как рассмотрено выше, логика 2202 LTM может быть сконфигурирована для применения тонального отображения к данным 114 изображения. Очевидно, что методы тонального отображения можно использовать в приложениях обработки изображений для отображения одного набора пиксельных значений в другой. В случаях, когда входное и выходное изображения имеют одинаковую битовую точность, тональное отображение может не требоваться, хотя некоторые варианты осуществления может применять тональное отображение без сжатия для улучшения характеристик контрастности в выходном изображении (например, чтобы яркие области выглядели темнее и темные области выглядели ярче). Однако когда входное и выходное изображения имеют разные битовые точности, тональное отображение можно применять для отображения значений входного изображения в соответствующие значения выходного диапазона входного изображения. Например, сцены могут иметь динамический диапазон 25,000:1 или более, в то время как стандарты сжатия могут допускать значительно меньший диапазон (например, 256:1) в целях отображения, а иногда еще меньший диапазон (например, 100:1) для печати.
[00588] Таким образом, исключительно в порядке примера, тональное отображение может быть полезно в ситуации, например, когда данные изображения, выраженные с точностью 10 битов или более, подлежат выводу в формате более низкой точности, например, как 8-битовое изображение JPEG. Дополнительно, тональное отображение может быть особенно полезно в случае применения к изображениям с высоким динамическим диапазоном (HDR). При цифровой обработке изображений, изображения HDR могут генерироваться посредством получения множественных изображений сцены с разными уровнями экспозиции и объединения или соединения изображений для генерации изображения, имеющего более высокий динамический диапазон, чем можно добиться с использованием единичной экспозиции. Кроме того, в некоторых системах формирования изображения, датчик изображения (например, датчик 90a, 90b) может быть сконфигурирован для получения изображений HDR без необходимости объединять множественные изображения для генерации составного изображения HDR.
[00589] Логика 2202 LTM проиллюстрированного варианта осуществления может использовать операторы локального тонального отображения (например, пространственно изменяющиеся), которые можно определить на основании локальных признаков в кадре изображения. Например, операторы локального тонального отображения могут зависеть от области, и могут локально изменяться на основании содержания в конкретной области кадра изображения. Исключительно в порядке примера, операторы локального тонального отображения могут базироваться на сжатии HDR в градиентной области, фотографическом воспроизведении тонов, или обработке изображений Retinex®.
[00590] Очевидно, что локальное методы тонального отображения, в случае применения к изображениям, могут, в общем случае, формировать выходные изображения, имеющие повышенные характеристики контрастности и выглядящие более эстетически привлекательное для наблюдателя по сравнению с изображениями, обработанными с использованием глобального тонального отображения. Фиг.135 и 136 иллюстрируют некоторые недостатки, связанные с глобальным тональным отображением. Например, на фиг.135, график 2400 представляет тональное отображение входного изображения, имеющего входной диапазон 2401, в выходной диапазон 2403. Диапазон тона во входном изображении представлен кривой 2402, где значения 2404 представляют яркие области изображения, и значения 2406 представляют темные области изображения.
[00591] В порядке примера, в одном варианте осуществления, диапазон 2401 входного изображения может иметь 12-битовую точность (0-4095) и может отображаться в выходной диапазон 2403, имеющий 8-битовую точность (0-255, например, изображение JPEG). На Фиг.135 показан процесс линейного тонального отображения, в котором кривая 2402 линейно отображается в кривую 2410. Как показано, результат процесса тонального отображения, показанного на фиг.135, дает диапазон 2404, соответствующий ярким областям входного изображения, при сжатии до меньшего диапазона 2412, и также дает диапазон 2406, соответствующий темным областям входного изображения, при сжатии до меньшего диапазона 2414. Уменьшение диапазона тонов для темных областей (например, теней) и ярких областей может негативно сказываться на свойствах контрастности, и может выглядеть эстетически непривлекательно для наблюдателя.
[00592] Согласно фиг.136, один способ решения проблем, связанных со сжатием “яркого” диапазона 2404 (сжатого до диапазона 2412) и “темного” диапазона 2406 (сжатого до диапазона 2414), как показано на фиг.176A, состоит в использовании метода нелинейного тонального отображения. Например, на фиг.136, тональная кривая 2402, представляющая входное изображение, отображается с использованием нелинейной “S”-образной кривой (или S-кривой) 2422. В результате нелинейного отображения, яркий участок входного диапазона 2404 отображается в яркий участок выходного диапазона 2424, и, аналогично, темный участок входного диапазона 2406 отображается в темный участок выходного диапазона 2426. Как показано, яркий и темный диапазоны 2424 и 2426 выходного изображения на фиг.136, больше, чем яркий и темный диапазоны 2412 и 2414 выходного изображения на фиг.135, и, таким образом, сохраняют больше яркого и темного содержания входного изображения. Однако вследствие нелинейного (например, S-кривой) аспекта метода отображения, показанного на фиг.136, среднедиапазонные значения 2428 выходного изображения могут выглядеть более плоскими, что также может быть эстетически непривлекательно для наблюдателя.
[00593] Соответственно, варианты осуществления настоящего раскрытия могут реализовать локальное методы тонального отображения с использованием операторов локального тонального отображения для обработки дискретных участков текущего кадра изображения, которые могут делиться на области на основании локальных признаков в изображении, например, характеристик яркости. Например, как показано на фиг.137, участок 2430 кадра изображения, принятый логикой 120 окончательной обработки ISP, может включать в себя яркую область 2432 и темную область 2434. В порядке примера, яркая область 2432 может представлять светлую область изображения, например, небо или горизонт, тогда как темная область может представлять сравнительно более темную область изображения, например, передний план или ландшафт. Локальное тональное отображение можно применять отдельно для каждой из областей 2432 и 2434 для формирования выходного изображения, которое в большей степени сохраняет динамический диапазон входного изображения по сравнению с рассмотренными выше методами глобального тонального отображения, таким образом, повышая локальную контрастность и обеспечивая выходное изображение, более эстетически привлекательное для наблюдателя.
[00594] Пример того, как локальное тональное отображение можно реализовать в настоящем варианте осуществления, показан в порядке примера на фиг.138 и 139. В частности, фиг.138 изображает традиционный метод локального тонального отображения, который в ряде случаев может обеспечивать ограниченный выходной диапазон, и фиг.139 изображает адаптивный процесс локального тонального отображения, который можно реализовать посредством логики 2202 LTM, которая может использовать полный выходной диапазон, даже если часть входного диапазона не используется кадром изображения.
[00595] Согласно фиг.138, график 2440 представляет применение локального тонального отображения к входному изображению более высокой битовой точности для формирования выходного изображения более низкой битовой точности. Например, в иллюстрируемом примере, входные данные изображения более высокой битовой точности могут представлять собой 12-битовые данные изображения (с 4096 входными значениями (например, значениями 0-4095)), представленные диапазоном 2442, которые подвергаются тональному отображению для генерации 8-битового выходного сигнала (с 256 выходными значениями (например, 0-255)), представленного здесь диапазоном 2444. Следует понимать, что битовые глубины приведены исключительно для примера, и их не следует рассматривать в плане какого-либо ограничения. Например, в других вариантах осуществления, входное изображение может быть 8-битовым, 10-битовым, 14-битовым или 16-битовым и т.д., и выходное изображение может иметь битовую глубину, большую или меньшую 8-битовой точности.
[00596] В данном случае можно предположить, что область изображения, на которой применяется локальное тональное отображение, использует только часть полного динамического диапазона входного сигнала, например, диапазона 2448, представленного значениями 0-1023. Например, эти входные значения могут соответствовать значениям темной области 2434, показанной на фиг.137. На Фиг.138 показано линейное отображение 4096 (12-битовых) входных значений в 256 (8-битовые) выходные значения. Таким образом, в то время как значения в пределах 0-4095 отображаются в значения 0-255 выходного динамического диапазона 2444, неиспользуемый участок 2450 (значения 1024-4095) полного входного диапазона 2442 отображается в участок 2454 (значения 64-255) выходного диапазона 2444, таким образом, оставляя только выходные значения 0-63 (участок 2452 выходного диапазона 2444) доступными для представления используемого участка 2448 (значения 0-1023) входного диапазона. Другими словами, этот линейный метод локального тонального отображения не учитывает, отображаются ли неиспользуемые значения или диапазоны значений. В результате, участок (например, 2454) выходных значений (например, 2444) выделяется для представления входных значений, которые фактически не присутствуют в области (например, 2434) кадра изображения, на которой применяется данная операция локального тонального отображения (например, график 2440), что сокращает количество доступных выходных значений (например, 2452), которые можно использовать для выражения входных значений (например, диапазона 2448), присутствующих в текущей обрабатываемой области.
[00597] Исходя из вышеизложенного, фиг.139 иллюстрирует метод локального тонального отображения, который можно реализовать в соответствии с вариантами осуществления настоящего раскрытия. В данном случае, до осуществления отображения входного диапазона 2442 (например, 12-битового) в выходной диапазон 2444 (например, 8-битовый), логика 2202 LTM может быть сконфигурирована сначала определять используемый диапазон входного диапазона 2442. Например, предполагая, что область является, в общем случае, темной областью, входные значения, соответствующие цвету в этой области, могут использовать только поддиапазон, например 2448 (например, значения 0-1023) полного диапазона 2442. Таким образом, поддиапазон 2448 представляет фактический динамический диапазон, присутствующий в конкретной обрабатываемой области кадра изображения. Таким образом, поскольку значения 1024-4095 (неиспользуемый поддиапазон 2450) не используются в этой области, используемый диапазон 2448 можно сначала отобразить и расширить для использования полного диапазона 2442, как показано процессом 2472 расширения. Таким образом, поскольку значения 1024-4095 не используются в текущей обрабатываемой области изображения, их можно использовать для выражения используемого участка (например, 0-1023). В результате, используемый участок 2448 входного диапазона можно выразить с использованием дополнительных значений, в данном случае, приблизительно в три раза больше дополнительных входных значений.
[00598] Затем, как демонстрирует процесс 2474, расширенный используемый входной диапазон (расширенный до значений 0-4095) можно отображать в выходные значения 0-255 (выходной диапазон 2444). Таким образом, как показано на фиг.139, в результате предварительного расширения используемого диапазона 2448 входных значений для использования полного входного диапазона (0-4095), используемый диапазон 2448 входных значений можно выразить с использованием полного выходного диапазона 2444 (значений 0-255), а не только участка выходного диапазона, как показано на фиг.138.
[00599] Прежде чем продолжить, следует отметить, что, хотя логика 2202 LTM именуется блоком локального тонального отображения, она, в ряде случаев, также может быть сконфигурирована для реализации глобального тонального отображение. Например, когда кадр изображения включает в себя сцену изображения с, в общем случае, однородными характеристиками (например, сцену неба), область, на которой применяется тональное отображение, может включать в себя весь кадр. Таким образом, один и тот же оператор тонального отображения можно применять ко всем пикселям кадра. Возвращаясь к фиг.134, логика 2202 LTM также может принимать данные 2201 от логики 2200 распознавания лиц и, в ряде случаев, может использовать эти данные для идентификации одной или более локальных областей в текущем кадре изображения, к которым применяется тональное отображение. Таким образом, конечным результатом применения одного или более из вышеописанных методов локального тонального отображения может быть изображение, более эстетически привлекательное для наблюдателя.
[00600] Выходной сигнал логики 2202 LTM может поступать на логику 2204 регулировки яркости, контрастности и цвета (BCC). В представленном варианте осуществления, логику 2204 BCC можно реализовать, в общем случае, так же, как логику 1184 BCC логики 904 обработки YCbCr конвейера ISP, как показано на фиг.132, и она, в общем случае, может обладать аналогичными функциональными возможностями для обеспечения регулировки яркости, контрастности, тона и/или насыщенности. Таким образом, во избежание избыточности, логика 2204 BCC настоящего варианта осуществления повторно здесь не описана, но, очевидно, идентична ранее описанной логике 1184 BCC на фиг.132.
[00601] Затем, логика 2206 масштабирования может принимать выходной сигнал логики 2204 BCC и может быть сконфигурирована для масштабирования данных изображения, представляющих текущий кадр изображения. Например, когда фактический размер или разрешение кадра изображения (например, в пикселях) отличается от ожидаемого или желаемого выходного размера, логика 2206 масштабирования может соответственно масштабировать цифровое изображение для получения выходного изображения желаемого размера или разрешения. Как показано, выходной сигнал 126 логики 2206 масштабирования может направляться на устройство 28 отображения для просмотра пользователем или в память 108. Дополнительно, выходной сигнал 126 также может поступать на машину 118 сжатия/снятия сжатия для кодирования/декодирования данных изображения. Кодированные данные изображения могут храниться в сжатом формате с последующим снятием сжатия до отображения на устройстве 28 отображения.
[00602] Кроме того, в некоторых вариантах осуществления, логика 2206 масштабирования может масштабировать данные изображения с использованием множественных разрешений. В порядке примера, когда желаемое разрешение выходного изображения составляет 720p (1280×720 пикселей), логика масштабирования может соответственно масштабировать кадр изображения для обеспечения выходного изображения 720p и также может обеспечивать изображение более низкого разрешения, которое может функционировать как изображение предварительного просмотра или миниатюры. Например, приложение, выполняющееся на устройстве, например, приложение “Photos”, доступное на моделях iPhone®, или приложения iPhoto® и iMovie®, доступные на некоторых моделях iPhone®, MacBook®, и компьютерах iMac®, которые все доступны от Apple Inc., могут позволять пользователям просматривать список версий для предварительного просмотра видеозаписей или неподвижных изображений, хранящихся на электронном устройстве 10. После выбора сохраненного изображения или видео, электронное устройство может отображать и/или воспроизводить выбранное изображение или видео с полным разрешением.
[00603] В проиллюстрированном варианте осуществления, логика 2206 масштабирования также может передавать информацию 2203 на блок 2208 окончательной статистики, который может использовать логику 2206 масштабирования для окончательной статистической обработки. Например, в одном варианте осуществления, логика 2208 окончательной статистики может обрабатывать информацию 2203 масштабированного изображения для определения одного или более параметров для модуляции параметров квантования, связанных с кодером 118 (например, параметров квантования на макроблок), который, в одном варианте осуществления, может представлять собой кодер/декодер H.264/JPEG. Например, в одном варианте осуществления, логика 2208 окончательной статистики может анализировать изображение по макроблокам для определения параметра или показателя частотного состава для каждого макроблока. Например, в некоторых вариантах осуществления, логика 2206 окончательной статистики может определять частотный показатель для каждого макроблока, используя, например, методы вейвлетного сжатия, быстрого преобразования Фурье или дискретного косинусного преобразования (DCT). Используя частотные показатели, кодер 118 может модулировать параметры квантования для достижения, например, в общем случае, одинакового качества изображения по макроблокам, составляющим кадр изображения. Например, если в конкретном макроблоке наблюдается высокий разброс по частотному составу, сжатие можно применять к этому макроблоку более агрессивно. Как показано на фиг.134, логика 2206 масштабирования также может передавать изображение пониженного разрешения, обозначенное здесь ссылочной позицией 2207, на логику 2200 распознавания лиц посредством ввода в схему 2196 выбора, которая может представлять собой мультиплексор или какой-либо другой пригодный тип логики выбора. Таким образом, выходной сигнал 2198 схемы 2196 выбора может быть либо входным сигналом 114 YCC от конвейера 82 ISP, либо YCC-изображение 2207 уменьшенного масштаба из логики 2206 масштабирования.
[00604] В некоторых вариантах осуществления, окончательные статистические данные и/или кодер 118 может быть сконфигурирован для прогнозирования и обнаружения изменений сцены. Например, логика 2208 окончательной статистики может быть сконфигурирована для получения статистики движения. Кодер 118 может пытаться прогнозировать изменения сцены, сравнивая статистику движения, предоставленную логикой 2208 окончательной статистики, которая может включать в себя некоторые метрики (например, яркость), текущего кадра с предыдущим кадром. Когда различие в метрике превышает конкретный порог, прогнозируется изменение сцены, логика 2208 окончательной статистики может сигнализировать об изменении сцены. В некоторых вариантах осуществления, можно использовать взвешенные прогнозы, поскольку фиксированный порог не всегда является идеальным вследствие разнообразия изображений, которые могут захватываться и обрабатываться устройством 10. Дополнительно, множественные пороговые значения также можно использовать в зависимости от некоторых характеристик обрабатываемых данных изображения.
[00605] Как рассмотрено выше, данные 2201 обнаружения лиц также могут поступать на логику 2208 окончательной статистики и кодер 118, как показано на фиг.134. При этом окончательные статистические данные и/или кодер 118 могут использовать данные 2201 обнаружения лиц совместно с частотной информацией макроблоков в ходе окончательной обработки. Например, квантование может снижаться для макроблоков, которые соответствуют положению лиц в кадре изображения, которое определяется с использованием данных 2201 обнаружения лиц, что позволяет повысить визуальную привлекательность и общее качество кодированных лиц и лицевых признаков, присутствующих в изображении, отображаемом с использованием устройства 28 отображения.
[00606] На фиг.140 проиллюстрирована блок-схема, демонстрирующая более детализированный вид логики 2202 LTM в соответствии с одним вариантом осуществления. Как показано, тональное отображение применяется после предварительного преобразования данных 114 изображения YC1C2, полученных от конвейера 82 ISP, в гамма-скорректированное линейное цветовое пространство RGB. Например, как показано на фиг.140, логика 2208 может сначала преобразовать данные YC1C2 (например, YCbCr) в нелинейное цветовое пространство sRGB. В настоящем варианте осуществления, логика 2202 LTM может быть сконфигурирована для приема данных YCC изображения, имеющих разные характеристики субдискретизации. Например, как демонстрируют входы 114 в логику 2205 выбора (например, мультиплексор), логика 2202 LTM может быть сконфигурирована для приема полных данных YCC 4:4:4, данных YCC, субдискретизированных по цветности, 4:2:2), или данных YCC, субдискретизированных по цветности, 4:2:0. Для форматов субдискретизированных данных YCC изображения, логику 2209 повышающего преобразования можно применять для преобразования прореженных данных YCC изображения в формат YCC 4:4:4 до преобразования посредством логики 2208 в цветовое пространство sRGB.
[00607] Затем преобразованные данные изображения sRGB, обозначенные здесь ссылочной позицией 2210, могут преобразовываться в цветовое пространство RGBlinear, которое является гамма-скорректированным линейным пространством, посредством логики 2212. После этого, преобразованные данные 2214 изображения RGBlinear поступают на логику LTM 2216, которая может быть сконфигурирована для идентификации областей (например, 2432 и 2434 на фиг.137) в кадре изображения, которые совместно используют аналогичные яркости, и для применения локального тонального отображения к этим областям. Как показано в настоящем варианте осуществления, логика LTM 2216 также может принимать параметры 2201 от логики 2200 распознавания лиц (фиг.134), которые могут указывать положение и позиции в текущем кадре изображения, где присутствуют лица и/или лицевые признаки.
[00608] После применения локального тонального отображения к данным 2214 RGBlinear, обработанные данные 2220 изображения преобразуются обратно в цветовое пространство YC1C2, сначала с использованием логики 2222 для преобразования обработанных данных 2220 изображения RGBlinear обратно в цветовое пространство sRGB, и затем с использованием логики 2226 для преобразования данных 2224 изображения sRGB обратно в цветовое пространство YC1C2. Таким образом, преобразованные данные 2228 YC1C2 (с примененным тональным отображением) могут выводиться из логики 2202 LTM и поступать на логику 2204 BCC, что рассмотрено выше на фиг.134. Очевидно, что преобразование данных 114 изображения в различные цветовые пространства, используемые в логическом блоке 2202 LTM логики окончательной обработки ISP, можно реализовать с использованием методов, аналогичных преобразованию данных RGB-изображения, подвергнутых демозаике, в цветовое пространство YC1C2 в логике 902 обработки RGB конвейера 82 ISP, что рассмотрено выше на фиг.125. Кроме того, в вариантах осуществления, где YCC подвергается повышающему преобразованию (например, с использованием логики 2209), данные YC1C2 могут подвергаться понижающему преобразованию (субдискретизации) посредством логики 2226. Дополнительно, в других вариантах осуществления, эта субдискретизация/понижающее преобразование также может осуществляться логикой 2206 масштабирования, а не логикой 2226.
[00609] Хотя настоящий вариант осуществления демонстрирует процесс преобразования, который преобразует из цветового пространства YCC в цветовое пространство sRGB и затем в цветовое пространство sRGBlinear, другие варианты осуществления могут использовать другие преобразования цветового пространства или могут применять приближенное преобразование с использованием степенной функции. Таким образом, в некоторых вариантах осуществления, преобразования в приблизительно линейное цветовое пространство может быть достаточно для целей локального тонального отображения. Таким образом, используя функцию приближенного преобразования, логику преобразования таких вариантов осуществления можно, по меньшей мере, частично упростить (например, за счет исключения необходимости в поисковых таблицах преобразования цветового пространства). В дополнительном варианте осуществления, локальное тональное отображение также можно осуществлять в цветовом пространстве, которое лучше воспринимается человеческим глазом, например, в цветовом пространстве Lab.
[00610] На фиг.141 и 142 показаны блок-схемы операций, которые изображают способы обработки данных изображения с использованием логики 120 окончательной обработки ISP, в соответствии с раскрытым вариантом осуществления. На фиг.141 изображен способ 2230, в целом, иллюстрирующий обработку данных изображения логикой 120 окончательной обработки ISP. Начиная с этапа 2232, способ 2230 принимает данные YCC изображения от конвейера 82 ISP. Например, как рассмотрено выше, принятые данные YCC изображения могут выражаться в цветовом пространстве YCbCr яркости и цветности. Затем способ 2232 может совершать ветвление к каждому из этапов 2234 и 2238. На этапе 2234, принятые данные YCC изображения могут обрабатываться для обнаружения позиций/положений лиц и/или лицевых признаков в текущем кадре изображения. Например, со ссылкой на фиг.134, этот этап может осуществляться с использованием логики 2200 распознавания лиц, которая может быть сконфигурирована для реализации алгоритма обнаружения лиц, например, Виолы-Джонса. После этого, на этапе 2236, данные распознавания лиц (например, данные 2201) могут передаваться управляющей логике 84 ISP (в качестве обратной связи с блоками 142 или 144 предварительной статистической обработки ISP), а также на логический блок 2202 LTM, логику 2208 окончательной статистики и логику 118 кодера/декодера, как показано на фиг.134.
[00611] На этапе 2238, который может осуществляться, по меньшей мере, частично одновременно с этапом 2234, данные YCC изображения, принятые от конвейера 82 ISP, обрабатываются для применения тонального отображения. После этого, способ 2230 переходит к этапу 2240, на котором данные YCC изображения (например, 2228) подвергаются дополнительной обработке для регулировки яркости, контрастности и цвета (например, с использованием логики 2204 BCC). Затем, на этапе 2242, масштабирование применяется к данным изображения, полученным на этапе 2240, для масштабирования данных изображения до одного или более желаемых размеров или разрешений. Дополнительно, как упомянуто выше, в некоторых вариантах осуществления, также можно применять преобразование или субдискретизацию цветового пространства (например, в вариантах осуществления, где данные YCC подвергаются повышающей дискретизации для локального тонального отображения) для формирования выходного изображения, имеющего нужную дискретизацию. Наконец, на этапе 2244, масштабированные данные YCC изображения могут отображаться для просмотра (например, с использованием устройства 28 отображения) или могут сохраняться в памяти 108 для просмотра в будущем.
[00612] Фиг.142 более подробно иллюстрирует этап 2238 тонального отображения, показанный на фиг.141. Например, этап 2238 может начинаться с подэтапа 2248, где данные YCC изображения, принятые на этапе 2232, сначала преобразуются в цветовое пространство sRGB. Как рассмотрено выше и показано на фиг.140, некоторые варианты осуществления могут обеспечивать повышающее преобразование субдискретизированных данных YCC изображения до преобразования в пространство sRGB. После этого, данные изображения sRGB преобразуются в гамма-скорректированное линейное цветовое пространство, RGBlinear, на подэтапе 2250. Затем, на подэтапе 2252, тональное отображение применяется к данным RGBlinear посредством логики 2216 тонального отображения логического блока 2202 LTM логики окончательной обработки ISP. Данные изображения, подвергнутые тональному отображению на подэтапе 2252, затем могут преобразовываться из цветового пространства RGBlinear обратно в цветовое пространство sRGB, как показано на подэтапе 2254. После этого, на подэтапе 2256, данные изображения sRGB могут преобразовываться обратно в цветовое пространство YCC, и способ 2230 может переходить от этапа 2238 к этапу 2240, что рассмотрено на фиг.141. Как упомянуто выше, процесс 2238, показанный на фиг.142, является лишь одним примером процесса для применения преобразования цветового пространства, позволяющего осуществлять локальное тональное отображение. В других вариантах осуществления, вместо проиллюстрированных этапов преобразования также можно применять приближенные линейные преобразования.
[00613] Очевидно, что различные методы обработки изображений, описанные выше и относящиеся, в частности, к обнаружению и коррекции дефектных пикселей, коррекции затенения объектива, демозаике и повышению резкости изображения, обеспечены здесь исключительно в порядке примера. Соответственно, следует понимать, что настоящее раскрытие не следует рассматривать как ограничивающееся только приведенными выше примерами. Действительно, логика, представленная здесь для примера, может подвергаться ряду изменений и/или приобретать дополнительные признаки в других вариантах осуществления. Кроме того, очевидно, что рассмотренные выше методы можно реализовать любым пригодным образом. Например, компоненты схемы 32 обработки изображений и, в частности, блок 80 логики предварительной обработки ISP и блок 82 конвейерной обработки ISP можно реализовать с использованием оборудования (например, надлежащим образом сконфигурированной схемы), программного обеспечения (например, посредством компьютерной программы, включающей в себя исполнимый код, хранящийся на одном или более вещественных машиночитаемых носителях), или с использованием комбинации аппаратных и программных элементов.
[00614] Вышеописанные конкретные варианты осуществления были представлены в порядке примера, и следует понимать, что эти варианты осуществления допускают различные модификации и альтернативные формы. Также следует понимать, что формула изобретения не подлежит ограничению конкретными раскрытыми формами, но призвана охватывать все модификации, эквиваленты, и альтернативы, отвечающие сущности и объему этого раскрытия.
название | год | авторы | номер документа |
---|---|---|---|
АВТОМАТИЧЕСКАЯ ОБРАБОТКА БАЛАНСА БЕЛОГО С ГИБКИМ ВЫБОРОМ ЦВЕТОВОГО ПРОСТРАНСТВА | 2011 |
|
RU2537038C2 |
УПРАВЛЕНИЕ АВТОФОКУСИРОВКОЙ С ИСПОЛЬЗОВАНИЕМ СТАТИСТИЧЕСКИХ ДАННЫХ ИЗОБРАЖЕНИЯ НА ОСНОВАНИИ ПОКАЗАТЕЛЕЙ ГРУБОЙ И ТОЧНОЙ АВТОФОКУСИРОВКИ | 2011 |
|
RU2543974C2 |
СИСТЕМА И СПОСОБ ДЛЯ ОБРАБОТКИ ДАННЫХ ИЗОБРАЖЕНИЯ С ИСПОЛЬЗОВАНИЕМ ПРОЦЕССОРА СИГНАЛА ИЗОБРАЖЕНИЯ, ИМЕЮЩЕГО ЛОГИКУ ОКОНЧАТЕЛЬНОЙ ОБРАБОТКИ | 2011 |
|
RU2542928C2 |
СПОСОБ И СИСТЕМА ОБРАБОТКИ ИЗОБРАЖЕНИЙ СО СДВОЕННЫМ ДАТЧИКОМ ИЗОБРАЖЕНИЙ | 2011 |
|
RU2530009C1 |
ОБРАБОТКА ДАННЫХ ДЛЯ СВЕРХРАЗРЕШЕНИЯ | 2017 |
|
RU2652722C1 |
ДЕКОМПОЗИЦИЯ УРОВНЕЙ В ИЕРАРХИЧЕСКОМ КОДИРОВАНИИ VDR | 2012 |
|
RU2644065C9 |
ДЕКОМПОЗИЦИЯ УРОВНЕЙ В ИЕРАРХИЧЕСКОМ КОДИРОВАНИИ VDR | 2012 |
|
RU2586572C2 |
СПОСОБ ЗАХВАТА ИЗОБРАЖЕНИЯ И ОКОНЕЧНОЕ УСТРОЙСТВО | 2019 |
|
RU2758595C1 |
ЦВЕТОВЫЕ ФИЛЬТРЫ ДЛЯ ДАТЧИКОВ С РАЗМЕРАМИ МЕНЬШЕ ДИФРАКЦИОННОГО ПРЕДЕЛА | 2010 |
|
RU2501118C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ИЛИ ДЕКОДИРОВАНИЯ БЛОКОВ ПИКСЕЛА | 2014 |
|
RU2645358C2 |
Изобретение относится к устройствам формирования цифрового изображения. Техническим результатом является повышение качества формируемого изображения. Результат достигается тем, что система 32 обработки сигнала изображения включает в себя контроллер 550 вспышки, который сконфигурирован для активации устройства вспышки до начала целевого кадра изображения посредством использования сигнала тактирования датчика. В одном варианте осуществления контроллер 550 вспышки принимает задержанный сигнал тактирования датчика и определяет время начала активации вспышки посредством использования задержанного сигнала тактирования датчика для идентификации времени, соответствующего концу предыдущего кадра, увеличения этого времени на время вертикального гашения и затем вычитания первого смещения для компенсации задержки между сигналом тактирования датчика и задержанным сигналом тактирования датчика. Затем контроллер 550 вспышки вычитает второе смещение для определения времени активации вспышки, таким образом гарантируя, что вспышка активируется до приема первого пикселя целевого кадра. 3 н. и 17 з.п. ф-лы, 142 ил., 5 табл.
1. Способ, содержащий этапы, на которых:
принимают сигнал тактирования датчика, связанный с получением кадров изображения с использованием цифрового датчика изображения, причем сигнал тактирования датчика указывает интервалы времени, с которыми получают кадры изображения,
подают первый задержанный сигнал тактирования на интерфейс между цифровым датчиком изображения и системой обработки сигнала изображения, причем первый задержанный сигнал тактирования задержан относительно сигнала тактирования датчика на первую продолжительность времени,
подают второй задержанный сигнал тактирования на логику управления вспышкой системы обработки сигнала изображения, причем второй задержанный сигнал тактирования задержан относительно первого задержанного сигнала тактирования на вторую продолжительность времени и задержан относительно сигнала тактирования датчика на третью продолжительность времени,
определяют, применять ли вспышечное освещение во время получения целевого кадра изображения из кадров изображения, полученных цифровым датчиком изображения,
если вспышечное освещение нужно обеспечить для целевого кадра изображения, то используют второй задержанный сигнал тактирования для идентификации первого момента времени, соответствующего концу предыдущего кадра изображения, непосредственно предшествующего целевому кадру изображения, прибавляют четвертую продолжительность времени к первому моменту времени для получения второго момента времени, вычитают первое смещение из второго момента времени для получения третьего момента времени, вычитают второе смещение из третьего момента времени для получения четвертого момента времени и активируют модуль вспышки в четвертый момент времени.
2. Способ по п. 1, в котором четвертая продолжительность времени равна времени, соответствующему интервалу вертикального гашения между концом предыдущего кадра изображения и целевым кадром изображения.
3. Способ по п. 1, в котором первое смещение равно второй продолжительности времени.
4. Способ по п. 1, в котором второе смещение соответствует пятой продолжительности времени, достаточной для того, чтобы позволить модулю вспышки, при активации его в четвертый момент времени, достичь полной интенсивности до начала целевого кадра, указанного сигналом тактирования датчика.
5. Способ по п. 1, содержащий этап, на котором деактивируют модуль вспышки после конца целевого кадра в момент времени на основании, по меньшей мере частично, пятого момента времени, причем пятый момент времени идентифицируется как соответствующий концу целевого кадра, как указано вторым задержанным сигналом тактирования.
6. Способ по п. 5, в котором этап деактивации модуля вспышки после конца целевого кадра содержит этап, на котором деактивируют модуль вспышки в пятый момент времени.
7. Способ по п. 5, в котором этап деактивации модуля вспышки после конца целевого кадра содержит этапы, на которых:
прибавляют третье смещение к пятому моменту времени для получения шестого момента времени, причем шестой момент времени наступает до начала следующего кадра изображения, непосредственно следующего за целевым кадром изображения, как указано сигналом тактирования датчика, и
деактивируют модуль вспышки в шестой момент времени.
8. Способ по п. 5, в котором этап деактивации модуля вспышки после конца целевого кадра содержит этапы, на которых:
вычитают четвертое смещение из пятого момента времени для получения седьмого момента времени, причем четвертое смещение соответствует шестой продолжительности времени, которая меньше второй продолжительности времени, и
деактивируют модуль вспышки в седьмой момент времени.
9. Система обработки сигнала изображения, содержащая:
интерфейс датчика изображения, сконфигурированный для приема данных изображения, полученных от датчика изображения в виде множества кадров изображения на основании сигнала тактирования датчика, выдаваемого датчиком изображения, и для обеспечения принятых данных изображения,
логику обработки сигнала изображения, сконфигурированную для приема данных изображения от интерфейса датчика изображения и для обработки данных изображения, полученных датчиком изображения,
стробоскопическое устройство, сконфигурированное для того, чтобы, при активации, освещать сцену изображения, захватываемую датчиком изображения, и
контроллер строба, сконфигурированный для определения, когда активировать строб для освещения выбранного кадра изображения из множества кадров изображения, посредством:
использования первого сигнала тактирования, который задержан на первый интервал относительно сигнала тактирования датчика, для идентификации первого момента времени, соответствующего концу предыдущего кадра изображения, непосредственно предшествующего выбранному кадру изображения,
прибавления интервала вертикального гашения между выбранным кадром изображения и предыдущим кадром изображения к первому моменту времени для определения второго момента времени,
вычитания первого интервала из второго момента времени для определения третьего момента времени,
вычитания второго интервала из третьего момента времени для определения четвертого, и
активации стробоскопического устройства в четвертый момент времени.
10. Система обработки сигнала изображения по п. 9, в которой активация стробоскопического устройства в четвертый момент времени гарантирует, что стробоскопическое устройство активируется до полной светимости до того, как первый пиксель выбранного кадра изображения получен датчиком изображения.
11. Система обработки сигнала изображения по п. 9, в которой стробоскопическое устройство содержит, по меньшей мере, одно из ксеноновой лампы, светоизлучающего диода (СИД) или некоторой их комбинации.
12. Система обработки сигнала изображения по п. 9, в которой логика обработки изображения сконфигурирована для определения, нужно ли активировать стробоскопическое устройство для выбранного кадра изображения, и для подачи сигнала на контроллер строба для указания того, что стробоскопическое устройство нужно активировать для выбранного кадра изображения.
13. Система обработки сигнала изображения по п. 12, в которой определение, нужно ли активировать стробоскопическое устройство для выбранного кадра изображения, содержит:
определение, можно ли достичь целевого уровня экспозиции для выбранного кадра изображения изменяя, по меньшей мере, одно из времени интегрирования, связанного с датчиком изображения, и коэффициентов усиления, обеспечиваемых датчиком изображения, и
подачу сигнала на контроллер строба для указания того, что стробоскопическое устройство нужно активировать для выбранного кадра изображения, если целевой уровень экспозиции не может быть достигнут.
14. Электронное устройство, содержащее:
датчик изображения, сконфигурированный для получения кадров данных изображения, соответствующих сцене изображения, и для обеспечения сигнала тактирования датчика,
интерфейс датчика изображения, сконфигурированный для приема первого задержанного сигнала тактирования и кадров данных изображения, полученных датчиком изображения, причем первый задержанный сигнал задержан относительно сигнала тактирования датчика на первую продолжительность времени,
подсистему обработки изображений, сконфигурированную для приема кадра данных изображения от интерфейса датчика изображения, устройство вспышки и контроллер вспышки, сконфигурированный для приема второго задержанного сигнала тактирования, который задержан относительно первого задержанного сигнала тактирования на вторую продолжительность времени и задержан относительно сигнала тактирования датчика на третью продолжительность времени, и для управления тактированием, при котором устройство вспышки активируется и деактивируется для освещения сцены изображения во время получения целевого кадра изображения датчиком изображения, с использованием второго задержанного сигнала тактирования посредством идентификации первого момента времени, соответствующего концу предыдущего кадра изображения, непосредственно предшествующего целевому кадру изображения, прибавления четвертой продолжительности времени к первому моменту времени для получения второго момента времени, вычитания третьей продолжительности времени из второго момента времени для получения третьего момента времени, вычитания пятой продолжительности времени из третьего момента времени для получения четвертого момента времени, причем устройство вспышки активируется контроллером вспышки в четвертый момент времени.
15. Электронное устройство по п. 14, в котором интерфейс датчика изображения содержит:
первый субинтерфейс, подключенный к датчику изображения, и второй субинтерфейс, подключенный к подсистеме обработки изображений, причем первый субинтерфейс и второй субинтерфейс соединены друг с другом с возможностью обмена данными, первый субинтерфейс принимает первый задержанный сигнал тактирования, и первый задержанный сигнал тактирования подается из первого субинтерфейса на второй субинтерфейс с задержкой, равной второй продолжительности времени, для генерации второго задержанного сигнала тактирования.
16. Электронное устройство по п. 14, в котором контроллер вспышки сконфигурирован для деактивации устройства вспышки в пятый момент времени, который наступает после конца целевого кадра изображения, но до начала следующего кадра изображения, как указано сигналом тактирования датчика.
17. Электронное устройство по п. 14, в котором подсистема обработки изображений содержит блок предварительной обработки изображений, конвейер обработки изображений и блок окончательной обработки изображений.
18. Электронное устройство по п. 14, в котором четвертая продолжительность времени соответствует интервалу гашения между концом предыдущего кадра изображения и началом целевого кадра изображения.
19. Электронное устройство по п. 14, в котором датчик изображения содержит, по меньшей мере, одну из цифровой камеры, встроенной в электронное устройство, внешней цифровой камеры, подключенной к электронному устройству через интерфейс датчика изображения, или некоторой их комбинации.
20. Электронное устройство по п. 14, содержащее, по меньшей мере, одно из настольного компьютера, портативного компьютера, планшетного компьютера, мобильного сотового телефона, портативного медиаплеера или любой их комбинации.
US20040119879, 2009.05.28 | |||
US 2002140845 A1, 2002.10.03 | |||
US 20060044461 A1, 2006.03.02 | |||
US 2004033071 A1, 2004.02.19 | |||
US 2010079644 A1, 2010.04.01 | |||
JPH 08292463 A, 1996.11.05 | |||
Электронная фотовспышка | 1979 |
|
SU847252A1 |
Авторы
Даты
2014-07-20—Публикация
2011-08-31—Подача