СПОСОБ И СИСТЕМА ОБРАБОТКИ ИЗОБРАЖЕНИЙ СО СДВОЕННЫМ ДАТЧИКОМ ИЗОБРАЖЕНИЙ
METHOD AND SYSTEM FOR PROCESSING IMAGES WITH DOUBLED IMAGE SENSOR

УРОВЕНЬ ТЕХНИКИ
Настоящее раскрытие в целом относится к цифровым устройствам формирования изображений, а более конкретно, к системам и способу для обработки данных изображения, полученных с использованием датчика изображения цифрового устройства формирования изображений.
Этот раздел предназначен для знакомства читателя с различными аспектами данной области техники, которые могут иметь отношение к различным аспектам представленных технологий, которые описаны и/или заявлены в формуле изобретения ниже. Это всестороннее рассмотрение предполагается полезным в снабжении читателя информацией уровня техники для содействия лучшему пониманию различных аспектов настоящего раскрытия. Соответственно, должно быть понятно, что эти изложения должны толковаться в этом свете, а не в качестве признания правильным предшествующего уровня техники.
В последние годы цифровые устройства формирования изображений стали более популярными, по меньшей мере частично, благодаря таким устройствам, становящимся все более и более доступными для среднего потребителя. Кроме того, в дополнение к некоторому количеству автономных цифровых камер, доступных на рынке в настоящее время, не является необычным, чтобы цифровые устройства формирования изображений были встроены в качестве части другого электронного устройства, такого как настольный или дорожный компьютер, сотовый телефон или портативный медиаплеер.
Чтобы получать данные изображения, большинство цифровых устройств формирования изображений включают в себя датчик изображений, который предусматривает некоторое количество элементов детектирования света (например, фотодетекторов), выполненных с возможностью преобразовывать свет, детектированный датчиком изображений, в электрический сигнал. Датчик изображений также может включать в себя матрицу цветовых фильтров, которая фильтрует свет, захваченный датчиком изображений, чтобы собирать информацию о цвете. Данные изображения, захваченные датчиком изображений, затем могут обрабатываться конвейером обработки изображений, который может применять некоторое количество различных операций обработки изображений к данным изображения, чтобы генерировать полноцветное изображение, которое может отображаться для просмотра на устройстве отображения, таком как монитор.
Несмотря на то что традиционные технологии обработки изображений, как правило, нацелены на создание видимого изображения, которое как объективно, так и субъективно является привлекательным для зрителя, такие традиционные технологии могут несоразмерно принимать меры в ответ на ошибки и/или искажения в данных изображения, привнесенные устройством формирования изображений и/или датчиком изображений. Например, дефектные пиксели на датчике изображений, которые могут быть обусловлены дефектами изготовления или эксплуатационным отказом, могут претерпевать неудачу в точном считывании уровней освещенности и, если не корректируются, могут проявляться в качестве артефактов, появляющихся в результирующем обработанном изображении. Дополнительно, падение интенсивности освещенности на кромках датчика изображений, которое может быть обусловлено недостатками производства объектива, может оказывать неблагоприятное влияние на измерения характеристик и может давать в результате изображение, в котором неравномерна общая интенсивность света. Конвейер обработки изображений также может выполнять одну или более обработок для увеличения резкости изображения. Традиционные технологии увеличения резкости, однако, могут не в достаточной мере принимать во внимание существующие шумы в сигнале изображения или могут быть неспособными отличать шумы от контуров и текстурированных участков в изображении. В таких случаях традиционные технологии увеличения резкости фактически могут усиливать возникновение шумов в изображении, что в целом нежелательно.
Еще одной операцией обработки изображений, которая может быть применена к данным изображения, захваченным датчиком изображений, является операция устранения мозаичности. Так как матрица цветовых фильтров, как правило, обеспечивает цветовые данные на одной длине волны для каждого пикселя датчика, полный набор цветовых данных обычно интерполируется для каждого цветового канала, для того чтобы воспроизводить полноцветное изображение (например, изображение RGB (цветовой модели красный-зеленый-синий)). Традиционные технологии устранения мозаичности, как правило, интерполируют значения для недостающих цветовых данных в горизонтальном или вертикальном направлении, обычно, в зависимости от нескольких типов неизменных пороговых значений. Однако такие традиционные технологии устранения мозаичности могут не в достаточной мере учитывать расположения и направления контуров внутри изображения, что может приводить к артефактам контуров, таким как ступенчатость контуров, артефактам шахматной доски или радужным артефактам, привносимым в полноцветное изображение, в частности, вдоль диагональных контуров внутри изображения.
Соответственно, должно быть обращено внимание на различные соображения при обработке цифрового изображения, полученного с помощью цифровой камеры или другого устройства формирования изображений, для того чтобы улучшать внешний вид результирующего изображения. В частности, некоторые аспекты раскрытия, приведенного ниже, могут принимать меры в ответ на один или более недостатков, кратко упомянутых выше.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Сущность некоторых вариантов осуществления, раскрытых в материалах настоящей заявки, изложена ниже. Должно быть понятно, что эти аспекты представлены всего лишь для снабжения читателя кратким изложением этих некоторых вариантов осуществления и что эти аспекты не предназначены для ограничения объема этого раскрытия. В действительности, это раскрытие может охватывать многообразие аспектов, которые могут не быть изложены ниже.
Настоящее раскрытие предусматривает различные технологии для обработки данных изображения, полученные с использованием цифрового датчика изображений. В соответствии с аспектами настоящего раскрытия одна такая технология может относиться к обработке данных изображения в системе, которая поддерживает многочисленные датчики изображения. В одном варианте осуществления, система обработки изображений может включать в себя схему управления, выполненную с возможностью определять, является ли устройство работающим в режиме одиночного датчика (с одним активным датчиком) или режиме сдвоенного датчика (с двумя активными датчиками). При работе в режиме одиночного датчика данные могут обеспечиваться непосредственно к блоку предварительной обработки пикселей из интерфейса датчика активного датчика. При работе в режиме сдвоенного датчика кадры изображения с первого и второго датчиков подаются к блоку предварительной обработки пикселей перемежающимся образом. Например, в одном варианте осуществления кадры изображения с первого и второго датчиков записываются в память, а затем считываются в блок предварительной обработки пикселей перемежающимся образом.
Различные усовершенствования признаков, отмеченных выше, могут существовать в отношении различных аспектов настоящего раскрытия. Дополнительные признаки также могут быть включены в эти различные аспекты. Эти усовершенствования и дополнительные признаки могут существовать по отдельности или в любой комбинации. Например, различные признаки, описанные ниже в отношении одного или более проиллюстрированных вариантов осуществления, могут быть включены в любые описанные выше аспекты настоящего раскрытия в одиночку или в любой комбинации. Вновь, краткое изложение, представленное выше, предназначено только для ознакомления читателя с некоторыми аспектами и контекстами вариантов осуществления настоящего раскрытия без ограничения в отношении заявленного предмета изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Дело патента или заявки содержит в себе по меньшей мере один чертеж, выполненный в цвете. Копии этой публикации патента или патентной заявки с цветными чертежами будут предоставляться Патентным ведомством по запросу и оплате обязательной пошлины.
Различные аспекты этого раскрытия могут быть лучше понятны по прочтению последующего подробного описания и по обращению к чертежам, на которых:
фиг. 1 - упрощенная структурная схема, изображающая компоненты примерного электронного устройства, которое включает в себя устройство формирования изображений и схему обработки изображений, выполненные с возможностью реализовывать одну или более из технологий обработки изображений, изложенных в настоящем раскрытии;
фиг. 2 показывает графическое представление блока пикселей 2x2 матрицы цветовых фильтров Байера, который может быть реализован в устройстве формирования изображений по фиг. 1;
фиг. 3 - вид в перспективе электронного устройства по фиг. 1 в форме дорожного вычислительного устройства в соответствии с аспектами настоящего раскрытия;
фиг. 4 - вид спереди электронного устройства по фиг. 1 в форме настольного вычислительного устройства в соответствии с аспектами настоящего раскрытия;
фиг. 5 - вид спереди электронного устройства по фиг. 1 в форме карманного портативного электронного устройства в соответствии с аспектами настоящего раскрытия;
фиг. 6 - вид сзади электронного устройства, показанного на фиг. 5;
фиг. 7 - структурная схема, иллюстрирующая логику предварительной обработки сигналов изображения (ISP) и логику конвейерной обработки ISP, которые могут быть реализованы в схеме обработки изображений по фиг. 1, в соответствии с аспектами настоящего раскрытия;
фиг. 8 - более подробная структурная схема, показывающая вариант осуществления логики предварительной обработки ISP по фиг. 7, в соответствии с аспектами настоящего раскрытия;
фиг. 9 - блок-схема последовательности операций, изображающая способ для обработки данных изображения в логике предварительной обработки ISP по фиг. 8, в соответствии с вариантом осуществления;
фиг. 10 - структурная схема, иллюстрирующая конфигурацию регистров с двойной буферизацией и регистров управления, которые могут использоваться для обработки данных изображения в логике предварительной обработки ISP, в соответствии с одним вариантом осуществления;
фиг. 11-13 - временные диаграммы, изображающие различные режимы для запуска обработки кадра изображения, в соответствии с вариантами осуществления настоящих технологий;
фиг. 14 - схема, изображающая регистр управления подробнее, в соответствии с одним вариантом осуществления;
фиг. 15 - блок-схема последовательности операций, изображающая способ для использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP по фиг. 8 является работающей в режиме одиночного датчика;
фиг. 16 - блок-схема последовательности операций, изображающая способ для использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP по фиг. 8 является работающей в режиме сдвоенного датчика;
фиг. 17 - блок-схема последовательности операций, изображающая способ для использования блока предварительной обработки пикселей для обработки кадров изображения, когда логика предварительной обработки ISP по фиг. 8 является работающей в режиме сдвоенного датчика;
фиг. 18 - блок-схема последовательности операций, изображающая способ, в котором активны оба датчика изображений, но при этом первый датчик изображений отправляет кадры изображения к блоку предварительной обработки пикселей наряду с тем, что второй датчик изображений отправляет кадры изображения к блоку статистической обработки, так что статистические данные формирования изображений для второго датчика немедленно доступны, когда второй датчик изображений продолжает отправку кадров изображения к блоку предварительной обработки пикселей в более позднее время, в соответствии с одним вариантом осуществления;
фиг. 19 - графическое изображение различных областей формирования изображений, которые могут быть заданы в пределах кадра изображения источника, захваченного датчиком изображений, в соответствии с аспектами настоящего раскрытия;
фиг. 20 - структурная схема, которая обеспечивает более подробный вид одного варианта осуществления блока предварительной обработки пикселей ISP, как показано в логике предварительной обработки ISP по фиг. 8, в соответствии с аспектами настоящего раскрытия;
фиг. 21 - схема последовательности операций, иллюстрирующая, каким образом временная фильтрация может применяться к пиксельным данным изображения, принятым блоком предварительной обработки пикселей ISP на фиг. 20, в соответствии с одним вариантом осуществления;
фиг. 22 иллюстрирует набор опорных пикселей изображения и набор соответствующих текущих пикселей изображения, которые могут использоваться для определения одного или более параметров для обработки временной фильтрацией, показанной на фиг. 21;
фиг. 23 - блок-схема последовательности операций, иллюстрирующая обработку для применения временной фильтрации к текущему пикселю изображения набора данных изображения, в соответствии с одним вариантом осуществления;
фиг. 24 - блок-схема последовательности операций, показывающая метод для вычисления дельта-значения движения для использования с временной фильтрацией текущего пикселя изображения по фиг. 23, в соответствии с одним вариантом осуществления;
фиг. 25 - блок-схема последовательности операций, иллюстрирующая еще одну обработку для применения временной фильтрации к текущему пикселю изображения набора данных изображения, которая включает в себя использование разных коэффициентов усиления для каждой цветовой компоненты данных изображения, в соответствии с еще одним вариантом осуществления;
фиг. 26 - схема последовательности операций, иллюстрирующая, каким образом технология временной фильтрации, которая использует отдельные таблицы движения и яркости для каждой цветовой компоненты пиксельных данных изображения, принятых блоком предварительной обработки пикселей ISP, показанным на фиг. 20, в соответствии с дополнительным вариантом осуществления;
фиг. 27 - блок-схема последовательности операций, иллюстрирующая обработку для применения временной фильтрации к текущему пикселю изображения набора данных изображения с использованием таблиц движения и яркости, показанных на фиг. 26, в соответствии с дополнительным вариантом осуществления;
фиг. 28 изображает выборку данных необработанного изображения полного разрешения, которые могут захватываться датчиком изображений, в соответствии с аспектами настоящего раскрытия;
фиг. 29 иллюстрирует датчик изображений, который может быть выполнен с возможностью применять группировку к данным необработанного изображения полного разрешения по фиг. 28, чтобы выводить выборку сгруппированных данных необработанного изображения, в соответствии с вариантом осуществления настоящего раскрытия;
фиг. 30 изображает выборку сгруппированных данных необработанного изображения, которые могут обеспечиваться датчиком изображений по фиг. 29, в соответствии с аспектами настоящего раскрытия;
фиг. 31 изображает сгруппированные данные необработанного изображения по фиг. 30 после их повторной выборки фильтром компенсации группирования для выдачи, в соответствии с аспектами настоящего раскрытия;
фиг. 32 изображает фильтр компенсации группирования, который может быть реализован в блоке предварительной обработки пикселей ISP по фиг. 20, в соответствии с одним вариантом осуществления;
фиг. 33 - графическое изображение различных размеров шага, которые могут применяться к дифференциальному анализатору, чтобы выбирать центральные входные пиксели и индекс/фазы для фильтрации компенсации группирования, в соответствии с аспектами настоящего раскрытия;
фиг. 34 - блок-схема последовательности операций, иллюстрирующая обработку для масштабирования данных изображения с использованием фильтра компенсации группирования по фиг. 32, в соответствии с одним вариантом осуществления;
фиг. 35 - блок-схема последовательности операций, иллюстрирующая обработку для определения центрального пикселя текущего источника ввода для горизонтальной и вертикальной фильтрации фильтром компенсации группирования по фиг. 32, в соответствии с одним вариантом осуществления;
фиг. 36 - блок-схема последовательности операций, иллюстрирующая обработку для определения индекса для выбора коэффициентов фильтрации для горизонтальной и вертикальной фильтрации фильтром компенсации группирования по фиг. 32, в соответствии с одним вариантом осуществления;
фиг. 37 - дополнительная более подробная структурная схема, показывающая вариант осуществления блока статистической обработки, который может быть реализован в логике предварительной обработки ISP, как показанная на фиг. 8, в соответствии с аспектами настоящего раскрытия;
фиг. 38 показывает различные случаи границ кадра изображения, которые могут рассматриваться при применении технологий для обнаружения и коррекции дефектных пикселей во время статистической обработки блоком статистической обработки по фиг. 37, в соответствии с аспектами настоящего раскрытия;
фиг. 39 - блок-схема последовательности операций, иллюстрирующая обработку для выполнения обнаружения и коррекции дефектных пикселей во время статистической обработки, в соответствии с одним вариантом осуществления;
фиг. 40 показывает трехмерный профиль, изображающий интенсивность света в зависимости от положения пикселя для традиционного объектива устройства формирования изображений;
фиг. 41 - цветной чертеж, который демонстрирует неравномерную интенсивность света по всему изображению, которая может быть результатом неоднородностей затенения объектива;
фиг. 42 - графическая иллюстрация кадра формирования необработанного изображения, который включает в себя область коррекции затенения объектива и сетку усиления, в соответствии с аспектами настоящего раскрытия;
фиг. 43 иллюстрирует интерполяцию значения усиления для пикселя изображения, охваченного четырьмя точками усиления окаймляющей сетки, в соответствии с аспектами настоящего раскрытия;
фиг. 44 - блок-схема последовательности операций, иллюстрирующая обработку для определения интерполированных значений усиления, которые могут применяться к пикселям формирования изображения во время операции коррекции затенения объектива, в соответствии с вариантом осуществления настоящего раскрытия;
фиг. 45 - трехмерный профиль, изображающий интерполированные значения усиления, которые могут быть применены к изображению, которое демонстрирует характеристики интенсивности света, показанные на фиг. 40, при выполнении коррекции затенения объектива, в соответствии с аспектами настоящего раскрытия;
фиг. 46 показывает цветной чертеж по фиг. 41, который демонстрирует улучшенную равномерность интенсивности света после того, как применена операция коррекции затенения объектива, в соответствии с аспектами настоящего раскрытия;
фиг. 47 графически иллюстрирует, каким образом радиальное расстояние между текущим пикселем и центром изображения может вычисляться и использоваться для определения радиальной составляющей усиления для коррекции затенения объектива, в соответствии с одним вариантом осуществления;
фиг. 48 - блок-схема последовательности операций, иллюстрирующая обработку, посредством которой радиальные коэффициенты усиления и интерполированные коэффициенты усиления из сетки усиления используются для определения общего усиления, которое может применяться к пикселям формирования изображения во время операции коррекции затенения объектива, в соответствии с вариантом осуществления настоящей технологии;
фиг. 49 - структурная схема, показывающая вариант осуществления логики конвейерной обработки ISP по фиг. 7, в соответствии с аспектами настоящего раскрытия;
фиг. 50 - более подробный вид, показывающий вариант осуществления блока обработки необработанных пикселей, который может быть реализован в логике конвейерной обработки ISP по фиг. 49, в соответствии с аспектами настоящего раскрытия;
фиг. 51 показывает различные случаи границ кадра изображения, которые могут рассматриваться при применении технологий для обнаружения и коррекции дефектных пикселей во время обработки блоком обработки необработанных пикселей, показанным на фиг. 50, в соответствии с аспектами настоящего раскрытия;
фиг. 52-54 - блок-схемы последовательности операций способа, которые изображают различные обработки для обнаружения и коррекции дефектных пикселей, которые могут выполняться в блоке обработки необработанных пикселей по фиг. 50, в соответствии с одним вариантом осуществления;
фиг. 55 показывает расположение двух пикселей зеленого в блоке пикселей 2x2 датчика изображений Байера, которые могут интерполироваться при применении технологий коррекции неравномерности зеленого во время обработки логикой обработки необработанных пикселей по фиг. 50, в соответствии с аспектами настоящего раскрытия;
фиг. 56 иллюстрирует набор пикселей, который включает в себя центральный пиксель и связанные горизонтальные соседние пиксели, которые могут использоваться в качестве части обработки горизонтальной фильтрации для подавления шумов, в соответствии с аспектами настоящего раскрытия;
фиг. 57 иллюстрирует набор пикселей, который включает в себя центральный пиксель и связанные вертикальные соседние пиксели, которые могут использоваться в качестве части обработки вертикальной фильтрации для подавления шумов, в соответствии с аспектами настоящего раскрытия;
фиг. 58 - упрощенная схема последовательности операций, которая изображает, каким образом устранение мозаичности может применяться к структуре необработанного изображения Байера, чтобы создавать полноцветное изображение RGB;
фиг. 59 изображает набор пикселей структуры изображения Байера, из которой могут быть выделены горизонтальные и вертикальные составляющие энергии для интерполяции значений зеленого цвета во время устранения мозаичности структуры изображения Байера, в соответствии с одним вариантом осуществления;
фиг. 60 показывает набор пикселей по горизонтали, к которым может применяться фильтрация для определения горизонтальной составляющей интерполированного значения зеленого цвета во время устранения мозаичности структуры изображения Байера, в соответствии с аспектами настоящей технологии;
фиг. 61 показывает набор пикселей по вертикали, к которым может применяться фильтрация для определения вертикальной составляющей интерполированного значения зеленого цвета во время устранения мозаичности структуры изображения Байера, в соответствии с аспектами настоящей технологии;
фиг. 62 показывает различные блоки пикселей 3x3, к которым может применяться фильтрация для определения интерполированных значений красного и синего во время устранения мозаичности структуры изображения Байера, в соответствии с аспектами настоящей технологии;
фиг. 63-66 предусматривают блок-схемы последовательности операций способа, которые изображают различные обработки для интерполяции значений зеленого, красного и синего цвета во время устранения мозаичности структуры изображения Байера, в соответствии с одним вариантом осуществления;
фиг. 67 показывает цветной чертеж сцены исходного изображения, которая может захватываться датчиком изображений и обрабатываться в соответствии с аспектами технологий устранения мозаичности, раскрытыми в материалах настоящей заявки;
фиг. 68 показывает цветной чертеж структуры изображения Байера сцены изображения, показанной на фиг. 67;
фиг. 69 показывает цветной чертеж изображения RGB, реконструированного с использованием традиционной технологии устранения мозаичности на основании схемы изображения Байера по фиг. 68;
фиг. 70 показывает цветной чертеж изображения RGB, реконструированного из структуры изображения Байера по фиг. 68, в соответствии с аспектами технологий устранения мозаичности, раскрытыми в материалах настоящей заявки;
фиг. 71 - более подробный вид, показывающий один вариант осуществления блока обработки RGB, который может быть реализован в логике конвейерной обработки ISP по фиг. 49, в соответствии с аспектами настоящего раскрытия;
фиг. 72 - более подробный вид, показывающий один вариант осуществления блока обработки YCbCr (цветовой модели яркость-цветность синего-цветность красного), который может быть реализован в логике конвейерной обработки ISP по фиг. 49, в соответствии с аспектами настоящего раскрытия;
фиг. 73 - графическое изображение областей активного источника для яркости и цветности в качестве определенных в пределах буфера источника с использованием 1-плоскостного формата, в соответствии с аспектами настоящего раскрытия;
фиг. 74 - графическое изображение областей активного источника для яркости и цветности в качестве определенных в пределах буфера источника с использованием 2-плоскостного формата, в соответствии с аспектами настоящего раскрытия;
фиг. 75 - структурная схема, иллюстрирующая логику увеличения резкости изображения, которая может быть реализована в блоке обработки YCbCr, как в показанном на фиг. 72, в соответствии с одним вариантом осуществления;
фиг. 76 - структурная схема, иллюстрирующая логику усиления контуров, которая может быть реализована в блоке обработки YCbCr, как в показанном на фиг. 72, в соответствии с одним вариантом осуществления;
фиг. 77 - график, показывающий взаимосвязь коэффициентов ослабления цветности с подвергнутыми увеличению резкости значениями яркости, в соответствии с аспектами настоящего раскрытия;
фиг. 78 - структурная схема, иллюстрирующая логику настройки яркости, контрастности и цвета (BCC), которая может быть реализована в блоке обработки YCbCr, как в показанном на фиг. 72, в соответствии с одним вариантом осуществления; и
фиг. 79 показывает цветовой круг цветовых тонов и насыщенности в цветовом пространстве YCbCr, определяющем различные углы цветового тона и значения насыщенности, которые могут применяться во время цветовой настройки в логике настройки BCC, показанной на фиг. 78.
ПОДРОБНОЕ ОПИСАНИЕ КОНКРЕТНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Один или более конкретных вариантов осуществления настоящего раскрытия будут описаны ниже. Эти описанные варианты осуществления являются всего лишь примерами раскрытых в настоящий момент технологий. Дополнительно, в попытке дать лаконичное описание этих вариантов осуществления, все признаки фактической реализации могут не быть описаны в описании изобретения. Должно быть принято во внимание, что при разработке любой такой фактической реализации, в качестве технического проекта или опытно-конструкторской разработки, многочисленные специфичные реализации решения должны быть приняты для достижения конкретных целей разработчиков, таких как совместимость с имеющими отношение к системе и имеющими отношение к коммерческой деятельности ограничениями, которые могут меняться от одной реализации к другой. Более того, должно быть принято во внимание, что такие направленные на проектирование усилия могли бы быть сложными и трудоемкими, но, тем не менее, могли бы быть обычным делом по разработке, конструированию и производству для рядовых специалистов в данной области техники, обладающих выгодами этого раскрытия.
При представлении элементов различных вариантов осуществления настоящего раскрытия формы единственного числа подразумеваются означающими, что есть один или более элементов. Термины «содержащий», «включающий в себя» и «имеющий» подразумеваются включающими в состав и означают, что могут быть дополнительные элементы, иные чем перечисленные элементы. Дополнительно, должно быть понятно, что ссылки на «один вариант осуществления» или «вариант осуществления» настоящего раскрытия не подразумевается, что должен толковаться в качестве исключающего существование дополнительных вариантов осуществления, которые также заключают в себе перечисленные признаки.
Как будет описано ниже, настоящее раскрытие в целом относится к технологиям для обработки данных изображения, полученных посредством одного или более устройств считывания изображения. В частности, некоторые аспекты настоящего раскрытия могут относиться к технологиям для обнаружения и коррекции дефектных пикселей, технологиям для устранения мозаичности структуры необработанного изображения, технологиям для усиления резкости яркостного изображения с использованием многопредельной нерезкой маски и технологиям для применения коэффициентов затенения объектива для коррекции неоднородностей затенения объектива. Кроме того, должно быть понятно, что раскрытые в настоящий момент технологии могут быть применены как к неподвижным изображениям, так и к движущимся изображениям (например, видео) и могут использоваться в любом пригодном типе применения формирования изображений, таком как цифровая камера, электронное устройство, имеющее встроенную цифровую камеру, система охраны или видеонаблюдения, система формирования медицинских изображений, и так далее.
Учитывая вышеприведенные моменты, фиг. 1 - структурная схема, иллюстрирующая пример электронного устройства 10, которое может предусматривать обработку данных изображения с использованием одной или более из технологий обработки изображений, кратко упомянутых выше. Электронное устройство 10 может представлять собой любой тип электронного устройства, например дорожный или настольный компьютер, мобильный телефон, цифровой медиаплеер, или тому подобное, которое выполнено с возможностью принимать и обрабатывать данные изображения, такие как данные, полученные с использованием одного или более компонентов считывания изображения. Исключительно в качестве примера, электронное устройство 10 может быть портативным электронным устройством, таким как модель iPod или iPhone, доступным от Apple Inc. из Купертино, Калифорния. Дополнительно, электронное устройство 10 может быть настольным или дорожным компьютером, таким как модель MacBook, MacBook Pro, MacBook Air, iMac, Mac Mini или Mac Pro, доступным от Apple Inc. В других вариантах осуществления, электронное устройство 10 также может быть моделью электронного устройства от другого производителя, которое способно получать и обрабатывать данные изображения.
Независимо от своей формы (например, портативной или непортативной), должно быть понятно, что электронное устройство 10 может предусматривать обработку данных изображения с использованием одной или более технологий обработки изображений, кратко описанных выше, которые могут включать в себя, среди прочего, технологии обнаружения и/или коррекции дефектных пикселей, технологии коррекции затенения объектива, технологии устранения мозаичности или технологии увеличения резкости изображений. В некоторых вариантах осуществления, электронное устройство 10 может применять такие технологии обработки изображений к данным изображения, хранимым в памяти электронного устройства 10. В дополнительных вариантах осуществления, электронное устройство 10 может включать в себя одно или более устройств формирования изображений, таких как встроенная или внешняя цифровая камера, выполненных с возможностью получать данные изображения, которые затем могут обрабатываться электронным устройством 10 с использованием одной или более из вышеупомянутых технологий обработки изображений. Варианты осуществления, показывающие как портативные, так и непортативные варианты осуществления электронного устройства 10, будут дополнительно описаны ниже на фиг. 3-6.
Как показано на фиг. 1, электронное устройство 10 может включать в себя различные внутренние и/или внешние компоненты, которые вносят вклад в функционирование устройства 10. Обычные специалисты в данной области техники будут принимать во внимание, что различные функциональные блоки, показанные на фиг. 1, могут содержать элементы аппаратного обеспечения (в том числе схемы), элементы программного обеспечения (в том числе компьютерный код, хранимый на считываемом компьютером носителе) или комбинацию элементов как аппаратного обеспечения, так и программного обеспечения. Например, в проиллюстрированном в настоящий момент варианте осуществления электронное устройство 10 может включать в себя порты 12 ввода/вывода (I/O), структуры 14 ввода, один или более процессоров 16, устройство 18 памяти, энергонезависимое запоминающее устройство 20, карту(ы) 22 расширения, сетевое устройство 24, источник 26 питания и устройство 28 отображения. Дополнительно, электронное устройство 10 может включать в себя одно или более устройств 30 формирования изображений, таких как цифровая камера, и схемы 32 обработки изображений. Как будет дополнительно описано ниже, схемы 32 обработки изображений могут быть выполнены с возможностью реализовывать одну или более описанных выше технологий обработки изображений при обработке данных изображения. Как может быть принято во внимание, данные изображения, обрабатываемые схемами 32 обработки изображений, могут извлекаться из памяти 18 и/или энергонезависимых запоминающих устройств(а) 20 или могут получаться с использованием устройства 30 формирования изображений.
Перед продолжением должно быть понятно, что структурная схема системы устройства 10, показанного на фиг. 1, подразумевается высокоуровневой схемой управления, изображающей различные компоненты, которые могут быть включены в такое устройство 10. То есть, линии соединения между каждым отдельным компонентом, показанным на фиг. 1, не обязательно могут представлять тракты или направления, по которым данные движутся или передаются между различными компонентами устройства 10. В действительности, как описано ниже, изображенный процессор(ы) 16, в некоторых примерах, включает в себя многочисленные процессоры, такие как основной процессор (ЦПУ, CPU), и специализированные процессоры изображений и/или видеопроцессоры. В таких вариантах осуществления, обработка данных изображения главным образом может выполняться этими специализированными процессорами, таким образом, эффективно сгружая такие задачи с основного процессора (ЦПУ).
Что касается каждого из проиллюстрированных компонентов на фиг. 1, порты 12 I/O могут включать в себя порты, выполненные с возможностью присоединяться к многообразию внешних устройств, таких как источник питания, устройство аудиовывода (например, головная гарнитура или наушники), или другие электронные устройства (такие как карманные устройства и/или компьютеры, принтеры, проекторы, внешние устройства отображения, модемы, стыковочные станции (док-станции), и так далее). В одном варианте осуществления порты 12 I/O могут быть выполнены с возможностью присоединяться к внешнему устройству формирования изображений, такому как цифровая камера, для получения данных изображения, которые могут обрабатываться с использованием схем 32 обработки изображений. Порты 12 I/O могут поддерживать любой пригодный тип интерфейса, такой как универсальная последовательная шина (USB), порт последовательного соединения, порт стандарта IEEE-1394 (FireWire), порт сети Ethernet или модема и/или порт соединения с источником питания AC/DC.
В некоторых вариантах осуществления некоторые порты 12 I/O могут быть выполнены с возможностью предусматривать более чем одну функцию. Например, в одном варианте осуществления порты 12 I/O могут включать в себя фирменный порт от Apple Inc., который может функционировать, не только чтобы содействовать передаче данных между электронным устройством 10 и внешним источником, но также чтобы присоединять устройство 10 к интерфейсу зарядки энергии, такому как адаптер питания, сконструированный обеспечивать питание из электрической настенной розетки, или интерфейсный кабель, выполненный с возможностью отбирать мощность от другого электрического устройства, такого как настольный или дорожный компьютер, для зарядки источника 26 питания (который может включать в себя одну или более перезаряжаемых батарей). Таким образом, порт 12 I/O может быть выполнен с возможностью функционировать двойственно в качестве как порта передачи данных, так и в качестве порта соединения с источником питания AC/DC, например, в зависимости от внешнего компонента, являющегося присоединенным к устройству 10 через порт 12 I/O.
Структуры 14 ввода могут обеспечивать пользовательский ввод или обратную связь процессору(ам) 16. Например, структуры 14 ввода могут быть выполнены с возможностью управлять одной или более функциями электронного устройства 10, такими как выполнение приложений на электронном устройстве 10. Исключительно в качестве примера, структуры 14 ввода могут включать клавиши, ползунковые элементы, переключатели, панели управления, ключи, кнопки, колесики прокрутки, клавиатуры, мышки, сенсорные (воспринимающие касание) панели и так далее или некоторые их комбинации. В одном варианте осуществления, структуры 14 ввода могут предоставлять пользователю возможность осуществлять навигацию по графическому интерфейсу пользователя (GUI), отображаемому на устройстве 10. Дополнительно, структуры 14 ввода могут включать в себя воспринимающий касание механизм, предусмотренный вместе с устройством 28 отображения. В таком варианте осуществления, пользователь может выбирать или взаимодействовать с отображенными элементами интерфейса посредством воспринимающего касание механизма.
Структуры 14 ввода могут включать в себя различные устройства, схемы и разводку цепей, посредством которых пользовательский ввод или обратная связь обеспечивается одному или более процессорам 16. Такие структуры 14 ввода могут быть выполнены с возможностью управлять функционированием устройства 10, выполнением приложений на устройстве 10 и/или любых интерфейсах или устройствах, присоединенных к или используемых электронным устройством 10. Например, структуры 14 ввода могут предоставлять пользователю возможность осуществлять навигацию по отображаемому интерфейсу пользователя или прикладному интерфейсу. Примеры структур 14 ввода могут включать клавиши, ползунковые элементы, переключатели, панели управления, ключи, кнопки, колесики прокрутки, клавиатуры, мышки, сенсорные панели, и так далее.
В некоторых вариантах осуществления структура 14 ввода и устройство 28 отображения могут быть предусмотрены вместе, например, как в случае «сенсорного экрана», в силу чего воспринимающий касание механизм предусмотрен вместе с устройством 28 отображения. В таком варианте осуществления, пользователь может выбирать или взаимодействовать с отображаемыми элементами интерфейса посредством воспринимающего касание механизма. Таким образом, отображаемый интерфейс может предусматривать интерактивные функциональные возможности, предоставляющие пользователю возможность осуществлять навигацию по отображаемому интерфейсу, прикасаясь к устройству 28 отображения. Например, пользовательское взаимодействие со структурами 14 ввода, такое как для взаимодействия с интерфейсом пользователя или прикладным интерфейсом, отображаемым на устройстве 26 отображения, может вырабатывать электрические сигналы, служащие признаком пользовательского ввода. Эти входные сигналы могут маршрутизироваться через пригодную разводку цепей, такую как концентратор ввода или шина данных, к одному или более процессорам 16 для дальнейшей обработки.
В дополнение к обработке различных входных сигналов, принятых через структуру(ы) 14 ввода, процессор(ы) 16 могут управлять общей работой устройства 10. Например, процессор(ы) 16 может предусматривать возможности обработки для выполнения операционной системы, программ, интерфейса пользователя и прикладного интерфейса и любых других функций электронного устройства 10. Процессор(ы) 16 может включать в себя один или более микропроцессоров, таких как один или более микрокомпьютеров «общего применения», один или более микрокомпьютеров специального назначения и/или специализированные микропроцессоры (ASIC), или комбинацию таких компонентов обработки. Например, процессор(ы) 16 может включать в себя один или более процессоров с набором инструкций (например, RISC (вычислений с сокращенным набором инструкций)), а также графических процессоров (GPU), видеопроцессоров, аудиопроцессоров и/или связанных наборов микросхем. Как будет принято во внимание, процессор(ы) 16 могут быть присоединены к одной или более шинам данных для передачи данных и инструкций между различными компонентами устройства 10. В некоторых вариантах осуществления, процессор(ы) 16 может предусматривать возможности обработки для выполнения приложений формирования изображений на электронном устройстве 10, таких как Photo Booth, Aperture, iPhoto или Preview, доступные от Apple Inc., или приложений «Камера» («Camera») и/или «Фото» («Photo»), поставляемых Apple Inc. и доступных на моделях iPhone.
Инструкции или данные, которые должны быть обработаны процессором(ами) 16, могут храниться на считываемом компьютером носителе, таком как устройство 18 памяти. Устройство 18 памяти может быть предусмотрено в качестве энергозависимой памяти, такой как оперативное запоминающее устройство (ОЗУ, RAM), или в качестве энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ, ROM), или в качестве комбинации одного или более устройств ОЗУ и ПЗУ. Память 18 может хранить многообразие информации и может использоваться для различных целей. Например, память 18 может хранить микропрограммное обеспечение для электронного устройства 10, такое как базовая система ввода/вывода (BIOS), операционная система, различные программы, приложения или любые другие процедуры, которые могут выполняться на электронном устройстве 10, в том числе функции интерфейса пользователя, функции процессора, и так далее. В дополнение, память 18 может использоваться для буферизации или кэширования во время работы электронного устройства 10. Например, в одном варианте осуществления, память 18 может включать в себя один или более буферов кадров для буферизации видеоданных по мере того, как они выводятся на устройство 28 отображения.
В дополнение к устройству 18 памяти, электронное устройство 10 дополнительно может включать в себя энергонезависимое запоминающее устройство 20 для постоянного хранения данных и/или инструкций. Энергонезависимое запоминающее устройство 20 может включать в себя флэш-память, накопитель на жестких дисках или любые другие оптические, магнитные и/или твердотельные носители или некоторую их комбинацию. Таким образом, хотя изображено в качестве одиночного устройства на фиг. 1 в целях ясности, должно быть понятно, что энергонезависимое запоминающее устройство(а) 20 может включать в себя комбинацию одного или более вышеперечисленных запоминающих устройств, работающих вместе с процессором(ами) 16. Энергонезависимое запоминающее устройство 20 может использоваться для хранения микропрограммного обеспечения, файлов данных, данных изображения, программного обеспечения операционной системы и программно реализованные приложения, информацию о беспроводных соединениях, персональную информацию, предпочтения пользователя и любые другие пригодные данные в соответствии с аспектами настоящего раскрытия, данные изображения, хранимые в энергонезависимом запоминающем устройстве 20 и/или устройстве 18 памяти, могут обрабатываться схемами 32 обработки изображений перед выводом на устройство отображения.
Вариант осуществления, проиллюстрированный на фиг. 1, также может включать в себя одно или более гнезд для карт (плат) или слотов расширения. Гнезда для карт могут быть выполнены с возможностью принимать карты 22 расширения, которые могут использоваться для добавления функциональных возможностей, такие как дополнительная память, функциональные возможности I/O или сети, в электронное устройство 10. Такая карта 22 расширения может присоединяться к устройству через любой тип подходящего разъема и может подвергаться доступу изнутри или снаружи по отношению к корпусу электронного устройства 10. Например, в одном варианте осуществления, карта 24 расширения может быть картой флэш-памяти, такой как карта формата SecureDigital (SD), мини- или микро-SD, карта CompactFlash, или тому подобное, или может быть устройством PCMCIA. Дополнительно, карта 24 расширения может быть картой модуля идентификации абонента (SIM) для использования с вариантом осуществления электронного устройства 10, которое предусматривает возможности сотового телефона.
Электронное устройство 10 также включает в себя сетевое устройство 24, которое может быть сетевым контроллером или сетевой интерфейсной картой (NIC), которая может предусматривать возможность сетевого соединения посредством стандарта 802.11 беспроводной связи или любого другого сетевого стандарта, такого как локальная сеть (LAN), глобальная сеть (WAN), например развитие стандарта GSM (глобальной системы мобильной связи) с увеличенной скоростью передачи данных GSM (EDGE), сеть передачи данных 3G или сеть Интернет. В некоторых вариантах осуществления, сетевое устройство 24 может предусматривать соединение с поставщиком интерактивного цифрового мультимедийного контента, таким как музыкальная служба iTunes, доступная от Apple Inc.
Источник 26 питания устройства 10 может включать в себя возможности для питания устройства 10 как в непортативной, так и портативной установках. Например, в портативной установке устройство 10 может включать в себя одну или более батарей, таких как литий-ионная батарея для питания устройства 10. Батарея может подзаряжаться посредством присоединения устройства 10 к внешнему источнику питания, к примеру к электрической настенной розетке. В непортативной установке источник 26 питания может включать в себя блок питания (PSU), выполненный с возможностью отбирать энергию из настенной электрической розетки и распределять энергию по различным компонентам непортативного электронного устройства, такого как настольная вычислительная система.
Устройство 28 отображения может использоваться для отображения различных изображений, сгенерированных устройством 10, таких как GUI для операционной системы, или данных изображения (в том числе неподвижные изображения и видеоданные), обработанных схемами 32 обработки изображений, как будет дополнительно описано ниже. Как упомянуто выше, данные изображения могут включать в себя данные изображения, полученные с использованием устройства 30 формирования изображений, или данные изображения, извлеченные из памяти 18 и/или энергозависимое запоминающее устройство 20. Устройство 28 отображения может быть любым пригодным типом устройства отображения, например, таким как жидкокристаллическое устройство отображения (LCD), плазменное устройство отображения или устройство отображения на органических светоизлучающих диодах (OLED). Дополнительно, как описано выше, устройство 28 отображения может быть предусмотрено вместе с описанным выше воспринимающим касание механизмом (например, сенсорным экраном), который может функционировать в качестве части интерфейса управления для электронного устройства 10.
Проиллюстрированное устройство(а) 30 формирования изображений может быть предусмотрено в качестве цифровой камеры, выполненной с возможностью получать как неподвижные изображения, так и движущиеся изображения (например, видео). Камера 30 может включать в себя объектив и один или более датчиков изображений, выполненных с возможностью захватывать и преобразовывать свет в электрические сигналы. Только в качестве примера, датчик изображений может включать в себя датчик изображений на КМОП (комплементарных элементах металл-оксид-полупроводник, CMOS) (например, датчик с активными пикселями (APS) на КМОП) или датчик на ПЗС (приборах с зарядовой связью, CCD). Как правило, датчик изображений в камере 30 включает в себя интегральную схему, имеющую матрицу пикселей, в которой каждый пиксель включает в себя фотодетектор для считывания света. Как будут принимать во внимание специалисты в данной области техники, фотодетекторы в пикселях формирования изображений обычно обнаруживают интенсивность света, захваченного посредством объективов камеры. Однако фотодетекторы, сами по себе, неспособны обнаруживать длину волны захваченного света и, таким образом, не способны определять информацию о цвете.
Соответственно, датчик изображений дополнительно может включать в себя матрицу цифровых фильтров (CFA), которая может покрывать или располагаться поверх матрицы пикселей датчика изображений, чтобы захватывать информацию о цвете. Матрица цифровых фильтров может включать в себя матрицу небольших цветовых фильтров, каждый из которых может перекрывать соответственный пиксель датчика изображений и отфильтровывать захваченный свет по длине волны. Таким образом, когда используются вместе, матрица цветовых фильтров и фотодетекторы могут давать информацию как о длине волны, так и интенсивности в отношении света, захваченного через камеру, которая может давать представление о захваченном изображении.
В одном варианте осуществления матрица цветовых фильтров может включать в себя матрицу фильтров Байера, который предусматривает структуру фильтра, то есть 50% элементов зеленого, 25% элементов красного и 25% элементов синего. Например, фиг. 2 показывает блок пикселей 2x2 CFA Байера, который включает в себя 2 элемента зеленого (Gr и Gb), 1 элемент (R) красного и 1 элемент (B) синего. Таким образом, датчик изображений, который использует матрицу цветовых фильтров Байера, может выдавать информацию касательно интенсивности света, принятого камерой 30 на длинах волны зеленого, красного и синего цветов, в силу чего каждый пиксель изображения регистрирует только один из трех цветов (RGB). Эта информация, которая может указываться ссылкой как «данные необработанного изображения» или данные в «необработанной области», затем может обрабатываться с использованием одной или более технологий устранения мозаичности для преобразования данных необработанного изображения в полноцветное изображение, обычно посредством интерполяции набора значений красного, зеленого и синего цветов для каждого пикселя. Как будет дополнительно описано ниже, такие технологии устранения мозаичности могут выполняться посредством схем 32 обработки изображений.
Как упомянуто выше, схемы 32 обработки изображений могут предусматривать различные этапы обработки изображений, такие как операции обнаружения/коррекции дефектных пикселей, коррекции затенения объектива, устранения мозаичности и увеличения резкости изображения, подавления шумов, гамма-коррекции, улучшения качества изображения, преобразования цветового пространства, сжатия изображения, субдискретизации цветности и операции масштабирования изображения, и так далее. В некоторых вариантах осуществления, схемы 32 обработки изображений могут включать в себя различные подкомпоненты и/или дискретные блоки логики, которые совместно формируют «конвейер» обработки изображений для выполнения каждого из различных этапов обработки изображений. Эти подкомпоненты могут быть реализованы с использованием аппаратного обеспечения (например, цифровых сигнальных процессоров или ASIC) или программного обеспечения либо посредством комбинации компонентов аппаратного обеспечения и программного обеспечения. Различные операции обработки изображений, которые могут быть предусмотрены схемами 32 обработки изображений и, в частности, такие операции обработки, относящиеся к обнаружению/коррекции дефектных пикселей, коррекции затенения объектива, устранению мозаичности и увеличению резкости изображения, будут подробнее описаны ниже.
Перед продолжением должно быть отмечено, что, несмотря на то, что различные варианты осуществления различных технологий обработки изображений, описанных ниже, могут использовать CFA Байера, раскрытые на данный момент технологии не подразумеваются ограниченными в этом отношении. В действительности, специалисты в данной области техники будут принимать во внимание, что технологии обработки изображений, предусмотренные в материалах настоящей заявки, могут быть применимы к любой пригодной матрице цветовых фильтров, в том числе фильтрам RGBW, фильтрам CYGM, и так далее.
Вновь со ссылкой на электронное устройство 10, фиг. 3-6 иллюстрируют различные формы, которые может принимать электронное устройство 10. Как упомянуто выше, электронное устройство 10 может принимать форму компьютера, в том числе компьютеров, которые являются в целом портативными (таких как дорожный, блокнотный и планшетный компьютеры), а также компьютеров, которые в целом не являются портативными (таких как настольные компьютеры, рабочие станции и/или серверы), или других типов электронного устройства, таких как карманные портативные электронные устройства (например, цифровой медиаплеер или мобильный телефон). В частности, фиг. 3 и 4 изображают электронное устройство 10 в форме дорожного компьютера 40 и настольного компьютера 50 соответственно. Фиг. 5 и 6 показывают виды спереди и сзади соответственно электронного устройства 10 в форме карманного портативного устройства 60.
Как показано на фиг. 3, изображенный дорожный компьютер 40 включает в себя корпус 42, устройство 28 отображения, порты 12 I/O и структуры 14 ввода. Структуры 14 ввода могут включать в себя клавиатуру и мышь сенсорной панели, которые выполнены как целая часть с корпусом 42. Дополнительно, структура 14 ввода может включать в себя различные другие клавиши и/или переключатели, которые могут использоваться для взаимодействия с компьютером 40, к примеру, для включения питания или запуска компьютера, для управления GUI или приложением, работающим на компьютере 40, а также настройки различных других аспектов, относящихся к работе компьютера 40 (например, громкости звука, яркости устройства отображения и т.д.). Компьютер 40 также может включать в себя различные порты 12 I/O, которые предусматривают возможности соединения для дополнительных устройств, как описано выше, такие как порт FireWire или USB, порт мультимедийного интерфейса высокого разрешения (HDMI) или любой другой тип порта, который пригоден для присоединения к внешнему устройству. Дополнительно, компьютер 40 может включать в себя возможность сетевого соединения (например, сетевое устройство 26), память (например, память 20) и возможности хранения (например, запоминающее устройство 22), как описано выше со ссылкой на фиг. 1.
Кроме того, дорожный компьютер 40, в проиллюстрированном варианте осуществления, может включать в себя встроенное устройство 30 формирования изображений (например, камеру). В других вариантах осуществления дорожный компьютер 40 может использовать внешнюю камеру (например, внешнюю USB-камеру или «веб-камеру»), присоединенную к одному или более портам 12 I/O, вместо или в дополнение к встроенной камере 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.
Фиг. 4 дополнительно иллюстрирует вариант осуществления, в котором электронное устройство 10 предусмотрено в качестве настольного компьютера 50. Как будет принято во внимание, настольный компьютер 50 может включать в себя некоторое количество признаков, которые могут быть в целом подобными предусмотренными дорожным компьютером 40, показанным на фиг. 4, но может иметь в целом больший общий конструктив. Как показано, настольный компьютер 50 может быть размещен в корпусе 42, который включает в себя устройство 28 отображения, а также различные другие компоненты, описанные со ссылкой на структурную схему, показанную на фиг. 1. Кроме того, настольный компьютер 50 может включать в себя внешнюю клавиатуру и мышь (структуры 14 ввода), которые могут быть присоединены к компьютеру 50 через один или более портов 12 I/O (например, USB) или могут поддерживать связь с компьютером 50 беспроводным образом (например, радиочастотный (RF), Bluetooth, и т.д.). Настольный компьютер 50 также включает в себя устройство 30 формирования изображений, которое может быть встроенной или внешней камерой, как описано выше. В некоторых вариантах осуществления изображенный настольный компьютер 50 может быть моделью iMac, Mac mini, Mac Pro, доступной от Apple Inc.
Как дополнительно показано, устройство 28 отображения может быть выполнено с возможностью генерировать различные изображения, которые могут просматриваться пользователем. Например, во время работы компьютера 50 устройство 28 отображения может отображать графический интерфейс 52 пользователя («GUI»), который предоставляет пользователю возможность взаимодействовать с операционной системой и/или приложением, работающим на компьютере 50. GUI 52 может включать в себя различные уровни, окна, экраны, шаблоны или другие графические элементы, которые могут отображаться на всем или части устройства 28 отображения. Например, в изображенном варианте осуществления, GUI 52 операционной системы может включать в себя различные графические пиктограммы 54, каждая из которых может соответствовать различным приложениям, которые могут открываться или выполняться после обнаружения пользовательского выбора (например, посредством ввода с клавиатуры/мыши или сенсорного экрана). Пиктограммы 54 могут отображаться в доке (тип панели инструментов) 56 или в пределах одного или более графических элементов 58 окна, отображенного на экране. В некоторых вариантах осуществления выбор пиктограммы 54 может приводить к обработке иерархической навигации так, чтобы выбор пиктограммы 54 приводил на экран или открывал другое графическое окно, которое включает в себя одну или более дополнительных пиктограмм или других элементов GUI. Исключительно в качестве примера, GUI 52 операционной системы, отображенный на фиг. 4, может быть из версии операционной системы Mac OS, доступной от Apple Inc.
Продолжая со ссылками на фиг. 5 и 6, электронное устройство 10 дополнительно проиллюстрировано в форме портативного карманного электронного устройства 60, которое может быть моделью iPod или iPhone, доступной от Apple Inc. В изображенном варианте осуществления карманное устройство 60 включает в себя корпус 42, который может функционировать для защиты внутренних компонентов от физического повреждения и экранировать их от электромагнитных помех. Корпус 42 может быть сформирован из любого пригодного материала или комбинации материалов, таких как пластик, металл или композитный материал, и может предоставлять некоторым частотам электромагнитного излучения, таким как сигналы беспроводной сети, возможность проходить через схемы беспроводной связи (например, сетевое устройство 24), которые могут быть расположены в пределах корпуса 42, как показано на фиг. 5.
Корпус 42 также включает в себя различные структуры 14 пользовательского ввода, через которые пользователь может взаимодействовать с карманным устройством 60. Например, каждая структура 14 ввода может быть выполнена с возможностью управлять одной или более соответственных функций устройства, когда нажимается или приводится в действие. В качестве примера, одна или более структур 14 ввода может быть выполнена с возможностью вызывать «домашний» экран 42 или меню, которое должно быть отображено, чтобы переключаться между дежурным, активным или включенным/отключенным режимом, чтобы заглушать звонок для приложения сотового телефона, чтобы увеличивать или уменьшать выходную громкость, и так далее. Должно быть понятно, что проиллюстрированные структуры 14 ввода являются всего лишь примерными и что карманное устройство 60 может включать в себя любое количество пригодных конструкций пользовательского ввода, существующих в различных формах, в том числе клавиши, переключатели, ключи, кнопки, колесики прокрутки и так далее.
Как показано на фиг. 5, карманное устройство 60 может включать в себя порты 12 I/O. Например, изображенные порты 12 I/O могут включать в себя порт 12a частного (фирменного) соединения для передачи и приема файлов данных или для зарядки источника 26 питания и порт 12b аудио-соединения для присоединения устройства 60 к устройству аудио-вывода (например, наушникам или громкоговорителям). Кроме того, в вариантах осуществления, где карманное устройство 60 предусматривает функциональные возможности мобильного телефона, устройство 60 может включать в себя порт 12c I/O для приема карты модуля идентификации абонента (SIM) (например, карты 22 расширения).
Устройство 28 отображения, которое может быть LCD, OLED или любым пригодным типом устройства отображения, может отображать различные изображения, сгенерированные карманным устройством 60. Например, устройство 28 отображения может отображать различные индикаторы 64 системы, выдающие обратную связь пользователю в отношении одного или более состояний карманного устройства 60, таких как состояние питания, интенсивность сигнала, соединения с внешними устройствами, и так далее. Устройство отображения также может отображать GUI 52, который предоставляет пользователю возможность взаимодействовать с устройством 60, как описано выше со ссылкой на фиг. 4. GUI 52 может включать в себя графические элементы, такие как пиктограммы 54, которые могут соответствовать различным приложениям, которые могут открываться или выполняться после обнаружения пользовательского выбора соответственной пиктограммы 54. В качестве примера, одна из пиктограмм 54 может представлять приложение 66 камеры, которое может использоваться вместе с камерой 30 (показанной линиями воображаемого контура на фиг. 5) для получения изображений. С краткой ссылкой на фиг. 6, проиллюстрирован вид сзади карманного электронного устройства 60, изображенного на фиг. 5, который показывает камеру 30 в качестве являющейся выполненной как целая часть с корпусом 42 и расположенной на задней стороне карманного устройства 60.
Как упомянуто выше, данные изображения, полученные с использованием камеры 30, могут обрабатываться с использованием схем 32 обработки, которые могут включать в себя аппаратное обеспечение (например, расположенное в пределах корпуса 42) и/или программное обеспечение, хранимое в одном или более запоминающих устройств (например, памяти 18 или энергонезависимом запоминающем устройстве 20) устройства 60. Изображения, полученные с использованием приложения 66 камеры и камеры 30, могут сохраняться на устройстве 60 (например, в запоминающем устройстве 20) и могут просматриваться в более позднее время с использованием приложения 68 просмотра фотографий.
Карманное устройство 60 также может включать в себя различные элементы ввода и вывода аудио (данных). Например, элементы ввода/вывода, изображенные в целом под номером 70 ссылки, могут включать в себя приемник ввода, такой как один или более микрофонов. Например, в тех случаях, когда карманное устройство 60 включает в себя функциональные возможности сотового телефона, приемники ввода могут быть выполнены с возможностью принимать пользовательский ввод аудио, такой как голос пользователя. Дополнительно, элементы 70 ввода/вывода аудио могут включать в себя один или более передатчиков вывода. Такие передатчики вывода могут включать в себя один или более громкоговорителей, которые могут функционировать для передачи аудиосигналов пользователю, таких как во время воспроизведения музыкальных данных с использованием приложения 72 медиаплеера. Кроме того, в вариантах осуществления, где карманное устройство 60 включает в себя приложение сотового телефона, может быть предусмотрен дополнительный передатчик 74 вывода аудио, как показано на фиг. 5. Подобно передатчикам вывода элементов 70 ввода/вывода аудио, передатчик 74 вывода также может включать в себя один или более громкоговорителей, выполненных с возможностью передавать аудиосигналы пользователю, такие как речевые данные, принимаемые во время телефонного вызова. Таким образом, элементы 70 и 74 ввода/вывода аудио могут работать вместе, чтобы функционировать в качестве элементов аудио-приема и передачи телефона.
Теперь, имея предоставленным некоторый контекст в отношении различных форм, которые может принимать электронное устройство 10, настоящее описание далее будет фокусироваться на схемах 32 обработки изображений, изображенных на фиг. 1. Как упомянуто выше, схемы 32 обработки изображений могут быть реализованы с использованием компонентов аппаратного обеспечения и/или программного обеспечения и могут включать в себя различные блоки обработки, которые определяют конвейер обработки сигналов изображения (ISP). В частности, последующее описание может фокусироваться на аспектах технологий обработки изображений, изложенных в настоящем раскрытии, в частности, относящихся к технологиям обнаружения/коррекции дефектных пикселей, технологиям коррекции затенения объектива, технологиям устранения мозаичности изображения и технологиям увеличения резкости изображения.
Далее, со ссылкой на фиг. 7 проиллюстрирована высокоуровневая структурная схема, изображающая некоторые функциональные компоненты, которые могут быть реализованы в качестве части схем 32 обработки изображений в соответствии с одним вариантом осуществления, раскрытых на данный момент технологий. В частности, фиг. 7 предназначена для иллюстрации того, каким образом данные изображения могут проходить через схемы 32 обработки изображений, в соответствии с по меньшей мере одним вариантом осуществления. Для того чтобы дать общий обзор схем 32 обработки изображений, общее описание того, каким образом эти функциональные компоненты действуют для обработки данных изображения, здесь предоставлено со ссылкой на фиг. 7, наряду с тем, что более точное описание каждого из проиллюстрированных функциональных компонентов, а также их соответственных подкомпонентов будет дополнительно приведено ниже.
Со ссылкой на проиллюстрированный вариант осуществления, схемы 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 датчика, чтобы поддерживать датчики изображений разных размеров и требований к синхронизации.
Данные 96 необработанного изображения могут выдаваться в логику 80 предварительной обработки ISP и обрабатываться попиксельно в некотором количестве форматов. Например, каждый пиксель изображения может иметь битовую глубину 8, 10, 12 или 14 битов. Логика 80 предварительной обработки ISP может выполнять одну или более операций обработки изображений над данными 96 необработанного изображения, а также собирать статистические данные о данных 96 изображения. Операции обработки изображений, а также сбор статистических данных могут выполняться с одной и той же или разными точностями битовой глубины. Например, в одном варианте осуществления обработка необработанных пиксельных данных 96 изображения может выполняться с точностью 14 бит. В таких вариантах осуществления необработанные пиксельные данные, принятые логикой 80 предварительной обработки ISP, которые имеют битовую глубину менее чем 14 бит (например, 8 бит, 10 бит, 12 бит), могут подвергаться повышающей дискретизации до 14 бит для целей обработки изображения. В еще одном варианте осуществления статистическая обработка может происходить с точностью 8 битов, и, таким образом, необработанные пиксельные данные, имеющие более высокую битовую глубину, могут подвергаться понижающей дискретизации в 8-битный формат для статистических целей. Как будет принято во внимание, понижающая дискретизация до 8 битов может снижать размер аппаратного обеспечения (например, площадь) и к тому же уменьшать сложность обработки/вычислительную сложность для статистических данных. Дополнительно, данные необработанного изображения могут пространственно усредняться, чтобы статистические данные были более устойчивыми к шуму.
Кроме того, как показано на фиг. 7, логика 80 предварительной обработки ISP также может принимать пиксельные данные из памяти 108. Например, как показано номером 98 ссылки, необработанные пиксельные данные могут отправляться в память 108 из интерфейса 94 датчика. Необработанные пиксельные данные, находящиеся в памяти 108, затем могут выдаваться в логику 80 предварительной обработки ISP для обработки, как указано номером 100 ссылки. Память 108 может быть частью устройства 18 памяти, запоминающего устройства 20 или может быть отдельной выделенной памятью в пределах электронного устройства 10 и может включать в себя признаки прямого доступа к памяти (DMA). Кроме того, в некоторых вариантах осуществления логика 80 предварительной обработки ISP может действовать в пределах своей собственной области тактовых сигналов и обеспечивать асинхронное взаимодействие с интерфейсом 94 датчика, чтобы поддерживать датчики разных размеров и имеющие разные требования к синхронизации.
После приема данных 96 (из интерфейса 94 датчика) или 100 (из памяти 108) необработанного изображения логика 80 предварительной обработки ISP может выполнять одну или более операций обработки изображений, таких как временная фильтрация и/или фильтрация компенсации группирования. Обработанные данные изображения затем могут выдаваться в логику 82 конвейера ISP (выходной сигнал 109) для дополнительной обработки перед отображением (например, на устройстве 28 отображения) или могут отправляться в память (выходной сигнал 110). Логика 82 конвейера ISP принимает «предварительно» обработанные данные, непосредственно из логики 80 предварительной обработки ISP или из памяти 108 (входной сигнал 112), и может предусматривать дополнительную обработку данных изображения в необработанной области, а также в цветовых пространствах RGB и YCbCr. Данные изображения, обработанные логикой 82 конвейера ISP, затем могут выводиться (сигнал 114) на устройство 28 отображения для просмотра пользователем и/или могут дополнительно обрабатываться графической машиной или GPU. Дополнительно, выходные данные из логики 82 конвейера ISP могут отправляться в память 108 (сигнал 115), и устройство 28 отображения может считывать данные изображения из памяти 108 (сигнал 116), которая, в некоторых вариантах осуществления, может быть выполнена с возможностью реализовывать один или несколько буферов кадров. Кроме того, в некоторых реализациях, выходные данные логики 82 конвейера ISP также могут обеспечиваться к машине 118 сжатия/восстановления после сжатия (сигнал 117) для кодирования/декодирования данных изображения. Кодированные данные изображения могут сохраняться, а затем позже восстанавливаться после сжатия перед отображением на устройстве 28 отображения (сигнал 119). В качестве примера, машина сжатия или «кодировщик» 118 может быть машиной сжатия стандарта JPEG (Объединенной экспертной группы по изображению) для кодирования неподвижных изображений, или машиной сжатия стандарта H.264 для кодирования видеоизображений, или некоторой их комбинацией, а также соответствующей машиной восстановления после сжатия для декодирования данных изображения. Дополнительная информация в отношении операций обработки изображений, которые могут быть предусмотрены в логике 82 конвейера ISP, будет подробнее описана ниже со ссылкой на фиг. 49-79. К тому же должно быть отмечено, что логика 82 конвейера ISP также может принимать данные необработанного изображения из памяти 108, как изображено входным сигналом 112.
Статистические данные 102, определенные логикой 80 предварительной обработки ISP, могут выдаваться в блок 84 логики управления. Статистические данные 102, например, могут включать в себя статистические данные датчика изображений, относящиеся к автоматическому экспонированию, автоматической балансировке белого, автоматической фокусировке, обнаружению мерцания, компенсации уровня черного (BLC), коррекции затенения объектива и так далее. Логика 84 управления может включать в себя процессор и/или микроконтроллер, выполненные с возможностью выполнять одну или более процедур (например, микропрограмм), которые могут быть выполнены с возможностью определять, на основании принятых статистических данных 102, параметры 104 управления для устройства 30 формирования изображений, а также параметры 106 управления для логики 82 обработки конвейера ISP. Исключительно в качестве примера, параметры 104 управления могут включать в себя параметры управления датчиком (например, коэффициенты усиления, время аккумулирования зарядов для управления экспонированием), параметры управления вспышкой камеры, параметры управления объективом (например, фокусное расстояние для фокусировки или трансфокации) или комбинацию таких параметров. Параметры 106 управления ISP могут включать в себя уровни усиления и коэффициенты матрицы цветовой коррекции (CCM) для автоматической балансировки белого и настройки цветов (например, во время обработки RGB), а также параметры коррекции затенения объектива, которые, как описано ниже, могут определяться на основании параметров баланса точки белого. В некоторых вариантах осуществления логика 84 управления, в дополнение к анализу статистических данных 102, также анализирует исторические статистические данные, которые могут храниться в электронном устройстве 10 (например, в памяти 18 или запоминающем устройстве 20).
Вследствие в целом сложной конструкции схем 32 обработки изображений, показанных в материалах настоящей заявки, может быть полезным разделить описание логики 80 предварительной обработки ISP и логики 82 конвейерной обработки ISP на разные разделы, как показано ниже. В частности, фиг. 8 - 48 настоящей заявки могут относиться к описанию различных вариантов осуществления и аспектов логики 80 предварительной обработки ISP наряду с тем, что фиг. 49 - 79 настоящей заявки могут относиться к описанию различных вариантов осуществления и аспектов логики 82 обработки конвейера ISP.
Логика предварительной обработки ISP
Фиг. 8 - более подробная структурная схема, показывающая функциональные логические блоки, которые могут быть реализованы в логике 80 предварительной обработки ISP, в соответствии с одним вариантом осуществления. В зависимости от конфигурации устройства 30 формирования изображений и/или интерфейса 94 датчика, как описано выше на фиг. 7, данные необработанного изображения могут выдаваться в логику 80 предварительной обработки ISP одним или более датчиками 90 изображений. В изображенном варианте осуществления данные необработанного изображения могут выдаваться в логику 80 предварительной обработки ISP первым датчиком 90a изображений (Sensor0, Датчиком 0) и вторым датчиком 90b изображений (Sensor1, Датчиком 1). Как будет дополнительно описано ниже, каждый датчик 90a и 90b изображений может быть выполнен с возможностью применять группировку к данным изображения полного разрешения, для того чтобы повышать отношение сигнал/шум сигнала изображения. Например, может применяться технология группировки, такая как группировка 2x2, которая может интерполировать «сгруппированные» пиксели необработанного изображения на основании четырех пикселей изображения полного разрешения одного и того же цвета. В одном варианте осуществления это может давать в результате существования четырех накопленных составляющих сигнала, связанных со сгруппированным пикселем в зависимости от одиночной составляющей шума, таким образом, улучшая отношение сигнал/шум данных изображения, но снижая общее разрешение. Дополнительно, группировка также может давать в результате неровную или неравномерную пространственную дискретизацию данных изображения, которая может корректироваться с использованием фильтрации компенсации группирования, как будет подробнее описано ниже.
Как показано, датчики 90a и 90b изображений могут обеспечивать данные необработанного изображения в качестве сигналов Sif0 и Sif1 соответственно. Каждый из датчиков 90a и 90b изображений в целом может быть связан с соответственными блоками 120 (StatsPipe0) и 122 (StatsPipe1) статистической обработки, которые могут быть выполнены с возможностью обрабатывать данные изображения для определения одного или более наборов статистических данных (как указано сигналами Stats0 и Stats1), включающих в себя статистические данные, относящиеся к автоматическому экспонированию, автоматической балансировке белого, автоматической фокусировке, обнаружению мерцания, компенсации уровня черного и коррекции затенения объектив, и так далее. В некоторых вариантах осуществления, когда только один из датчиков 90a или 90b является активно получающим изображение, данные изображения могут отправляться как в StatsPipe0, так и StatsPipe1, если требуются статистические данные. Например, для предоставления одного из примеров, если StatsPipe0 и StatsPipe1 оба доступны, StatsPipe0 может использоваться для сбора статистических данных для одного цветового пространства (например, RGB), а StatsPipe1 может использоваться для сбора статистических данных для другого цветового пространства (например, YUV или YCbCr). То есть, блоки 120 и 122 статистической обработки могут работать параллельно для сбора многочисленных наборов статистических данных для каждого кадра данных изображения, полученных активным датчиком.
В настоящем варианте осуществления пять асинхронных источников данных предусмотрены в средстве 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) первый блок 120 статистической обработки (StatsPipe0), (4) второй блок 122 статистической обработки (StatsPipe1), (5) блок 130 предварительной обработки пикселей (FEProc) и (6) FeOut (или FEProcOut) в память 108 или конвейер 82 ISP (подробнее описанный ниже). В одном варианте осуществления средство 80 предварительной обработки ISP может быть сконфигурировано так, чтобы только некоторые адресаты были действительны для конкретного источника, как показано в таблице 1, приведенной ниже.
Таблица 1Пример действительных адресатов предварительной обработки ISP для каждого источника
SIf0DMA
SIf1DMA
StatsPipe0
StatsPipe1
FEProc
FEOut
Sens0
X
X
X
X
X
Sens1
X
X
X
X
X
Sens0DMA
X
Sens1DMA
X
ProcInDMA
X
X
Например, в соответствии с таблицей 1, источник Sens0 (интерфейс датчика Sensor0) может быть выполнен с возможностью обеспечивать данные к адресатам: SIf0DMA (сигнал 134), StatsPipe0 (сигнал 136), StatsPipe1 (сигнал 138), FEProc (сигнал 140) или FEOut (сигнал 142). Что касается FEOut, данные источника, в некоторых примерах, могут выдаваться в FEOut, чтобы обходить обработку пикселей посредством FEProc, к примеру, в целях отладки или проверки. Дополнительно, источник Sens1 (интерфейс датчика Sensor1) может быть выполнен с возможностью обеспечивать данные к адресатам: SIf1DMA (сигнал 144), StatsPipe0 (сигнал 146), StatsPipe1 (сигнал 148), FEProc (сигнал 150) или FEOut (сигнал 152), источник Sens0DMA (данные Sensor0 из памяти 108) может быть выполнен с возможностью обеспечивать данные к StatsPipe0 (сигнал 154), источник Sens1DMA (данные Sensor1 из памяти 108) может быть выполнен с возможностью обеспечивать данные к StatsPipe1 (сигнал 156), а источник ProcInDMA (данные Sensor0 и Sensor1 из памяти 108) может быть выполнен с возможностью обеспечивать данные к FEProc (сигнал 158) и FEOut (сигнал 160).
Должно быть отмечено, что иллюстрированный данный вариант осуществления сконфигурирован так, чтобы Sens0DMA (кадры Sensor0 из памяти 108) и Sens1DMA (кадры Sensor1 из памяти 108) обеспечиваются только к StatsPipe0 и StatesPipe1 соответственно. Эта конфигурация предоставляет средству 80 предварительной обработки ISP возможность удерживать некоторое количество предыдущих кадров (например, 5 кадров) в памяти. Например, вследствие задержки или запаздывания между моментом времени, когда пользователь инициирует событие захвата (например, переводя систему изображений из режима предварительного просмотра в режим захвата или записи, или даже посредством простого включения или инициализации датчика изображений) с использованием датчика изображений, до того, когда захвачена сцена изображения, не каждый кадр, который пользователь подразумевает для захвата, может захватываться и обрабатываться по существу в реальном времени. Таким образом, посредством удерживания некоторого количества предыдущих кадров в памяти 108 (например, из предыдущей фазы) эти предыдущие кадры могут обрабатываться позже или бок о бок с кадрами, фактически захваченными в ответ на событие захвата, таким образом компенсируя любое такое запаздывание и обеспечивая более полный набор данных изображения.
Что касается проиллюстрированной конфигурации по фиг. 8, должно быть отмечено, что StatsPipe0 120 сконфигурирован для приема одного из вводов 136 (из Sens0), 146 (из Sens1) и 154 (из Sens0DMA), как определено логикой 124 выбора, такой как мультиплексор. Подобным образом, логика 126 выбора может выбирать ввод из сигналов 138, 156 и 148, чтобы обеспечивать к StatsPipe1, а логика 132 выбора может выбирать ввод из сигналов 140, 150 и 158, чтобы обеспечивать к FEProc. Как упомянуто выше, статистические данные (Stats0 и Stats1) могут обеспечиваться к логике 84 управления для определения различных параметров управления, которые могут использоваться для оперирования устройством 30 формирования изображений и/или логикой 82 обработки конвейера ISP. Как может быть принято во внимание, блоки (120, 122 и 132) логики выбора, показанные на фиг. 8, могут быть предусмотрены любым пригодным типом логики, таким как мультиплексор, который выбирает один из многочисленных входных сигналов в ответ на сигнал управления.
Блок 130 обработки пикселей (FEProc) может быть выполнен с возможностью выполнять различные операции обработки изображений над данными необработанного изображения попиксельно. Как показано, FEProc 130, в качестве блока обработки адресата, может принимать данные изображения из источников Sens0 (сигнал 140), Sens1 (сигнал 150) или ProcInDMA (сигнал 158) в качестве логики 132 выбора. FEProc 130 может принимать и выводить различные сигналы (например, Rin, Hin, Hout и Yout - которые могут представлять историю движения и данные яркости, используемые во время временной фильтрации) при выполнении операций обработки пикселей, которые могут включать в себя временную фильтрацию и фильтрацию компенсации группирования, как будет дополнительно описано ниже. Вывод 109 (FEProcOut) блока 130 обработки пикселей затем может пересылаться к логике 82 конвейера ISP, к примеру, через одну или более очередей с принципом управления первым вошел - первым вышел (FIFO), или может отправляться в память 108.
Кроме того, как показано на фиг. 8, логика 132 выбора, в дополнение к принятию сигналов 140, 150 и 158, дополнительно может принимать сигналы 159 и 161. Сигнал 159 может представлять «заблаговременно обработанные» данные необработанного изображения из StatsPipe0, а сигнал 161 может представлять «заблаговременно обработанные» данные необработанного изображения из StatsPipe1. Как будет описано ниже, каждый из блоков статистической обработки может применять одну или более операций заблаговременной обработки к данным необработанного изображения до сбора статистики. В одном варианте осуществления каждый блок статистической обработки может выполнять некоторую степень обнаружения/коррекции дефектных пикселей, коррекции затенения объектива, компенсации уровня черного и инверсную компенсацию уровня черного. Таким образом, сигналы 159 и 161 могут представлять данные необработанного изображения, которые были обработаны с использованием вышеупомянутых операций заблаговременной обработки (как будет подробнее описано ниже на фиг. 37). Таким образом, логика 132 выбора дает логике 80 предварительной обработки ISP гибкость обеспечения не подвергнутых заблаговременной обработке данных необработанного изображения из Sensor0 (сигнал 140) и Sensor1 (сигнал 150) или подвергнутых заблаговременной обработке данных необработанного изображения из StatsPipe0 (сигнал 159) и StatsPipe1 (сигнал 161). Дополнительно, как показано блоками 162 и 163 логики выбора, логика 80 предварительной обработки ISP также обладает гибкостью записи не подвергнутых заблаговременной обработке данных необработанного изображения из Sensor0 (сигнал 134) или Sensor1 (сигнал 144) в память 108 или записи подвергнутых заблаговременной обработке данных необработанного изображения из StatsPipe0 (сигнал 159) или StatsPipe1 (сигнал 161) в память 108.
Для управления работой логики 80 предварительной обработки ISP предусмотрен блок 164 управления предварительной обработкой. Блок 164 управления может быть выполнен с возможностью инициализировать регистры управления программой (указываемые ссылкой в материалах настоящей заявки как «стартовые регистры») для конфигурирования и запуска обработки кадра изображения и выбирать надлежащий банк(и) регистров для обновления регистров данных с двойной буферизацией. В некоторых вариантах осуществления блок 164 управления также может предусматривать логику контроля производительности, чтобы регистрировать информацию о циклах тактового сигнала, задержке памяти и качестве обслуживания (QOS). Кроме того, блок 164 управления также может управлять динамическим стробированием тактовых сигналов, которое может использоваться для вывода из работы тактовых сигналов для одной или более частей средства 0 предварительной обработки ISP, когда нет достаточных данных во входной очереди из активного датчика.
С использованием «стартовых регистров», упомянутых выше, блок 164 управления может быть способным управлять обновлением различных параметров для каждого из блоков обработки (например, StatsPipe0, StatsPipe1 и FEProc) и может взаимодействовать с интерфейсами датчиков, чтобы управлять запуском и остановкой блоков обработки. Вообще, каждый из блоков предварительной обработки работает на покадровой основе. Как описано выше (таблица 1), ввод в блоки обработки может быть из интерфейса датчика (Sens0 или Sens1) или из памяти 108. Кроме того, блоки обработки могут использовать различные параметры и данные конфигурации, которые могут храниться в соответствующих регистрах данных. В одном варианте осуществления регистры данных, связанные с каждым блоком обработки или адресатом информации, могут группироваться в блоки, образующие группы банка регистров. В варианте осуществления по фиг. 8, семь групп банков регистров могут быть определены в средстве предварительной обработки ISP: SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn. Адресное пространство каждого блока регистров дублируется, чтобы предусматривать два банка регистров. Только регистры, которые имеют двойную буферизацию, проиллюстрированы в качестве примера во втором банке. Если регистр не имеет двойной буферизации, адрес во втором банке может отображаться в адрес того же самого регистра в первом банке.
Что касается регистров, которые имеют двойную буферизацию, регистры из одного банка активны и используются блоками обработки, в то время как регистры из другого банка сделаны теневыми. Теневой регистр может обновляться блоком 164 управления во время текущего интервала, в то время как аппаратное обеспечение использует активные регистры. Определение того, какой банк следует использовать для конкретного блока обработки в конкретном кадре, может предписываться полем «NextBk» (следующего банка) в стартовом регистре, соответствующем источнику, обеспечивающему данные изображения к блоку обработки. По существу, NextBk является полем, которое предоставляет блоку 164 управления возможность управлять, какой банк регистров становится активным после запускающего события для следующего кадра.
До подробного описания работы стартовых регистров, фиг. 9 дает общий способ 166 для обработки данных изображения на покадровой основе в соответствии с настоящими технологиями. Начиная на этапе 168, блоки обработки адресата, заданные (намеченные) источником данных (например, Sens0, Sens1, Sens0DMA, Sens1DMA или ProcInDMA), входят в незанятое состояние. Это может указывать, что обработка для текущего кадра завершена, а потому блок 164 управления может готовиться к обработке следующего кадра. Например, на этапе 170 обновляются программируемые параметры для каждого блока обработки адресата. Это, например, может включать в себя обновление поля NextBk в стартовом регистре, соответствующем источнику, а также обновление любых параметров в регистрах данных, соответствующих блокам адресата. После этого, на этапе 172, запускающее событие может устанавливать блоки адресата в состояние выполнения. Кроме того, как показано на этапе 174, каждый блок адресата, заданный источником, завершает свои операции обработки для текущего кадра, и способ 166 может впоследствии возвращаться на этап 168 для обработки следующего кадра.
Фиг. 10 изображает вид структурной схемы, показывающий два банка регистров 176 и 178 данных, которые могут использоваться различными блоками адресата средства предварительной обработки ISP. Например, банк 0 (176) может включать в себя регистры 1-n данных (176a-176d), и банк 1 (178) может включать в себя регистры 1-n данных (178a-178d). Как описано выше, вариант осуществления, показанный на фиг. 8, может использовать банк регистров (банк 0), имеющий семь групп банков регистров (например, SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn). Таким образом, в таком варианте осуществления адресное пространство блока регистров каждого регистра дублируется, чтобы предоставлять второй банк регистров (банк 1).
Фиг. 10 также иллюстрирует стартовый регистр 180, который может соответствовать одному из источников. Как показано, стартовый регистр 180 включает в себя поле 182 «NextVld» и вышеупомянутое поле 184 «NextBk». Эти поля могут программироваться перед запуском обработки текущего кадра. В частности, NextVld может указывать адресата(ов) информации, куда должны быть отправлены данные из источника. Как описано выше, NextBk может выбирать соответствующий регистр из Bank0 или Bank1 для каждого заданного адресата, как указано посредством NextVld. Хотя не показано на фиг. 10, стартовый регистр 180 также может включать в себя бит приведения в рабочую готовность, указываемый ссылкой в материалах настоящей заявки как «стартовый бит», который может устанавливаться для приведения в рабочую готовность стартового регистра. Когда обнаружено запускающее событие 192 для текущего кадра, NextVld и NextBk могут копироваться в поле 188 CurrVld и поле 190 CurrBk соответствующего текущего или «активного» регистра 186. В одном варианте осуществления текущий регистр(ы) 186 может быть регистрами только для чтения, которые могут устанавливаться аппаратным обеспечением, наряду с пребыванием недоступными для команд программного обеспечения в пределах средства 80 предварительной обработки ISP.
Как будет принято во внимание, для каждого источника предварительной обработки ISP может быть предусмотрен соответствующий стартовый регистр. В целях этого раскрытия, стартовые регистры, соответствующие описанным выше источникам Sens0, Sens1, Sens0DMA, Sens1DMA и ProcInDMA, могут указываться ссылкой как Sens0Go, Sens1Go, Sens0DMAGo, Sens1DMAGo и ProcInDMAGo соответственно. Как упомянуто выше, блок управления может использовать стартовые регистры для управления упорядочением обработки кадров в пределах средства 80 предварительной обработки ISP. Каждый стартовый регистр содержит в себе поле NextVld и поле NextBk, чтобы указывать, какие адресаты будут действительными и какой банк регистров (0 или 1) будет использоваться соответственно для следующего кадра. Когда происходит запускающее событие 192 следующего кадра, поля NextVld и NextBk копируются в соответствующий активный регистр 186 только для чтения, который указывает текущие действительные адресаты и номера банков, как показано выше на фиг. 10. Каждый источник может быть выполнен с возможностью работать асинхронно и может отправлять данные на любой из своих действительных адресатов. Кроме того, должно быть понятно, что, для каждого адресата, обычно только один источник может быть активным во время текущего кадра.
Что касается приведения в рабочую готовность и запуска стартового регистра 180, подтверждение бита приведения в рабочую готовность или «стартового бита» в стартовом регистре 180 приводит в рабочую готовность соответствующий источник с связанными полями NextVld и NextBk. Для запуска различные режимы доступны в зависимости от того, считываются ли входные данные источника из памяти (например, Sens0DMA, Sens1DMA или ProcInDMA) или происходят ли входные данные источника из интерфейса датчика (например, Sens0 или Sens1). Например, если ввод происходит из памяти 108, приведение в рабочую готовность самого стартового бита может служить в качестве запускающего события, поскольку блок 164 управления имеет управление над тем, когда данные считываются из памяти 108. Если кадры изображения вводятся интерфейсом датчика, то запускающее событие может зависеть от установки момента, в который соответствующий стартовый регистр приводится в рабочую готовность относительно того, когда принимаются данные из интерфейса датчика. В соответствии с настоящим вариантом осуществления, три разные технологии для установки момента запуска от входного сигнала интерфейса датчика показаны на фиг. 11-13.
Сначала, со ссылкой на фиг. 11, проиллюстрирован первый сценарий, в котором запуск происходит, как только все адресаты, заданные источником, переходят из состояния занятости или выполнения в состояние незанятости. Здесь, сигнал VVALID данных (196) представляет сигнал данных изображения из источника. Импульс 198 представляет текущий кадр данных изображения, импульс 202 представляет следующий кадр данных изображения, а интервал 200 представляет кадровый интервал 200 гашения (VBLANK) (например, представляет разницу времени между последней строкой текущего кадра 198 и следующим кадром 202). Разница времени между передним фронтом и задним фронтом импульса 198 представляет интервал 201 кадра. Таким образом, на фиг. 11, источник может быть выполнен с возможностью осуществлять запуск, когда все заданные адресаты завершили операции обработки над текущим кадром 198 и переходят в незанятое состояние. В этом сценарии источник приводится в рабочую готовность (например, посредством установки бита приведения в рабочую готовность или «стартового» бита) до того, как адресаты завершают обработку, так что источник может запускать и инициировать обработку следующего кадра 202, как только заданные адресаты переходят в незанятое состояние. Во время кадрового интервала 200 гашения блоки обработки могут настраиваться и конфигурироваться для следующего кадра 202 с использованием банков регистров, предписанных стартовым регистром, соответствующим источнику, до того, как прибывают входные данные источника. Исключительно в качестве примера, буферы чтения, используемые посредством FEProc 130, могут заполняться до того, как прибывает следующий кадр 202. В этом случае теневые регистры, соответствующие активным банкам регистров, могут обновляться после запускающего события, таким образом предусматривая полный интервал кадра для настройки регистров с двойной буферизацией для следующего кадра (например, после кадра 202).
Фиг. 12 иллюстрирует второй сценарий, в котором источник запускается посредством приведения в рабочую готовность стартового бита в стартовом регистре, соответствующем источнику. При этой конфигурации «запуска по старту» блоки адресата, заданные источником, уже незаняты и приведение стартового бита в рабочую готовность является запускающим событием. Этот режим запуска может использоваться для регистров, которые не имеют двойной буферизации, а потому обновляются во время кадрового гашения (например, в противоположность теневому регистру с двойной буферизацией во время интервала 201 кадра).
Фиг. 13 иллюстрирует третий режим запуска, в котором источник запускается после обнаружения начала следующего кадра, то есть нарастающего VSYNC. Однако должно быть отмечено, что в этом режиме, если стартовый регистр приведен в рабочую готовность (посредством установки стартового бита) после того, как следующий кадр 202 уже начал обработку, источник будет использовать целевые адресаты и банки регистров, соответствующие предыдущему кадру, поскольку поля CurrVld и CurrBk не обновлены до начальной обработки адресата. Это не оставляет кадрового интервала гашения для настройки блоков обработки адресата и может потенциально иметь следствием отброшенные кадры, в частности, при работе в режиме сдвоенного датчика. Должно быть отмечено, однако, что этот режим, тем не менее, может давать в результате точную работу, если схемы 32 обработки изображений являются работающими в режиме одиночного датчика, который использует одни и те же банки регистров для каждого кадра (например, адресат (NextVld) и банки регистров (NextBk) не изменяются).
Далее, со ссылкой на фиг. 14, регистр 180 управления (или «стартовый регистр») проиллюстрирован подробнее. Стартовый регистр 180 включает в себя «стартовый» бит 204 приведения в рабочую готовность, а также поля 182 NextVld и поля 184 NextBk. Как описано выше, каждый источник (например, Sens0, Sens1, Sens0DMA, Sens1DMA или ProcInDMA) средства 80 предварительной обработки ISP может иметь соответствующий стартовый регистр 180. В одном варианте осуществления стартовый бит 204 может быть однобитным полем, а стартовый регистр 180 может приводиться в рабочую готовность посредством установки стартового бита 204 в 1. Поле 182 NextVld может содержать в себе некоторое количество битов, соответствующих количеству адресатов в средстве предварительной обработки ISP. Например, в варианте осуществления, показанном на фиг. 8, средство предварительной обработки ISP включают в себя шесть адресатов: Sif0DMA, Sif1DMA, StatsPipe0, StatsPipe1, FEProc и FEOut. Таким образом, стартовый регистр 180 может включать в себя шесть битов в поле 182 NextVld с одним битом, соответствующим каждому адресату, и при этом заданные адресаты установлены в 1. Подобным образом, поле 182 NextBk может содержать в себе некоторое количество битов, соответствующих количеству регистров данных в средстве 80 предварительной обработки ISP. Например, как описано выше, вариант осуществления средства 80 предварительной обработки ISP, показанного на фиг. 8, может включать в себя семь регистров данных: SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut и ProcIn. Соответственно, поле 184 NextBk может включать в себя семь битов, с одним битом, соответствующим каждому регистру данных, и при этом регистры данных, соответствующие банку 0 и 1, выбираются посредством установки значений их соответствующих битов в 0 или 1 соответственно. Таким образом, с использованием стартового регистра 180 источник по запуску точно знает, какие блоки адресата должны принимать данные кадра и какие банки регистра должны использоваться для конфигурирования заданных блоков адресата.
Дополнительно, вследствие конфигурации со сдвоенным датчиком, поддерживаемым схемами 32 ISP, средство предварительной обработки ISP может работать в режиме конфигурации с одиночным датчиком (например, только один датчик является получающим данные) и режиме конфигурации со сдвоенным датчиком (например, оба датчика являются получающими данные). В типичной конфигурации с одиночным датчиком входные данные из интерфейса датчика, такого как Sens0, отправляются к StatsPipe0 (для статистической обработки) и FEProc (для обработки пикселей). В дополнение, кадры датчика также могут отправляться в память (SIf0DMA) для будущей обработки, описанной выше.
Пример того, каким образом поля NextVld, соответствующие каждому источнику средства 80 предварительной обработки ISP, могут быть сконфигурированы при работе в режиме одиночного датчика, изображен ниже в таблице 2.
Как описано выше со ссылкой на таблицу 1, средство 80 предварительной обработки ISP может быть сконфигурировано так, чтобы только некоторые адресаты были действительными для конкретного источника. Таким образом, адресаты в таблице 2, помеченные «X», предназначены для указания, что средство 80 предварительной обработки ISP не сконфигурировано, чтобы предоставлять конкретному источнику возможность отправлять данные кадра к такому адресату информации. Для таких адресатов биты поля NextVld конкретного источника, соответствующего такому адресату информации, всегда могут иметь значение 0. Должно быть понятно, однако, что это является всего лишь одним из вариантов осуществления и, в действительности, в других вариантах осуществления средство 80 предварительной обработки ISP может быть сконфигурировано так, чтобы каждый источник был способным задавать каждый имеющийся в распоряжении блок адресата.
Конфигурация, показанная выше в таблице 2, представляет режим одиночного датчика, в котором только Sensor0 обеспечивает данные кадра. Например, регистр Sens0Go указывает адресатов в качестве являющихся SIf0DMA, StatsPipe0 и FEProc. Таким образом, при запуске каждый кадр данных изображения Sensor0 отправляется к этим трем адресатам. Как описано выше, SIf0DMA может сохранять кадры в памяти 108 для более поздней обработки, StatsPipe0 применяет статистическую обработку для определения различных статистических точек данных, а FEProc обрабатывает кадр, например, с использованием временной фильтрации и фильтрации компенсации группирования. Кроме того, в некоторых конфигурациях, где требуются дополнительные статистические данные (например, статистические данные в разных цветовых пространствах), StatsPipe1 также может быть задействован (в соответствии с NextVld, установленным 1) во время режима одиночного датчика. В таких вариантах осуществления данные кадра Sensor0 отправляются как к StatsPipe0, так и к StatsPipe1. Кроме того, как показано в настоящем варианте осуществления, интерфейс только одного датчика (например, Sens0 или, в качестве альтернативы, Sen0) является единственным активным источником во время режима одиночного датчика.
Имея это ввиду, фиг. 15 предоставляет блок-схему последовательности операций способа, изображающую способ 206 для обработки данных кадра в средстве 80 предварительной обработки ISP, когда активен только один датчик (например, Sensor0). Несмотря на то что способ 206 иллюстрирует, в частности, обработку данных кадра Sensor0 посредством FEProc 130 в качестве примера, должно быть понятно, что эта обработка может применяться к любому другому источнику и соответствующему блоку адресата в средстве 80 предварительной обработки ISP. Начиная на этапе 208, Sensor0 начинает сбор данных изображения и отправку захваченных кадров к средству 80 предварительной обработки ISP. Блок 164 управления может инициализировать программирование стартового регистра, соответствующего Sens0 (интерфейсу Sensor0), чтобы определять целевые адресаты (в том числе, FEProc) и какие регистры банка использовать, как показано на этапе 210. После этого логика 212 решений определяет, произошло ли запускающее источник событие. Как описано выше, данные кадра, введенные из интерфейса датчика, могут использовать разные режимы запуска (фиг. 11-13). Если запускающее событие не обнаружено, обработка 206 продолжается, чтобы ожидать запуска. Как только происходит запуск, следующий кадр становится текущим кадром и отправляется к FEProc (и другим целевым адресатам) для обработки на этапе 214. FEProc может конфигурироваться с использованием параметров данных на основании соответствующего регистра данных (ProcPipe) предписанного в поле NextBk регистра Sens0Go. После того как обработка текущего кадра завершена на этапе 216, способ 206 может возвращаться на этап 210, на котором регистр Sens0Go программируется для следующего кадра.
Когда и Sensor0, и Sensor1 средства 80 предварительной обработки ISP оба активны, статистическая обработка остается в целом простой, поскольку каждый ввод датчика может обрабатываться соответственным блоком статистики, StatsPipe0 и StatsPipe1. Однако, так как проиллюстрированный вариант осуществления средства 80 предварительной обработки ISP предусматривает всего лишь одиночный блок обработки пикселей (FEProc), FEProc может быть выполнен с возможностью переключаться между обработкой кадров, соответствующих входным данным Sensor0, и кадров, соответствующих входным данным Sensor1. Как будет принято во внимание, кадры изображения считываются из FEProc в проиллюстрированном варианте осуществления, чтобы избежать состояния, в котором данные изображения из одного датчика обрабатываются в реальном времени наряду с тем, что данные изображения с другого датчика не обрабатываются в реальном времени. Например, как показано в таблице 3, приведенной ниже, которая изображает одну из возможных конфигураций полей NextVld в стартовых регистрах для каждого источника, когда средство 80 предварительной обработки ISP работает в режиме сдвоенного датчика, входные данные из каждого датчика отправляются в память (SIf0DMA и SIf1DMA) и к соответствующему блоку статистической обработки (StatsPipe0 и StatsPipe1).
Таблица 3Пример NextVld для каждого источника: Режим сдвоенного датчика
SIf0DMA
SIf1DMA
StatsPipe0
StatsPipe1
FEProc
FEOut
Sens0Go
1
X
1
0
0
0
Sens1Go
X
1
0
1
0
0
Sens0DMAGo
X
X
0
X
X
X
Sens1DMAGo
X
X
X
0
X
X
ProcInDMAGo
X
X
X
X
1
0
Кадры датчика в памяти отправляются к FEProc из источника ProcInDMA так, чтобы они перемежались между Sensor0 и Sensor1 с частотой, основанной на их соответствующих частотах кадров. Например, если Sensor0 и Sensor1 оба являются собирающими данные изображения с частотой 30 кадров в секунду (fps), то их кадры датчика могут перемежаться 1 к 1. Если Sensor0 (30 fps) является получающим данные изображения с удвоенной частотой Sensor1 (15 fps), то перемежение, например, может иметь значение 2 к 1. То есть, два кадра данных Sensor0 считываются из памяти для каждого одного кадра данных Sensor1.
Фиг. 16 изображает способ 220 для обработки данных кадра в средстве 80 предварительной обработки ISP, имеющем два датчика, одновременно получающих данные изображения. На этапе 222, как Sensor0, так и Sensor1 начинают сбор кадров изображения. Как будет принято во внимание, Sensor0 и Sensor1 могут получать кадры изображения с использованием разных частот кадров, разрешений и так далее. На этапе 224, собранные кадры с Sensor0 и Sensor1, записанные в память 108 (например, с использованием адресатов SIf0DMA и SIf1DMA). Затем источник ProcInDMA считывает данные кадра из памяти 108 перемежающимся образом, как указано на этапе 226. Как описано, кадры могут перемежаться между данными Sensor0 и данными Sensor1 в зависимости от частоты кадра, с которой собираются данные. На этапе 228, получается следующий кадр из ProcInDMA. После этого на этапе 230, поля NextVld и NextBk стартового регистра, соответствующего источнику, здесь - ProcInDMA, программируются в зависимости от того, является ли следующий кадр данными Sensor0 или Sensor1. После этого, логика 232 решений определяет, произошло ли запускающее источник событие. Как описано выше, данные, введенные из памяти, могут запускаться посредством приведения в рабочую готовность стартового бита (например, режима «запуска по старту»). Таким образом, запуск может происходить, как только стартовый бит стартового регистра установлен в 1. Как только происходит запуск, следующий кадр становится текущим кадром и отправляется к FEProc для обработки на этапе 234. Как описано выше, FEProc может конфигурироваться с использованием параметров данных на основании соответствующего регистра данных (ProcPipe) предписанного в поле NextBk регистра ProcInDMAGo. После того как обработка текущего кадра завершена на этапе 236, способ 220 может возвращаться на этап 228 и продолжать движение.
Дополнительное рабочее событие, которое средство 80 предварительной обработки ISP выполнено с возможностью обрабатывать, является изменением конфигурации во время обработки изображений. Например, такое событие может возникать, когда средство 80 предварительной обработки ISP переключается с конфигурации с одиночным датчиком на конфигурацию со сдвоенным датчиком, или наоборот. Как описано выше, поля NextVld для некоторых источников могут быть разными в зависимости от того, активно ли одно или оба датчика изображений. Таким образом, когда конфигурация датчиков изменяется, блок 164 управления предварительной обработкой ISP может освобождать все блоки адресата до того, как они заданы новым источником. Это может избегать недействительных конфигураций (например, назначения многочисленных источников на один адресат информации). В одном варианте осуществления освобождение блоков адресата может выполняться посредством установки полей NextVld всех из стартовых регистров в 0, таким образом, вывода из работы всех адресатов, и приведения в рабочую готовность стартового бита. После того как блоки адресата освобождены, стартовые регистры могут реконфигурироваться в зависимости от текущего режима датчика и обработка изображений может продолжаться.
Способ 240 для переключения между конфигурациями с одиночным и сдвоенным датчиком показан на фиг. 17, в соответствии с одним вариантом осуществления. Начиная с этапа 242, идентифицируется следующий кадр данных изображения из конкретного источника средства 80 предварительной обработки ISP. На этапе 244 целевые адресаты (NextVld) программируются в стартовом регистре, соответствующем источнику. Затем, на этапе 246 в зависимости от целевых адресатов, NextBk программируется, чтобы указывать на правильные регистры данных, связанные с целевыми адресатами информации. После этого логика 248 решений определяет, произошло ли запускающее источник событие. Как только происходит запуск, следующий кадр отправляется к блокам адресата, заданным посредством NextVld, и обрабатывается блоками адресата с использованием соответствующих регистров данных, предписанных посредством NextBk, как показано на этапе 250. Обработка продолжается до этапа 252, на котором обработка текущего кадра завершается.
Затем логика 254 решений определяет, есть ли изменение целевых адресатов для источника. Как описано выше, настройки NextVld стартовых регистров, соответствующих Sens0 и Sens1, могут меняться в зависимости от того, активны ли один датчик или два датчика. Например, со ссылкой на таблицу 2, если активен только Sensor0, данные Sensor0 отправляются к SIf0DMA, StatsPipe0 и FEProc. Однако, со ссылкой на таблицу 3, если оба датчика Sensor0 и Sensor1 активны, то данные Sensor0 не отправляются непосредственно к FEProc. Взамен, как упомянуто выше, данные Sensor0 и Sensor1 записываются в память 108 и считываются в FEProc перемежающимся образом источником ProcInDMA. Таким образом, если никакого изменения адресата не обнаружено в логике 254 решений, блок 164 управления делает вывод, что конфигурация датчика не изменилась, и способ 240 возвращается на этап 246, где поле NextBk стартового регистра источника программируется, чтобы указывать на правильные регистры данных для следующего кадра, и продолжает движение.
Однако, если в логике 254 решений обнаружено изменение адресата, то блок 164 управления определяет, что произошло изменение конфигурации датчика. Например, это могло бы представлять собой переключение из режима одиночного датчика в режим сдвоенного датчика, или отключение датчиков в целом. Соответственно, способ 240 продолжается до этапа 256, на котором все биты полей NextVld для всех стартовых регистров устанавливаются в 0, таким образом, практически выводя из работы отправку кадров к какому бы то ни было адресату по следующему пусковому сигналу. Затем, в логике 258 решений, производится определение в отношении того, все ли блоки назначения перешли в состояние незанятости. Если нет, способ 240 ожидает, на логике 258 решений, до тех пор, пока все блоки адресата не завершили свои текущие операции. Затем, в логике 260 решений, производится определение в отношении того, должна ли продолжаться обработка изображений. Например, если изменение адресата, представленное выводом из работы как Sensor0, так и Sensor1, то обработка изображений заканчивается на этапе 262. Однако, если определено, что обработка изображений должна продолжаться, то способ 240 возвращается на этап 244, и поля NextVld стартовых регистров программируются в соответствии с текущим режимом работы (например, одиночного датчика или сдвоенного датчика). Как здесь показано, этапы 254-262 для очистки стартовых регистров и полей адресата могут совместно указываться номером 264 ссылки.
Затем, фиг. 18 показывает дополнительный вариант осуществления в качестве блок-схемы последовательности операций способа (способ 265), который предусматривает другой режим работы, сдвоенного датчика. Способ 265 изображает состояние, в котором один датчик (например, Sensor0) является активно собирающим данные изображения и отправляющим кадры изображения к FEProc 130 для обработки, также наряду с отправкой кадров изображения в StatsPipe0 и/или память 108 (Sif0DMA), наряду с тем, что другой датчик (например, Sensor1) является неактивным (например, отключенным, как показано на этапе 266. Логика 268 решений затем обнаруживает условие, в котором Sensor1 станет активным в следующем кадре для отправки данных изображения к FEProc. Если это условие не удовлетворено, то способ 265 возвращается на этап 266. Однако если это условие удовлетворено, то способ 265 продолжает движение, выполняя действие 264 (совместно, этапы 254-262 по фиг. 17), в силу чего поля адресата источников очищаются и реконфигурируются на этапе 264. Например, на этапе 264, поле NextVld стартового регистра, связанного с Sensor1, может программироваться, чтобы предписывать FEProc в качестве адресата, а также StatsPipe1 и/или память (Sif1DMA), наряду с тем, что поле NextVld стартового регистра, связанного с Sensor0, может программироваться, чтобы очищать FEProc в качестве адресата. В этом варианте осуществления, хотя кадры, захваченные посредством Sensor0, не должны отправляться к FEProc в следующем кадре, Sensor0 может оставаться активным и продолжать отправлять свои кадры изображения к StatsPipe0, как показано на этапе 270, наряду с тем, что Sensor1 захватывает и отправляет данные к FEProc для обработки на этапе 272. Таким образом, оба датчика, Sensor0 и Sensor1, могут продолжать работать в этом режиме «сдвоенного датчика», хотя только кадры изображения из одного датчика отправляются к FEProc для обработки. В целях этого примера, датчик, отправляющий кадры к FEProc для обработки, может указываться ссылкой как «активный датчик», датчик, которые не отправляет кадры FEProc, но по-прежнему является отправляющим данные к блокам статистической обработки, может указываться ссылкой как «полуактивный датчик», а датчик, который вообще не собирает данные, может указываться ссылкой как «неактивный датчик».
Одно из преимуществ вышеизложенной технологии состоит в том, что, так как статистические данные продолжают собираться для полуактивного датчика (Sensor0), в следующий раз, когда полуактивный датчик переходит в активное состояние, а текущий активный датчик (Sensor1) переходит в полуактивное или неактивное состояние, полуактивный датчик может начинать сбор данных в пределах одного кадра, поскольку цветовой баланс и параметры экспонирования уже могут быть доступными вследствие продолжающегося сбора статистических данных изображения. Эта технология может указываться ссылкой как «горячая коммутация» датчиков изображений и избегает недостатков, связанных с «холодными запусками» датчиков изображений (например, запуска без имеющейся в распоряжении статистической информации). Кроме того, для сбережения энергии, поскольку каждый источник является асинхронным (как упомянуто выше), полуактивный датчик может работать на пониженной частоте тактирования и/или кадров во время полуактивного периода.
Перед продолжением более подробного описания операций статистической обработки и обработки пикселей, изображенных в логике 80 предварительной обработки ISP по фиг. 8 ISP, предполагается, что краткое введение касательно определений различных областей кадра поможет облегчить лучшее понимание настоящего предмета изобретения. Имея это ввиду, различные области кадра, которые могут быть заданы в пределах кадра источника изображений, проиллюстрированы на фиг. 19. Формат кадра источника, обеспечиваемого к схемам 32 обработки изображений, может использовать мозаичный или линейный режимы адресации, описанные выше, которые могут использовать форматы пикселей в пределах 8, 10, 12 или 14-битной точности. Кадр 274 источника изображений, как показано на фиг. 19, может включать в себя область 276 кадра датчика, область 276 необработанного кадра и активную область 278. Кадр 276 датчика обычно является максимальным размером кадра, который датчик 90 изображений может выдавать в схемы 32 обработки изображений. Область 278 необработанного кадра может быть определена в качестве области кадра 276 источника, который отправляется к логике 80 предварительной обработки ISP. Активная область 280 может быть определена в качестве участка кадра 274 источника, типично, в пределах области 278 необработанного кадра, над которой выполняется обработка для конкретной операции обработки изображений. В соответствии с вариантами осуществления настоящей технологии, такая активная область 280 может быть одинаковой или может быть разной для разных операций обработки изображений.
В соответствии с аспектами настоящей технологии, логика 80 предварительной обработки ISP принимает только необработанный кадр 278. Таким образом, в целях настоящего описания, глобальный размер кадра для логики 80 предварительной обработки ISP может предполагаться в качестве размера необработанного кадра, как определено шириной 282 и высотой 284. В некоторых вариантах осуществления смещение от границ кадра 276 датчика до необработанного кадра 278 может определяться и/или сохраняться логикой 84 управления. Например, логика 84 управления может включать в себя микропрограммы, которые могут определять область 278 необработанного кадра на основании входных параметров, таких как смещение по x 286 и смещение по y 288, которые предписаны относительно кадра 276 датчика. Кроме того, в некоторых случаях блок обработки в пределах логики 80 предварительной обработки ISP или логики 82 конвейера ISP может иметь определенную активную область, так что пиксели в необработанном кадре, но вне активной области 280, не будут обрабатываться, то есть остаются неизменными. Например, активная область 280 для конкретного блока обработки, имеющая ширину 290 и высоту 292, может быть определена на основании смещения по x 294 и смещения по y 296 относительно необработанного кадра 278. Кроме того, в тех случаях, когда активная область не определена конкретно, один вариант осуществления схем 32 обработки изображений может допускать, чтобы активная область 280 была такой же как необработанный кадр 278 (например, смещение по x 294 и смещение по y 296 оба равны 0). Таким образом, в целях операций обработки изображений, выполняемых над данными изображения, граничные условия могут быть определены в отношении границ необработанного кадра 278 или активной области 280.
Держа эти моменты в уме и со ссылкой на фиг. 20, проиллюстрирован более детализированный вид логики 130 предварительной обработки пикселей ISP (описанной ранее на фиг. 8), в соответствии с вариантом осуществления настоящей технологии. Как показано, логика 130 предварительной обработки пикселей ISP включает в себя временной фильтр 298 и фильтр 300 компенсации группирования. Временной фильтр 298 может принимать один из входных сигналов Sif0, Sif1, FEProcIn изображения или заблаговременно обработанные сигналы изображения (например, 159, 161) и может оперировать необработанными пиксельными данными до того, как выполняется какая бы то ни было дополнительная обработка. Например, временной фильтр 298 сначала может обрабатывать данные изображения для подавления шума посредством усреднения кадров изображения во временном направлении. Фильтр 300 компенсации группирования, который подробнее описан ниже, может применять масштабирование и передискретизацию к данным сгруппированного необработанного изображения из датчика изображений (например, 90a, 90b), чтобы сохранять равномерное пространственное распределение пикселей изображения.
Временной фильтр 298 может быть приспосабливающимся к пикселю на основании характеристик движения и яркости. Например, когда движение пикселя является высоким, интенсивность фильтрации может снижаться, для того чтобы избежать появления «формирования следа» или «артефактов двоения изображения» в результирующем обработанном изображении, тогда как интенсивность фильтрации может повышаться, когда обнаружено небольшое или отсутствие движения. Дополнительно, интенсивность фильтрации также может настраиваться на основании данных яркости (например «яркости»). Например, по мере того, как яркость изображения возрастает, артефакты фильтрации могут становиться более заметными человеческому глазу. Таким образом, интенсивность фильтрации может дополнительно снижаться, когда пиксель имеет высокий уровень яркости.
При применении временной фильтрации временной фильтр 298 может принимать данные опорного пикселя (Rin) и входные данные истории движения (Hin), которые могут быть из предыдущего фильтрованного или исходного кадра. С использованием этих параметров временной фильтр 298 может обеспечивать выходные данные истории движения (Hout) и фильтрованный вывод пикселя (Yout). Фильтрованный вывод Yout пикселя затем пропускается в фильтр 300 компенсации группирования, который может быть выполнен с возможностью выполнять одну или более операций масштабирования над фильтрованными выходными данными Yout пикселя, чтобы вырабатывать выходной сигнал FEProcOut. Обработанные пиксельные данные FEProcOut затем могут пересылаться к логике 82 конвейерной обработки ISP, как описано выше.
Со ссылкой на фиг. 21, проиллюстрирована схема последовательности операций, изображающая обработку 302 временной фильтрации, которая может выполняться временным фильтром, показанным на фиг. 20, в соответствии с первым вариантом осуществления. Временной фильтр 298 может включать в себя 2-отводный фильтр, в котором коэффициенты фильтра адаптивно настраиваются на попиксельной основе, по меньшей мере частично, на основании данных движения и яркости. Например, входные пиксели x(t), с переменной «t», обозначающей временное значение, могут сравниваться с опорными пикселями r(t-1) в фильтрованном ранее кадре или предыдущем исходном кадре для формирования индексного поиска движения в таблице 304 истории движения (M) 304, которая может содержать в себе коэффициенты фильтра. Дополнительно, на основании входных данных h(t-1) истории движения может определяться вывод h(t) истории движения, соответствующий текущему входному пикселю x(t).
Вывод h(t) истории движения и коэффициент фильтра, K, могут определяться на основании дельты d(j,i,t) движения, при этом (j,i) представляют координаты пространственного расположения текущего пикселя x(j,i,t). Дельта d(j,i,t) движения может вычисляться посредством определения максимум трех абсолютных дельт между исходным и опорными пикселями для трех горизонтально совместно расположенных пикселей одного и того же цвета. Например, с краткой ссылкой на фиг. 22, проиллюстрированы пространственные расположения трех совместно расположенных опорных пикселей 308, 309 и 310, которые соответствуют исходным входным пикселям 312, 313 и 314. В одном варианте осуществления, дельта движения может вычисляться на основании этих исходных и опорных пикселей с использованием формулы, приведенной ниже:
<mtable columnalign="left"><mtr><mtd><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>max</mi><mn>3</mn><mo stretchy="false">[</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mtd></mtr></mtable>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(1a)
Блок-схема последовательности операций, изображающая эту технологию для определения значения дельты движения, дополнительно проиллюстрирована ниже на фиг. 24. Кроме того, должно быть понятно, что технология для вычисления значения дельты движения, как показано выше в уравнении 1a (и ниже на фиг. 24), предназначена только для предоставления одного из вариантов осуществления для определения значения дельты движения.
В других вариантах осуществления массив пикселей одинакового цвета мог бы оцениваться для определения значения дельты движения. Например, в дополнение к трем пикселям, указанным ссылкой в уравнении 1a, один вариант осуществления для определения значений дельты движения также может включать в себя оценку абсолютных дельт между пикселями одного цвета из двух строк выше (например, j-2; при условии структуры Байера) опорных пикселей 312, 313 и 314 и их соответствующими совместно расположенными пикселями и двух строк ниже (например, j+2; при условии структуры Байера) опорных пикселей 312, 313 и 314 и их соответствующими совместно расположенными пикселями. Например, в одном варианте осуществления, значение дельты движения может быть выражено, как изложено ниже:
<mtable columnalign="left"><mtr><mtd><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>max</mi><mn>9</mn><mo stretchy="false">[</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>−</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>,</mo></mtd></mtr><mtr><mtd><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo>+</mo><mn>2,</mn><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mtd></mtr></mtable>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(1b)
Таким образом, в варианте осуществления, изображенном посредством уравнения 1b, значение дельты движения может определяться посредством сравнения абсолютной дельты между массивом 3x3 пикселей одного цвета с текущим пикселем (313), являющимся расположенным в центре массива 3x3 (например, вообще говоря, массив 5x5 для цветовых структур Байера, если принимаются во внимание пиксели разных цветов). Должно быть принято во внимание, что любой двумерный массив пикселей одинакового цвета (в том числе, например, массивы, имеющие все пиксели в одной и той же строке (например, уравнение 1a), или массивы, имеющие все пиксели в одном и том же столбце) с текущим пикселем (например, 313), являющимся расположенным в центре массива, мог бы анализироваться для определения значения дельты движения. Кроме того, несмотря на то что значение дельты могло бы определяться в качестве минимума абсолютных дельт (например, как показано в уравнениях 1a и 1b), в других вариантах осуществления значение дельты движения также могло бы выбираться в качестве среднего значения или медианы абсолютных дельт. Дополнительно, вышеизложенные технологии также могут применяться к другим типам матриц цветового фильтра (например, RGBW, CYGM и т.д.) и не подразумеваются исключительными для структур Байера.
Возвращаясь к фиг. 21, как только значение дельты движения определено, индексный поиск движения, который может использоваться для выбранного коэффициента K фильтра из таблицы 304 движения (M), может вычисляться посредством суммирования дельты d(t) для текущего пикселя (например, в пространственном расположении (j,i)) с входным сигналом h(t-1) истории движения. Например, коэффициент K фильтра может определяться, как изложено ниже:
<mrow><mi>K</mi><mo>=</mo><mi>M</mi><mo stretchy="false">[</mo><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>+</mo><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(2a)
Дополнительно, вывод h(t) истории движения может определяться с использованием следующей формулы:
<mrow><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mi>K</mi><mo stretchy="false">)</mo><mo>×</mo><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(3a)
Затем яркость текущего входного пикселя x(t) может использоваться для формирования индексного поиска яркости в таблице 306 яркости (L). В одном варианте осуществления, таблица яркости может содержать в себе коэффициенты ослабления, которые могут находиться между 0 и 1 и могут выбираться на основании индекса яркости. Второй коэффициент фильтра, K', может вычисляться умножением первого коэффициента K фильтра на коэффициент ослабления яркости, как показано в следующем уравнении:
<mrow><mi>K</mi><mo>'</mo><mo>=</mo><mi>K</mi><mo>×</mo><mi>L</mi><mo stretchy="false">[</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(4a)
Определенное значение для K' затем может использоваться в качестве коэффициента фильтрации для временного фильтра 298. Как описано выше, временной фильтр 298 может быть 2-отводным фильтром. Дополнительно, временной фильтр 298 может быть сконфигурирован в качестве фильтра с бесконечной импульсной характеристикой (БИХ, IIR) с использованием предыдущего фильтрованного кадра или в качестве фильтра с конечной импульсной характеристикой (КИХ, FIR) с использованием предыдущего исходного кадра. Временной фильтр 298 может вычислять фильтрованный выходной пиксель y(t) (Yout) с использованием текущего входного пикселя x(t), опорного пикселя r(t-1) и коэффициента K' фильтра с использованием следующей формулы:
<mrow><mi>y</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>+</mo><mi>K</mi><mo>'</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(5a)
Как описано выше, обработка 302 временной фильтрации, показанная на фиг. 21, может выполняться на основе пиксель за пикселем. В одном варианте осуществления одна и те же таблица M движения и таблица L яркости могут использоваться для всех цветовых компонент (например, R, G и B). Дополнительно, некоторые варианты осуществления могут предусматривать механизм обхода, в котором временная фильтрация может обходиться, к примеру, в ответ на сигнал управления из логики 84 управления. Кроме того, как описано ниже со ссылкой на фиг. 26 и 27, один вариант осуществления временного фильтра 298 может использовать отдельные таблицы движения и яркости для каждой цветовой компоненты данных изображения.
Вариант осуществления технологии временной фильтрации, описанной со ссылкой на фиг. 21 и 22, может быть лучше понятен, принимая во внимание фиг. 23, которая изображает блок-схему последовательности операций способа, иллюстрирующую способ 315, в соответствии с описанным выше вариантом осуществления. Способ 315 начинается на этапе 316, на котором текущий пиксель x(t), расположенный в пространственном расположении (j,i) текущего кадра данных изображения, принимается системой 302 временной фильтрации. На этапе 317, значение d(t) дельты движения определяется для текущего пикселя x(t), по меньшей мере частично, на основании одного или более совместно расположенных опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Технология для определения значения d(t) дельты движения на этапе 317 дополнительно пояснена ниже со ссылкой на фиг. 24 и может выполняться в соответствии с уравнением 1a, как показано выше.
Как только получено значение d(t) дельты движения с этапа 317, индекс табличного поиска движения может определяться с использованием значения d(t) дельты движения и входного значения h(t-1) истории движения, соответствующих пространственному расположению (j,i) из предыдущего кадра, как показано на этапе 318. Дополнительно, хотя и не показано, значение h(t) истории движения, соответствующее текущему пикселю x(t), также может определяться на этапе 318, как только известно значение d(t) дельты движения, например, посредством использования уравнения 3a, показанного выше. После этого, на этапе 319, первый коэффициент K фильтра может выбираться из таблицы 304 движения с использованием индекса табличного поиска с этапа 318. Определение индекса табличного поиска движения и выбора первого коэффициента K фильтра из таблицы движения могут выполняться в соответствии с уравнением 2a, как показано выше.
Затем, на этапе 320, коэффициент ослабления может выбираться из таблицы 306 яркости. Например, таблица 306 яркости может содержать в себе коэффициенты ослабления, находящиеся в диапазоне между приблизительно 0 и 1, и коэффициент ослабления может выбираться из таблицы 306 яркости с использованием значения текущего пикселя x(t) в качестве справочной таблицы. Как только выбран коэффициент ослабления, второй коэффициент K' фильтра может определяться на этапе 321 с использованием выбранного коэффициента ослабления и первого коэффициента K фильтра (с этапа 319), как показано в уравнении 4a, приведенном выше. Затем, на этапе 322, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтра (с этапа 320), значения совместно расположенного опорного пикселя r(t-1) и значения входного пикселя x(t). Например, в одном варианте осуществления, выходное значение y(t) может определяться в соответствии с уравнением 5a, как показано выше.
Со ссылкой на фиг. 24, подробнее проиллюстрирован этап 317 для определения значения d(t) дельты движения из способа 315 в соответствии с одним вариантом осуществления. В частности, определение значения d(t) дельты движения в целом может соответствовать операции, изображенной выше в соответствии с уравнением 1a. Как показано, этап 317 может включать в себя подэтапы 324-327. Начиная с подэтапа 324, идентифицируется набор из трех горизонтально смежных пикселей, имеющих такое же значение цвета, как текущий входной пиксель x(t). В качестве примера, в соответствии с вариантом осуществления, показанным на фиг. 22, данные изображения могут включать в себя данные изображения Байера, а три горизонтально смежных пикселя могут включать в себя текущий входной пиксель x(t) (313), второй пиксель 312 того же цвета слева от текущего входного пикселя 313 и третий пиксель того же самого цвета справа от текущего входного пикселя 313.
Затем, на подэтапе 325, идентифицируются три совместно расположенных опорных пикселя 308, 309 и 310 из предыдущего кадра, соответствующих выбранному набору трех горизонтально смежных пикселей 312, 313 и 314. С использованием выбранных пикселей 312, 313 и 314, а также трех совместно расположенных опорных пикселей 308, 309 и 310 абсолютные значение разностей между каждым из трех выбранных пикселей 312, 313 и 314 и их соответствующих совместно расположенных опорных пикселей 308, 309 и 310 соответственно определяются на подэтапе 326. Затем на подэтапе 327 максимальное значение из трех разниц с подэтапа 326 выбирается в качестве значения d(t) дельты движения для текущего входного пикселя x(t). Как описано выше, фиг. 24, которая иллюстрирует технологию вычисления значения дельты движения, показанную в уравнении 1a, предназначена только для предоставления одного из вариантов осуществления. В действительности, как описано выше, любой двухмерный массив пикселей одинакового цвета с текущим пикселем, являющимся помещенным в центре массива, может использоваться для определения значения дельты движения (например, уравнение 1b).
Еще один вариант осуществления технологии для применения временной фильтрации к данным изображения дополнительно изображен на фиг. 25. Например, поскольку отношение сигнал/шум для разных цветовых компонент данных изображения может быть разным, коэффициент усиления может применяться к текущему пикселю так, чтобы текущий пиксель усиливался до выбора значений движения и яркости из таблицы 304 движения и таблицы 306 яркости. Посредством применения соответственного коэффициента усиления, который является зависящим от цвета, отношение сигнал/шум может быть в большей степени совместимым среди разных цветовых компонент. Только в качестве примера, в реализации, которая использует данные необработанного изображения Байера, каналы красного и синего цветов могут быть в целом более чувствительными по сравнению с каналами зеленого (Gr и Gb) цвета. Таким образом, посредством применения надлежащего зависящего от цвета коэффициента усиления к каждому обрабатываемому пикселю колебание сигнал/шум между каждой цветовой компонентой может быть в целом уменьшено, тем самым снижая, среди прочего, артефакты двоения изображения, а также согласованность на разных цветах после того, как достигается автоматический баланс белого.
Имея это ввиду, фиг. 25 предоставляет блок-схему последовательности операций способа, изображающую способ 328 для применения временной фильтрации к данным изображения, принятым блоком 130 предварительной обработки, в соответствии с таким вариантом осуществления. Начиная с этапа 329, текущий пиксель x(t), расположенный в пространственном расположении (j,i) текущего кадра данных изображения, принимается системой 302 временной фильтрации. На этапе 330 значение d(t) дельты движения определяется для текущего пикселя x(t), по меньшей мере частично, на основании одного или более совместно расположенных опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Этап 330 может быть подобным этапу 317 по фиг. 23 и может использовать операцию, представленную в уравнении 1, приведенном выше.
Затем, на этапе 331, индекс справочной таблицы движения может определяться с использованием значения d(t) дельты движения, входного значения h(t-1) истории движения, соответствующего пространственному расположению (j,i) из предыдущего кадра (например, соответствующего совместно расположенному опорному пикселю r(t-1)), и коэффициента усиления, связанного с цветом текущего пикселя. После этого, на этапе 332, первый коэффициент K фильтра может выбираться из таблицы 304 движения с использованием индекса справочной таблицы, определенного на этапе 331. Только в качестве примера, в одном варианте осуществления коэффициент K фильтра и индекс справочной таблицы движения могут определяться, как изложено ниже:
<mrow><mi>K</mi><mo>=</mo><mi>M</mi><mo stretchy="false">[</mo><mi>g</mi><mi>a</mi><mi>i</mi><mi>n</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo><mo>×</mo><mo stretchy="false">(</mo><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>+</mo><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(2b)
при этом M представляет таблицу движения, и при этом gain[c] соответствует коэффициенту усиления, связанному с цветом текущего пикселя. Дополнительно, хотя не показано на фиг. 25, должно быть понятно, что вывод h(t) истории движения для текущего пикселя также может определяться и может использоваться для применения временной фильтрации к совместно расположенному пикселю последующего кадра изображения (например, следующего кадра). В настоящем варианте осуществления, вывод h(t) истории движения для текущего пикселя x(t) может определяться с использованием следующей формулы:
<mrow><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>+</mo><mi>K</mi><mo stretchy="false">[</mo><mi>h</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>−</mo><mi>d</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(3b)
Затем, на этапе 333, коэффициент ослабления может выбираться из таблицы 306 яркости с использованием индекса справочной таблицы яркости, определенного на основании коэффициента усиления (gain[c]), связанного с цветом текущего пикселя x(t). Как описано выше, коэффициенты ослабления, хранимые в таблице яркости, могут иметь диапазон приблизительно от 0 до 1. После этого, на этапе 334, второй коэффициент K' фильтра может вычисляться на основании коэффициента ослабления (с этапа 333) и первого коэффициента K фильтра (с этапа 332). Только в качестве примера, в одном варианте осуществления второй коэффициент K' фильтра и индекс справочной таблицы яркости могут определяться, как изложено ниже:
<mrow><mi>K</mi><mo>'</mo><mo>=</mo><mi>K</mi><mo>×</mo><mi>L</mi><mo stretchy="false">[</mo><mi>g</mi><mi>a</mi><mi>i</mi><mi>n</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo><mo>×</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(4b)
Затем, на этапе 335, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтра (из этапа 334), значения совместно расположенного опорного пикселя r(t-1) и значения входного пикселя x(t). Например, в одном варианте осуществления, выходное значение y(t) может определяться, как изложено ниже:
<mrow><mi>y</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>+</mo><mi>K</mi><mo>'</mo><mo stretchy="false">(</mo><mi>r</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>−</mo><mi>x</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(5b)
Продолжая по фиг. 26, изображен дополнительный вариант осуществления обработки 336 временной фильтрации. Здесь, обработка 336 временной фильтрации может выполняться некоторым образом, подобным варианту осуществления, описанному на фиг. 25, за исключением того, что, вместо применения зависимого от цвета коэффициента усиления (например, gain[c]) к каждому входному пикселю и использования совместно используемых таблиц движения и яркости, отдельные таблицы движения и яркости предусмотрены для каждых цветовых компонент. Например, как показано на фиг. 26, таблицы 304 движения могут включать в себя таблицу 304a движения, соответствующую первому цвету, таблицу 304b движения, соответствующую второму цвету, и таблицу 304c движения, соответствующую n-му цвету, при этом n - количество цветов, присутствующих в данных необработанного изображения. Подобным образом, таблицы 306 яркости могут включать в себя таблицу 306a яркости, соответствующую первому цвету, таблицу 306b яркости, соответствующую второму цвету, и таблицу 304c движения, соответствующую n-му цвету. Таким образом, в варианте осуществления, где данные необработанного изображения являются данными изображения Байера, три таблицы движения и яркости могут быть предусмотрены для каждой из цветовых компонент красного, синего и зеленого. Как описано ниже, выбор коэффициентов K фильтрации и коэффициентов ослабления может зависеть от таблицы движения и яркости, выбранной для текущего цвета (например, цвета текущего входного пикселя).
Способ 338, иллюстрирующий дополнительный вариант осуществления для временной фильтрации с использованием зависящих от цвета таблиц движения и яркости, показан на фиг. 27. Как будет принято во внимание, различные вычисления и формулы, которые могут применяться способом 338, могут быть подобными варианту осуществления, показанному на фиг. 23, но с конкретной таблицей движения и яркости, выбираемой для каждого цвета, или подобными варианту осуществления, показанному на фиг. 25, но с заменой использования зависящего от цвета коэффициента gain[c] усиления при выборе зависящей от цвета таблицы движения и яркости.
Начиная с этапа 339, текущий пиксель x(t), расположенный в пространственном расположении (j,i) текущего кадра данных изображения, принимается системой 336 временной фильтрации (фиг. 26). На этапе 340, значение d(t) дельты движения определяется для текущего пикселя x(t), по меньшей мере частично, на основании одного или более совместно расположенных опорных пикселей (например, r(t-1)) из предыдущего кадра данных изображения (например, кадра изображения, непосредственно предшествующего текущему кадру). Этап 340 может быть подобным этапу 317 по фиг. 23 и может использовать операцию, показанную в уравнении 1, приведенном выше.
Затем, на этапе 341, индекс справочной таблицы движения может определяться с использованием значения d(t) дельты движения и входного значения h(t-1) истории движения, соответствующего пространственному расположению (j,i) из предыдущего кадра (например, соответствующего совместно расположенному опорному пикселю r(t-1)). После этого, на этапе 342, первый коэффициент K фильтра может выбираться из одной из доступных таблиц движения (например, 304a, 304b, 304c) на основании цвета текущего входного пикселя. Например, идентифицируется одна надлежащая таблица движения, первый коэффициент K фильтра может выбираться с использованием индекса табличного поиска движения на этапе 341.
После выбора первого коэффициента K фильтра выбирается таблица яркости, соответствующая текущему цвету, и коэффициент ослабления выбирается из выбранной таблицы яркости на основании значения текущего пикселя x(t), как показано на этапе 343. После этого, на этапе 344, второй коэффициент K' фильтра определяется на основании коэффициента ослабления (с этапа 343) и первого коэффициента K фильтра (этап 342). Затем, на этапе 345, подвергнутое временной фильтрации выходное значение y(t), соответствующее текущему входному пикселю x(t), определяется на основании второго коэффициента K' фильтра (с этапа 344), значения совместно расположенного опорного пикселя r(t-1) и значения входного пикселя x(t). Несмотря на то что технология, показанная на фиг. 27, может быть более затратной для реализации (например, вследствие памяти, необходимой для хранения дополнительных таблиц движения и яркости), в некоторых случаях, она может предлагать дополнительные улучшения в отношении артефактов двоения изображения и согласованности по разным цветам после того, как достигается автоматический баланс белого.
В соответствии с дополнительными вариантами осуществления, обработка временной фильтрации, предусмотренная временным фильтром 298, может использовать комбинацию зависящих от цвета коэффициентов усиления и специфичных цвету таблиц движения и/или яркости для применения временной фильтрации к входным пикселям. Например, в одном из таких вариантов осуществления, единая таблица движения может быть предусмотрена для всех цветовых компонент, и поисковый индекс таблицы движения для выбора первого коэффициента (K) фильтрации из таблицы движения может определяться на основании зависящего от цвета коэффициента усиления (например, как показано на фиг. 25, этапы 331-332), наряду с тем, что поисковый индекс таблицы яркости может не иметь зависящего от цвета коэффициента усиления, применяемого к нему, но может использоваться для выбора коэффициента ослабления яркости из одной из многочисленных таблиц яркости в зависимости от цвета текущего входного пикселя (например, как показано на фиг. 27, этап 343). В качестве альтернативы, в еще одном варианте осуществления могут быть предусмотрены многочисленные таблицы движения, и поисковый индекс таблицы движения (без применяемого зависящего от цвета коэффициента усиления) может использоваться для выбора первого коэффициента (K) фильтрации из таблицы движения, соответствующей цвету текущего входного пикселя (например, как показано на фиг. 27, этап 342), наряду с тем, что одиночная таблица яркости может быть предусмотрена для всех цветовых компонент, и при этом поисковый индекс таблицы яркости для выбора коэффициента ослабления яркости может определяться на основании зависящего от цвета коэффициента усиления (например, как показано на фиг. 25, этапы 333-334). Кроме того, в одном варианте осуществления, где используется цветовой фильтр Байера, одна таблица движения и/или таблица яркости может быть предусмотрена для каждого из цветовых компонент красного (R) и синего (B), наряду с тем, что общая таблица движения и/или таблица яркости может быть предусмотрена для обеих цветовых компонент зеленого (Gr и Gb).
Вывод временного фильтра 298 может впоследствии отправляться к фильтру 300 компенсации группирования (BCF), который может быть выполнен с возможностью обрабатывать пиксели изображения для компенсации нелинейного расположения (например, неравномерного пространственного распределения) цветовых выборок вследствие группировки датчиком(ами) 90a или 90b изображений так, чтобы последующие операции обработки изображений в логике 82 конвейера ISP (например, устранение мозаичности, и т.д.), которые зависят от линейного расположения цветовых выборок, могли правильно работать. Например, далее, со ссылкой на фиг. 28 изображена выборка 346 полного разрешения данных изображения Байера. Это может представлять данные необработанного изображения выборки полного разрешения, захваченные датчиком 90a (или 90b) изображений, присоединенных к логике 80 предварительной обработки ISP.
Как будет принято во внимание, при определенных условиях захвата изображения может не быть практичным отправлять данные изображения полного разрешения, захваченные датчиком 90a изображений к схемам 32 ISP для обработки. Например, при захвате видеоданных, для того чтобы сохранить внешний вид движущегося изображения текучей среды со сцены человеческого глаза, может требоваться частота кадров по меньшей мере приблизительно 30 кадров в секунду. Однако, если количество пиксельных данных, содержащихся в каждом кадре выборки полного разрешения, превышает возможности обработки данных схем 32 ISP, когда подвергаются выборке на 30 кадрах в секунду, фильтрация компенсации группирования может применяться вместе с группировкой датчиком 90a изображений для снижения разрешения сигнала изображения, к тому же, наряду с улучшением отношения сигнал/шум. Например, как описано выше, различные технологии группировки, такие как группировка 2x2, могут применяться для выработки «сгруппированного» пикселя необработанного изображения посредством усреднения значений окружающих пикселей в активной области 280 необработанного кадра 278.
Со ссылкой на фиг. 29, вариант осуществления датчика 90a изображений, который может быть выполнен с возможностью группирования данных 346 изображения полного разрешения по фиг. 28, чтобы вырабатывать соответствующие сгруппированные данные 358 необработанного изображения, показанные на фиг. 30, проиллюстрирован в соответствии с одним вариантом осуществления. Как показано, датчик 90a изображений может захватывать данные 346 необработанного изображения полного разрешения. Логика 357 группировки может быть выполнена с возможностью применять группировку к данным 346 необработанного изображения полного разрешения, которые могут выдаваться в логику 80 предварительной обработки ISP с использованием интерфейса 94a датчика, который, как описано выше, может быть интерфейсом SMIA или любыми другими параллельными или последовательными интерфейсами камеры.
Как проиллюстрировано на фиг. 30, логика 357 группировки может применять группировку 2x2 к данным 346 необработанного изображения полного разрешения. Например, что касается сгруппированных данных 358 изображения, пиксели 350, 352, 354 и 356 могут генерировать структуру Байера и могут определяться посредством усреднения значений пикселей по данным 346 необработанного изображения полного разрешения. Например, со ссылкой на обе фиг. 28 и 30, сгруппированный пиксель 350 Gr может определяться в качестве усредненного или среднего значения пикселей 350a-350d Gr полного разрешения. Подобным образом, сгруппированный пиксель 352 R может определяться в качестве среднего значения пикселей 352a-352d R полного разрешения, сгруппированный пиксель 354 B может определяться в качестве среднего значения пикселей 354a-354d B полного разрешения, а сгруппированный пиксель 356 Gb может определяться в качестве среднего значения пикселей 356a-356d Gb полного разрешения. Таким образом, в настоящем варианте осуществления, группировка 2x2 может предусматривать набор из четырех пикселей полного разрешения, в том числе верхнего левого (например, 350a), верхнего правого (например, 350b), нижнего левого (например, 350c) и нижнего правого (например, 350d) пикселя, которые усредняются, чтобы выводить сгруппированный пиксель, расположенный в центре квадрата, сформированного набором из четырех пикселей полного разрешения. Соответственно, сгруппированный блок 348 Байера, показанный на фиг. 30, содержит в себе четыре «подпикселя», которые представляют 16 пикселей, содержащихся в блоках 348a-348d Байеера по фиг. 28.
В дополнение к уменьшенному пространственному разрешению, группировка также предлагает дополнительное преимущество снижения шумов в сигнале изображения. Например, всякий раз, когда датчик изображений (например, 90a) подвергается световому сигналу, может быть определенная величина шума, такого как фотонный шум, связанного с изображением. Этот шум может быть случайным или систематическим, и он также может происходить из многочисленных источников. Таким образом, количество информации, содержащейся в изображении, захваченном датчиком изображений, может быть выражено в показателях отношения сигнал/шум. Например, каждый раз, когда изображение захватывается датчиком 90a изображений и пересылается к схеме обработки, такой как схемы 32 ISP, может быть некоторый уровень шума в значениях пикселей, так как процесс считывания и передачи данных изображения по своей природе привносит «шум считывания» в сигнал изображения. Этот «шум считывания» может быть случайным и в целом неизбежным. Посредством использования среднего значения четырех пикселей шум (например, фотонный шум) может в целом снижаться независимо от источника шума.
Таким образом, при рассмотрении данных 346 изображения полного разрешения по фиг. 28 каждая структура 348a-348d Байера (блок 2x2) содержит в себе 4 пикселя, каждый из которых содержит в себе сигнал и шумовую составляющую. Если каждый пиксель, например, в блоке 348a Байера считывается в отдельности, то присутствуют четыре составляющих сигнала и четыре шумовых составляющих. Однако посредством применения группировки, как показано на фиг. 28 и 30 так, чтобы четыре пикселя (например, 350a, 350b, 350c, 350d) могли быть представлены в одиночном пикселе (например, 350) в сгруппированных данных изображения, одна и та же зона, занятая четырьмя пикселями в данных 346 изображения полного разрешения, может считываться в качестве одиночного пикселя только с одним экземпляром шумовой составляющей, таким образом, улучшая отношение сигнал/шум.
Кроме того, несмотря на то что настоящий вариант осуществления изображает логику 357 группировки по фиг. 29 в качестве являющейся выполненной с возможностью применять обработку группировки 2x2, должно быть принято во внимание, что логика 357 группировки может быть выполнена с возможностью применять любой пригодный тип обработки группировки, такой как группировка 3x3, вертикальная группировка, горизонтальная группировка и так далее. В некоторых вариантах осуществления датчик 90a изображений может быть выполнен с возможностью выбирать разные режимы группировки во время процесса захвата изображений. Дополнительно, в дополнительных вариантах осуществления датчик 90a изображений также может быть выполнен с возможностью применять технологию, которая может указываться ссылкой как «пропуск», в которой вместо выборок усредненных пикселей логика 357 выбирает только некоторые пиксели из данных 346 полного разрешения (например, каждый второй пиксель, каждые 3 пикселя и т.д.), чтобы выводить к средству 80 предварительной обработки ISP для обработки. Кроме того, несмотря на то что только датчик 90a изображений показан на фиг. 29, должно быть принято во внимание, что датчик 90b изображений может быть реализован подобным образом.
Как также изображено на фиг. 30, один из эффектов обработки группировки состоит в том, что пространственная выборка сгруппированных пикселей может не быть равномерно разнесенной. Это пространственное искажение, в некоторых системах, дает в результате ступенчатость контуров (например, зазубренные контуры), которая в целом нежелательна. Кроме того, так как некоторые этапы обработки изображений в логике 82 конвейера ISP могут зависеть от линейного расположения цветовых выборок, для того чтобы работать правильно, фильтр 300 компенсации группирования (BCF) может применяться для выполнения передискретизации и перепозиционирования сгруппированных пикселей так, чтобы сгруппированные пиксели были распределены пространственно равномерно. То есть, BCF 300 по существу компенсирует неравномерное пространственное распределение (например, показанное на фиг. 30) посредством передискретизации положения выборок. Например, фиг. 31 иллюстрирует передискретизированный участок сгруппированных данных 360 изображения после обработки посредством BCF 300, при этом блок 361 Байера, содержащий в себе равномерно распределенные передискретизированные пиксели 362, 363, 364 и 365, соответствует сгруппированным пикселям 350, 352, 354 и 356 соответственно сгруппированных данных 358 изображения по фиг. 30. Дополнительно, в варианте осуществления, который использует пропуск (например, вместо группировки), как упомянуто выше, пространственное искажение, показанное на фиг. 30, может не присутствовать. В этом случае, BCF 300 может функционировать в качестве фильтра нижних частот для снижения артефактов (например, ступенчатости контуров), которые могут происходить в результате, когда пропуск применяется датчиком 90a изображений.
Фиг. 32 показывает структурную схему фильтра 300 компенсации группирования в соответствии с одним вариантом осуществления. BCF 300 может включать в себя логику 366 компенсации группирования, которая может обрабатывать сгруппированные пиксели 358, чтобы применять горизонтальное и вертикальное масштабирование с использованием логики 368 горизонтального масштабирования и логики 370 вертикального масштабирования соответственно, чтобы передискретизировать и перепозиционировать сгруппированные пиксели 358, так чтобы они были скомпонованы в пространственно равномерном распределении, как показано на фиг. 31. В одном варианте осуществления, операция(и) масштабирования, выполняемая посредством BCF 300, может выполняться с использованием горизонтальной и вертикальной многоотводной многофазной фильтрации. Например, обработка фильтрации может включать в себя выбор надлежащих пикселей из данных входного изображения источника (например, сгруппированных данных 358 изображения, выдаваемых датчиком 90a изображений), умножение каждого из выбранных пикселей на коэффициент фильтрации и суммирование результирующих значений, чтобы сформировать выходной пиксель в требуемом адресате информации.
Выбор пикселей, используемых в операциях масштабирования, которые могут включать в себя центральный пиксель и окружающие соседние пиксели одинакового цвета, может определяться с использованием отдельных дифференциальных анализаторов 372, один для вертикального масштабирования и один для горизонтального масштабирования. В изображенном варианте осуществления, дифференциальные анализаторы 372 могут быть цифровыми дифференциальными анализаторами (DDA) и могут быть выполнены с возможностью управлять текущим положением выходного пикселя во время операций масштабирования в вертикальном и горизонтальном направлениях. В настоящем варианте осуществления первый DDA (указываемый ссылкой как 372a) используется для всех цветовых компонент во время горизонтального масштабирования, а второй DDA (указываемый ссылкой как 372b) используется для всех цветовых компонент во время вертикального масштабирования. Только в качестве примера, DDA 372 может быть предусмотрена в качестве 32-битного регистра данных, который содержит в себе дополняющее до 2-х число с фиксированной точкой, имеющее 16 в целой части и 16 бит в дробной части. 16-битная целочисленная часть может использоваться для определения текущего положения для выходного пикселя. Дробная часть DDA 372 может использоваться для определения текущего индекса или фазы, которые могут быть основаны на дробном положении между пикселями текущего положения DDA (например, соответствующего пространственному расположению выходного пикселя). Индекс или фаза могут использоваться для выбора надлежащего набора коэффициентов из набора таблиц 374 коэффициентов фильтра. Дополнительно, фильтрация может выполняться по каждой цветовой компоненте с использованием пикселей одинакового цвета. Таким образом, коэффициенты фильтрации могут выбираться не только на основании фазы текущего положения DDA, но также на цвете текущего пикселя. В одном варианте осуществления 8 фаз могут присутствовать между каждым входным пикселем и, таким образом, вертикальная и горизонтальная составляющие фильтрации могут использовать таблицы коэффициентов глубины 8 так, чтобы 3 бита высшего порядка 16-битной дробной части использовались для выражения текущих фазы или индекса. Таким образом, в качестве используемого в материалах настоящей заявки, будет пониматься, что термин данные «необработанного изображения», или тому подобное, должен указывать ссылкой на данные многоцветного изображения, которые собраны одиночным датчиком со структурой матрицы цветовых фильтров (например, Байера), покрывающей его, таковые предусматривают многочисленные цветовые компоненты в одной проекции. В еще одном варианте осуществления, отдельные DDA могут использоваться для каждой цветовой компоненты. Например, в таких вариантах осуществления BCF 300 может выделять компоненты R, B, Gr и Gb из данных необработанного изображения и обрабатывать каждую компоненту в качестве отдельной проекции.
В действии, горизонтальное и вертикальное масштабирования могут включать в себя инициализацию DDA 372 и выполнение многоотводной многофазной фильтрации с использованием целочисленной и дробной частей DDA 372. Несмотря на то что выполняются отдельно и с раздельными DDA, операции горизонтального и вертикального масштабирования выполняются подобным образом. Значение шага или размер шага (DDAStepX для горизонтального масштабирования и DDAStepY для вертикального масштабирования) определяет, насколько значение DDA (currDDA) приращивается после того, как определен каждый выходной пиксель, и многоотводная многофазная фильтрация повторяется с использованием следующего значения currDDA. Например, если значение шага является меньшим чем 1, то изображение масштабируется с повышением разрешения, а если значение шага является большим чем 1, изображение масштабируется с понижением разрешения. Если значение шага равно 1, то масштабирования не происходит. Кроме того, должно быть понятно, что одинаковые или разные размеры шага могут использоваться для горизонтального и вертикального масштабирования.
Выходные пиксели генерируются посредством BCF 300 в том же порядке, что и входные пиксели (например, с использованием структуры Байера). В настоящем варианте осуществления входные пиксели могут классифицироваться в качестве являющегося четным или нечетным на основании их упорядочения. Например, со ссылкой на фиг. 33, проиллюстрированы графическое изображение расположений входных пикселей (строка 375) и соответствующие расположения выходных пикселей на основании различных значений DDAStep (строк 376-380). В этом примере изображенная строка представляет строку пикселей красного (R) и зеленого (Gr) в данных необработанного изображения Байера. В целях горизонтальной фильтрации, пиксель красного в положении 0,0 в строке 375 может считаться четным пикселем, пиксель зеленого в положении 1,0 в строке 375 может считаться нечетным пикселем, и так далее. Что касается расположений выходных пикселей, четные и нечетные пиксели могут определяться на основании самого младшего бита в дробной части (младших 16 бит) DDA 372. Например, при условии DDAStep в 1,25, как показано в строке 377, самый младший бит соответствует биту 14 DDA, так как этот бит дает разрешение 0,25. Таким образом, выходной пиксель красного в положении DDA (currDDA) 0,0 может считаться четным пикселем (самый младший бит, бит 14, имеет значение 0), выходной пиксель зеленого в currDDA 1,0 (бит 14 имеет значение 1), и так далее. Кроме того, несмотря на то что фиг. 33 описана в отношении фильтрации горизонтального направления (с использованием DDAStepX), должно быть понятно, что определение четного и нечетного входного и выходного пикселей может применяться идентичным образом для вертикальной фильтрации (с использованием DDAStepY). В других вариантах осуществления DDAs 372 также могут использоваться для отслеживания расположений входных пикселей (например, вместо отслеживания требуемых расположений выходных пикселей). Кроме того, должно быть принято во внимание, что DDAStepX и DDAStepY могут устанавливаться в одинаковые или разные значения. Кроме того, при условии, что используется структура Байера, должно быть отмечено, что стартовый пиксель, используемый BCF 300, мог бы быть любым из пикселя Gr, Gb, R или B, например, в зависимости от того, какой пиксель расположен в углу в пределах активной области 280.
Имея это ввиду, четный/нечетный входные пиксели используются для формирования четных/нечетных выходных пикселей соответственно. При условии расположений выходных пикселей, перемежающихся между четным и нечетным положением, центральное расположение входного пикселя источника (указываемого ссылкой в материалах настоящей заявки как «currPixel») для целей фильтрации определяется округлением DDA до ближайшего четного или нечетного расположения входного пикселя для четных или нечетных расположений выходных пикселей (на основании DDAStepX) соответственно. В варианте осуществления, где DDA 372a выполнен с возможностью использовать 16 бит для представления целой части и 16 бит для представления дробной части, currPixel может определяться для четного и нечетного положений currDDA с использованием уравнений 6a и 6b, приведенных выше:
Четные расположения выходного пикселя могут определяться на основании битов [31:16] из:
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(currDDA+1,0) & 0xFFFE.0000
(6a)
Нечетные расположения выходного пикселя могут определяться на основании битов [31:16] из:
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(currDDA)|0x0001.0000
(6b)
По существу, приведенные выше уравнения представляют операцию округления, в силу чего четные и нечетные положения выходного пикселя, в качестве определенных посредством currDDA, округляются до ближайшего четного и нечетного положений входных пикселей соответственно для выбора currPixel.
Дополнительно, текущий индекс или фаза (currIndex) также могут определяться в каждом положении currDDA. Как описано выше, значения индекса или фазы представляют дробное положение между пикселями положения выходного пикселя относительно положений входных пикселей. Например, в одном варианте осуществления 8 фаз могут определяться между каждым положением входного пикселя. Например, вновь со ссылкой на фиг. 33, 8 значений 0-7 индекса предусмотрено между первым входным пикселем красного в положении 0,0 и следующим входным пикселем красного в положении 2,0. Подобным образом, 8 значений 0-7 индекса предусмотрено между первым входным пикселем зеленого в положении 1,0 и следующим входным пикселем зеленого в положении 3,0. В одном варианте осуществления, значения currIndex могут быть определены в соответствии с уравнениями 7a и 7b, приведенными ниже, для четных и нечетных расположений выходных пикселей соответственно:
Четные расположения выходного пикселя могут определяться на основании битов [16:14] из
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(currDDA+0,125)
(7a)
Нечетные расположения выходного пикселя могут определяться на основании битов [16:14] из
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(currDDA+1,125)
(7b)
Для нечетных положений, дополнительный сдвиг на 1 пиксель эквивалентен добавлению смещения четыре к индексу коэффициента для нечетных расположений выходного пикселя, чтобы учитывать смещение индекса между разными цветовыми компонентами в отношении DDA 372.
Как только currPixel и currIndex были определены в конкретном расположении currDDA, обработка фильтрации может выбирать один или более соседних пикселей одинакового цвета на основании currPixel (выбранного центрального входного пикселя). В качестве примера, в варианте осуществления, где логика 368 горизонтального масштабирования включает в себя 5-отводный многофазный фильтр, а логика 370 вертикального масштабирования включает в себя 3-отводный многофазный фильтр, два пикселя одинакового цвета по каждую сторону currPixel в горизонтальном направлении могут выбираться для горизонтальной фильтрации (например, -2, -1, 0, +1, +2), и один пиксель одинакового цвета по каждую сторону от currPixel в вертикальном направлении может выбираться для вертикальной фильтрации (например, -1, 0, +1). Кроме того, currIndex может использоваться в качестве индекса выбора для выбора надлежащих коэффициентов фильтрации из таблицы 374 коэффициентов фильтрации для применения к выбранным пикселям. Например, с использованием варианта осуществления 5-отводной горизонтальной/3-отводной вертикальной фильтрации, пять таблиц глубины 8 могут быть предусмотрены для вертикальной фильтрации. Хотя проиллюстрированы в качестве части BCF 300, должно быть принято во внимание, что таблицы 374 коэффициентов фильтра, в некоторых вариантах осуществления, могут храниться в памяти, которая типично является отдельной от BCF 300, такой как память 108.
Перед более подробным описанием операций горизонтального и вертикального масштабирования таблица 4, приведенная ниже, показывает примеры того, каким образом значения currPixel и currIndex в качестве определенных на основании различных положений DDA используют разные значения DDAStep (например, могли бы применяться к DDAStepX или DDAStepY).
Таблица 4Фильтр компенсации группирования - примеры DDA вычисления currPixel и currIndex
ВыходПиксель(Четный или нечетный)
DDAШаг
1,25
DDAШаг
1,5
DDAШаг
1,75
DDAШаг
2,0
текущийDDA
текущийИндекс
текущийПиксель
текущийDDA
текущийИндекс
текущийПиксель
текущийDDA
текущийИндекс
текущийПиксель
текущийDDA
текущийИндекс
текущийПиксель
0
0,0
0
0
0,0
0
0
0,0
0
0
0,0
0
0
1
1,25
1
1
1,5
2
1
1,75
3
1
2
4
3
0
2,5
2
2
3
4
4
3,5
6
4
4
0
4
1
3,75
3
3
4,5
6
5
5,25
1
5
6
4
7
0
5
4
6
6
0
6
7
4
8
8
0
8
1
6,25
5
7
7,5
2
7
8,75
7
9
10
4
11
0
7,5
6
8
9
4
10
10,5
2
10
12
0
12
1
8,75
7
9
10,5
6
11
12,25
5
13
14
4
15
0
10
0
10
12
0
12
14
0
14
16
0
16
1
11,25
1
11
13,5
2
13
15,75
3
15
18
4
19
0
12,5
2
12
15
4
16
17,5
6
18
20
0
20
1
13,75
3
13
16,5
6
17
19,25
1
19
22
4
23
0
15
4
16
18
0
18
21
4
22
24
0
24
1
16,25
5
17
19,5
2
19
22,75
7
23
26
4
27
0
17,5
6
18
21
4
22
24,5
2
24
28
0
28
1
18,75
7
19
22,5
6
23
26,25
5
27
30
4
31
0
20
0
20
24
0
24
28
0
28
32
0
32
Чтобы предоставить пример, давайте предположим, что выбран размер шага DDA (DDAStep) 1,5 (строка 378 по фиг. 33), с текущим положением DDA (currDDA), начинающимся в 0, указывая четное положение выходного пикселя. Чтобы определить currPixel, может применяться уравнение 6a, как показано ниже:
currPixel (определенный в качестве битов [31:16] результата)=0;
Таким образом, в положении 0,0 currDDA (строке 378) входной центральный пиксель источника для фильтрации соответствует входному пикселю красного в положении 0,0 строки 375.
Для определения currIndex в четном currDDA 0,0 уравнение 7a может применяться, как показано ниже:
currIndex (определенный в качестве битов [16:14] результата)=[000]=0;
Таким образом, в текущем положении 0,0 currDDA (строка 378) значение 0 currIndex может использоваться для выбора коэффициентов фильтрации из таблицы 374 коэффициентов фильтра.
Соответственно, фильтрация (которая может быть вертикальной или горизонтальной в зависимости от того, находится ли DDAStep на направлении X (горизонтальном) или Y (вертикальном)), может применяться на основании определенных значений currPixel и currIndex на currDDA 0,0, и DDA 372 приращивается на DDAStep (1,5), и определяются следующие значения currPixel и currIndex. Например, в следующем положении 1,5 currDDA (нечетном положении) currPixel может определяться с использованием уравнения 6b, как изложено ниже:
currPixel (определенный в качестве битов [31:16] результата)=1;
Таким образом, в положении 1,5 currDDA (строке 378) входной центральный пиксель источника для фильтрации соответствует входному пикселю зеленого в положении 1,0 строки 375.
Кроме того, currIndex на нечетном currDDA 1,5 может определяться с использованием уравнения 7b, как показано ниже:
currIndex (определенный в качестве битов [16:14] результата)=[010]=2;
Таким образом, в текущем положении 1,5 currDDA (строка 378) значение 2 currIndex может использоваться для выбора надлежащих коэффициентов фильтрации из таблицы 374 коэффициентов фильтра. Фильтрация (которая может быть вертикальной или горизонтальной в зависимости от того, находится ли DDAStep на направлении X (горизонтальном) или Y (вертикальном)), таким образом, может применяться с использованием этих значений currPixel и currIndex.
Затем DDA 372 вновь приращивается на DDAStep (1,5), давая в результате значение 3,0 currDDA. currPixel, соответствующий currDDA 3,0, может определяться с использованием уравнения 6a, как показано ниже:
currPixel (определенный в качестве битов [31:16] результата)=4;
Таким образом, в положении 3,0 currDDA (строке 378) входной центральный пиксель источника для фильтрации соответствует входному пикселю красного в положении 4,0 строки 375.
Затем currIndex на четном currDDA 3,0 может определяться с использованием уравнения 7a, как показано ниже:
currIndex (определенный в качестве битов [16:14] результата) =[100]=4;
Таким образом, в текущем положении 3,0 currDDA (строка 378) значение 4 currIndex может использоваться для выбора надлежащих коэффициентов фильтрации из таблицы 374 коэффициентов фильтра. Как будет принято во внимание, DDA 372 может продолжать приращиваться на DDAStep для каждого выходного пикселя, и фильтрация (которая может быть вертикально или горизонтальной в зависимости от того, находится ли DDAStep на направлении X (горизонтальном) или Y (вертикальном)) может применяться с использованием currPixel и currIndex, определенных для каждого значения currDDA.
Как описано выше, currIndex может использоваться в качестве индекса выбора для выбора надлежащих коэффициентов фильтрации из таблицы 374 коэффициентов фильтрации для применения к выбранным пикселям. Обработка фильтрации может включать в себя получение значений пикселей источника вокруг центрального пикселя (currPixel), умножение каждого из выбранных пикселей на надлежащие коэффициенты фильтрации, выбранные из таблицы 374 коэффициентов фильтра на основании currIndex, и суммирование результатов для получения значения выходного пикселя в расположении, соответствующем currDDA. Кроме того, так как настоящий вариант осуществления использует 8 фаз между пикселями одинакового цвета, с использованием варианта осуществления 5-отводной горизонтальной/3-отводной вертикальной фильтрации, пять таблиц глубины 8 могут быть предусмотрены для вертикальной фильтрации. В одном варианте осуществления, каждая из записей таблицы коэффициентов может включать в себя 16-битное дополняющее до 2-х число с фиксированной точкой, с 3 целочисленными битами и 13 дробными битами.
Кроме того, при условии структуры изображения Байера в одном варианте осуществления вертикальная составляющая масштабирования может включать в себя четыре отдельных 3-отводных многофазных фильтра, один для каждой цветовой компоненты: Gr, R, B и Gb. Каждый из 3-отводных фильтров может использовать DDA 372 для управления пошаговым изменением текущего центрального пикселя и индекса для коэффициентов, как описано выше. Подобным образом, горизонтальные составляющие масштабирования могут включать в себя четыре отдельных 5-отводных многофазных фильтра, один для каждой цветовой компоненты: Gr, R, B и Gb. Каждый из 5-отводных фильтров может использовать DDA 372 для управления пошаговым изменением (например, посредством DDAStep) текущего центрального пикселя и индекса для коэффициентов. Однако должно быть понятно, что меньшее или большее количество отводов могут использоваться элементом горизонтального и вертикального масштабирования в других вариантах осуществления.
Что касается граничных случаев, пиксели, используемые в обработке горизонтальной и вертикальной фильтрации, могут зависеть от взаимного расположения текущего положения DDA (currDDA) относительно границы кадра (например, границы, определенной активной областью 280 на фиг. 19). Например, при горизонтальной фильтрации, если положение currDDA, по сравнению с положением центрального входного пикселя (SrcX) и шириной (SrcWidth) кадра (например, шириной 290 активной области 280 по фиг. 19), указывает, что DDA 372 близка к границе, так что нет достаточного количества пикселей для выполнения 5-отводной фильтрации, то могут повторяться входные граничные пиксели одинакового цвета. Например, если выбранный центральный входной пиксель находится на левом контуре кадра, то центральный пиксель может повторяться дважды для горизонтальной фильтрации. Если центральный входной пиксель находится возле левого контура кадра, так что только один пиксель имеется в распоряжении между центральным входным пикселем и левым контуром, то в целях горизонтальной фильтрации один имеющийся в распоряжении пиксель повторяется, для того чтобы предоставить два значения пикселя слева от центрального входного пикселя. Кроме того, логика 368 горизонтального масштабирования может быть сконфигурирована так, чтобы количество входных пикселей (в том числе исходных и повторенных пикселей) не могло превышать входную ширину. Это может выражено, как изложено ниже:
при этом DDAInitX представляет начальное положение DDA 372, DDAStepX представляет значение шага DDA в горизонтальном направлении, а BCFOutWidth представляет ширину кадра, выведенного из BCF 300.
Что касается вертикальной фильтрации, если положение currDDA, по сравнению с положением центрального входного пикселя (SrcY) и шириной (SrcHeight) кадра (например, шириной 290 активной области 280 по фиг. 19), указывает, что DDA 372 близка к границе, так что нет достаточного количества пикселей для выполнения 3-отводной фильтрации, то могут повторяться входные граничные пиксели. Кроме того, логика 370 вертикального масштабирования может быть сконфигурирована так, чтобы количество входных пикселей (в том числе исходных и повторенных пикселей) не могло превышать входную высоту. Это может выражено, как изложено ниже:
при этом DDAInitY представляет начальное положение DDA 372, DDAStepY представляет значение шага DDA в вертикальном направлении, а BCFOutHeight представляет ширину кадра, выведенного из BCF 300.
Далее, со ссылкой на фиг. 34, блок-схема последовательности операций, изображающая способ 382 для применения фильтрации компенсации группирования к данным изображения, принятым блоком 130 предварительной обработки пикселей в соответствии с вариантом осуществления. Будет принято во внимание, что способ 382, проиллюстрированный на фиг. 34, может применяться как для вертикального, так и горизонтального масштабирования. Начиная с этапа 383, DDA 372 инициализируется, и определяется значение шага DDA (которое может соответствовать DDAStepX для горизонтального масштабирования и DDAStepY для вертикального масштабирования). Затем, на этапе 384, определяется текущее положение DDA (currDDA) на основании DDAStep. Как описано выше, currDDA может соответствовать расположению выходного пикселя. С использованием currDDA способ 382 может определять центральный пиксель (currPixel) по данным входного пикселя, которые могут использоваться для фильтрации компенсации группирования, чтобы определять соответствующее выходное значение на currDDA, как указано на этапе 385. Затем, на этапе 386, индекс, соответствующий currDDA (currIndex), может определяться на основании дробного положения между пикселями currDDA относительно входных пикселей (например, строка 375 по фиг. 33). В качестве примера, в варианте осуществления, где DDA включает в себя 16 целочисленных бит и 16 дробных бит, currPixel может определяться в соответствии с уравнениями 6a и 6b, и currIndex может определяться в соответствии с уравнениями 7a и 7b, как показано выше. Несмотря на то что 16-битная целочисленная частью/16-битная дробная конфигурация описана в материалах настоящей заявки в качестве одного из примеров, должно быть принято во внимание, что другие конфигурации DDA 372 могут использоваться в соответствии с настоящей технологией. В качестве примера другие варианты осуществления DDA 372 могут быть выполнены с возможностью включать в себя 12-битную целую часть и 20-битную дробную часть, 14-битную целую часть и 18-битную дробную часть, и так далее.
Как только определены currPixel и currIndex, пиксели источника одинакового цвета вокруг currPixel могут выбираться для многоотводной фильтрации, как указано этапом 387. Например, как описано выше, один вариант осуществления может использовать 5-отводную многофазную фильтрацию в горизонтальном направлении (например, выбор 2 пикселей одинакового цвета по каждую сторону от currPixel) и может использовать 3-отводную многофазную фильтрацию в вертикальном направлении (например, выбор 1 пикселя одинакового цвета по каждую сторону от currPixel). Затем, на этапе 388, как только пиксели источника выбраны, коэффициенты фильтрации могут выбираться из таблицы 374 коэффициентов фильтра BCF 300 на основании currIndex.
После этого на этапе 389 фильтрация может применяться к пикселям источника для определения значения выходного пикселя, соответствующего положению, представленному currDDA. Например, в одном варианте осуществления пиксели источника могут умножаться на свои соответственные коэффициенты фильтрации, а результаты могут суммироваться для получения значения выходного пикселя. Направление, в котором фильтрация применяется на этапе 389, может быть вертикальной или горизонтальной в зависимости от того, находится ли DDAStep на направлении X (горизонтальном) или Y (вертикальном). В заключение, на этапе 263 DDA 372 приращивается на DDAStep на этапе 390, и способ 382 возвращается на этап 384, в силу чего следующее значение выходного пикселя определяется с использованием технологий компенсации группирования, описанных в материалах настоящей заявки.
Со ссылкой на фиг. 35, этап 385 для определения currPixel из способа 382 проиллюстрирован подробнее в соответствии с одним вариантом осуществления. Например, этап 385 может включать в себя подэтап 392 определения, является ли расположение выходного пикселя, соответствующее currDDA (по этапу 384), четным или нечетным. Как описано выше, четный или нечетный выходной пиксель может определяться на основании самого младшего бита currDDA на основании DDAStep. Например, при условии DDAStep в 1,25 значение currDDA в 1,25 может определяться в качестве нечетного, поскольку самый младший бит (соответствующий биту 14 дробной части DDA 372) имеет значение 1. Что касается значения currDDA в 2,5, бит 14 имеет значение 0, таким образом указывая четное расположение выходного пикселя.
В логике 393 решений производится определение в отношении того, является ли расположение выходного пикселя, соответствующее currDDA, четным или нечетным. Если выходной пиксель является четным, логика 393 решений продолжает движение на подэтап 394, на котором currPixel определяется приращением значения currDDA на 1 и округлением результата до самого ближнего четного расположения входного пикселя, как представлено уравнением 6a, приведенным выше. Если выходной пиксель является нечетным, то логика 393 решений переходит на подэтап 395, на котором currPixel определяется посредством округления значения currDDA до самого ближнего нечетного расположения входного пикселя, как представлено уравнением 6b, приведенным выше. Значение currPixel затем может применяться к этапу 387 способа 382 для выбора пикселей источника для фильтрации, как описано выше.
К тому же, со ссылкой на фиг. 36, этап 386 для определения currIndex из способа 382 проиллюстрирован подробнее в соответствии с одним вариантом осуществления. Например, этап 386 может включать в себя подэтап 396 определения, является ли расположение выходного пикселя, соответствующее currDDA (по этапу 384), четным или нечетным. Это определение может выполняться аналогичным образом, как этап 392 по фиг. 35. В логике 397 решений производится определение в отношении того, является ли расположение выходного пикселя, соответствующее currDDA, четным или нечетным. Если выходной пиксель является четным, логика 397 решений переходит на подэтап 398, на котором currIndex определяется приращением значения currDDA на один шаг индекса, определяющий currIndex, на основании целочисленного бита низшего порядка и двух дробных битов высшего порядка DDA 372. Например, в варианте осуществления, в котором 8 фаз предусмотрено между каждыми пикселями одинакового цвета и в котором DDA включает в себя 16 целочисленных бит и 16 дробных бит, один шаг индекса может соответствовать 0,125, и currIndex может определяться на основании битов [16:14] значения currDDA, увеличенного на 0,125 (например, уравнения 7a). Если выходной пиксель является нечетным, логика 397 решений переходит на подэтап 399, на котором currIndex определяется приращением значения currDDA на один шаг индекса и один сдвиг пикселя, определяющий currIndex, на основании целочисленного бита низшего порядка и двух дробных битов высшего порядка DDA 372. Таким образом, в варианте осуществления, в котором 8 фаз предусмотрены между каждыми пикселями одинакового цвета и в котором DDA включает в себя 16 целочисленных бит и 16 дробных бит, один шаг индекса может соответствовать 0,125, один сдвиг пикселя может соответствовать 1,0 (сдвиг в 8 индексов перешагивает на следующий пиксель одинакового цвета), и currIndex может определяться на основании битов [16:14] значения currDDA, увеличенного на 1,125 (например, уравнения 7b).
Несмотря на то, что проиллюстрированный текущий вариант осуществления предусматривает BCF 300 в качестве компонента блока 130 предварительной обработки пикселей, другие варианты осуществления могут включать BCF 300 в конвейер обработки данных необработанного изображения конвейера 82 ISP, который, как дополнительно описано ниже, может включать в себя логику обнаружения/коррекции дефектных пикселей, блоки усиления/смещения/компенсации, логику подавления шумов, логику коррекции затенения объектива и логику устранения мозаичности. Кроме того, в вариантах осуществления, где вышеупомянутые логика обнаружения/коррекции дефектных пикселей, блоки усиления/смещения/компенсации, логика подавления шумов, логика коррекции затенения объектива не полагаются на линейное расположение пикселей, BCF 300 может быть объединен с логикой устранения мозаичности, чтобы выполнять фильтрацию компенсации группирования и перепозиционировать пиксели перед устранением мозаичности, так как устранение мозаичности в целом не полагается на равномерное пространственное расположение пикселей. Например, в одном варианте осуществления BCF 300 может быть включен куда угодно между выходом датчика и логикой устранения мозаичности, с временной фильтрацией и/или обнаружением/коррекцией дефектных пикселей, применяемыми к данным необработанного изображения до компенсации группирования.
Как описано выше, вывод BCF 300, который может быть выводом FEProcOut (109), имеющим данные пространственно равномерно распределенного изображения (например, выборку 360 по фиг. 31), может пересылаться к логике 82 конвейерной обработки ISP для дополнительной обработки. Однако, до переключения фокуса этого описания на логику 82 конвейерной обработки ISP, сначала будет предоставлено более подробное описание различных функциональных возможностей, которые могут быть предусмотрены блоками статистической обработки (например, 122 и 124), которые могут быть реализованы в логике 80 предварительной обработки ISP.
Возвращаясь к общему описанию блоков 120 и 122 статистической обработки, эти блоки могут быть выполнены с возможностью собирать различные статистические данные о датчиках изображений, которые захватывают и выдают сигналы необработанного изображения (Sif0 и Sif1), такие как статистические данные, относящиеся к автоматическому экспонированию, автоматической балансировке белого, автоматической фокусировке, обнаружению мерцания, компенсации уровня черного и коррекции затенения объектива, и так далее. При действии таким образом, блоки 120 и 122 статистической обработки сначала могут применять одну или более операций обработки изображений к своим соответственным входным сигналам Sif0 (из Sensor0) и Sif1 (из Sensor1).
Например, со ссылкой на фиг. 37, более подробный вид структурной схемы блока 120 статистической обработки, связанного с Sensor0 (90a), проиллюстрирован в соответствии с одним вариантом осуществления. Как показано, блок 120 статистической обработки может включать в себя следующие функциональные блоки: логику 460 обнаружения и коррекции дефектных пикселей, логику 462 компенсации уровня черного (BLC), логику 464 коррекции затенения объектива, логику 466 инверсного BLC и логику 468 сбора статистических данных. Каждый из этих функциональных блоков описан ниже. Кроме того, должно быть понятно, что блок 122 статистической обработки, связанный с Sensor1 (90b), может быть реализован подобным образом.
Сначала вывод логики 124 выбора (например, Sif0 или SifIn0) принимается логикой 460 предварительной коррекции «дефектных» пикселей. Как будет принято во внимание, может быть понятно, что «дефектные» пиксели должны указывать ссылкой на пиксели формирования изображений в пределах датчика(ов) 90 изображений, которые претерпевают неудачу в точном считывании уровней освещенности. «Дефектные» пиксели могут быть приписываемыми некоторому количеству факторов и могут включать в себя «яркие» (или дающие утечку) пиксели, «залипшие» пиксели и «потухшие» пиксели. «Яркий» пиксель обычно появляется в качестве являющегося более ярким, чем недефектный пиксель при условии идентичной величины освещенности в одном и том же пространственном расположении. «Яркие» пиксели могут получаться вследствие ошибок при сбросе и/или высокой утечки. Например, «яркий» пиксель может демонстрировать большую, чем нормальная, утечку заряда относительно недефектных пикселей, и таким образом, может казаться более ярким, чем недефектные пиксели. Дополнительно «потухшие» или «залипшие» пиксели могут быть результатом загрязнений, таких как грязь или другие оставляющие след материалы, загрязняющие датчик изображений во время процесса изготовления и/или сборки, которые могут заставлять некоторые «дефектные» пиксели быть более темными или более яркими, чем недефектный пиксель, или могут заставлять «дефектный» пиксель быть зафиксированным в конкретном значении независимо от величины освещенности, которой он фактически подвергается. Дополнительно, потухшие и залипшие пиксели также могут быть результатом отказов схем, которые возникают во время работы датчика изображений. В качестве примера «залипший» пиксель может появляться в качестве всегда являющегося включенным (например, полностью заряженным) и, таким образом, кажется более ярким, тогда как «потухший» пиксель кажется всегда отключенным.
Логика 460 обнаружения и коррекции дефектных пикселей (DPDC) в логике 80 предварительной обработки ISP может корректировать (например, замещать значения дефектных пикселей) дефектные пиксели перед тем, как они учитываются при сборе статистических данных (например, 468). В одном варианте осуществления коррекция дефектных пикселей выполняется независимо для каждой цветовой компоненты (например, R, B, Gr и Gb для структуры Байера). Как правило, логика 460 DPDC может предусматривать коррекцию динамических дефектов, при этом расположения дефектных пикселей определяются автоматически на основании направленных градиентов, вычисленных с использованием соседних пикселей одинакового цвета. Как будет понятно, дефекты могут быть «динамическими» в том смысле, что определение характеристик пикселя в качестве являющегося дефектным в данное время может зависеть от данных изображения в соседних пикселях. В качестве примера, залипший пиксель, который всегда находится на максимальной яркости, может не рассматриваться дефектным пикселем, если расположение залипшего пикселя находится в зоне текущего изображения, которая находится под преобладанием более ярких или белых цветов. Наоборот, если залипший пиксель находится в области текущего изображения, которая находится под преобладанием черных или более темных цветов, то залипший пиксель может идентифицироваться в качестве дефектного пикселя во время обработки логикой 460 DPDC и корректироваться соответствующим образом.
Логика 460 DPDC может использовать один или более соседних пикселей по горизонтали одинакового цвета по каждую сторону от текущего пикселя, чтобы определять, является ли текущий пиксель дефектным, с использованием направленных градиентов от пикселя к пикселю. Если текущий пиксель идентифицирован в качестве являющегося дефектным, значение дефектного пикселя может замещаться значением соседнего пикселя по горизонтали. Например, в одном варианте осуществления используются пять соседних пикселей по горизонтали одинакового цвета, которые находятся внутри границы необработанного кадра 278 (фиг. 19), при этом пять соседних пикселей по горизонтали включают в себя текущий пиксель и два соседних пикселя по каждую сторону. Таким образом, как проиллюстрировано на фиг. 38, для данной цветовой компоненты c и для текущего пикселя P, соседние пиксели P0, P1, P2 и P3 по горизонтали могут приниматься во внимание логикой 460 DPDC. Должно быть отмечено, однако, что в зависимости от расположения текущего пикселя P, пиксели вне необработанного кадра 278 не рассматриваются при вычислении градиентов от пикселя к пикселю.
Например, как показано на фиг. 38, в случае 470 «левого контура», текущий пиксель P находится на самом левом краю необработанного кадра 278 и, таким образом, соседние пиксели P0 и P1 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P, P2 и P3 (N=3). В случае «левого контура + 1» текущий пиксель P находится на один единственный пиксель от самого левого края необработанного кадра 278 и, таким образом, пиксель P0 не принимается во внимание. Это оставляет только пиксели P1, P, P2 и P3 (N=4). Кроме того, в «центрированном» случае 474 пиксели P0 и P1 по левую сторону от текущего пикселя P и пиксели P2 и P3 по правую сторону от текущего пикселя P находятся в пределах границы необработанного кадра 278, а потому все из соседних пикселей P0, P1, P2 и P3 (N=5) принимаются во внимание при вычислении градиентов от пикселя к пикселю. Дополнительно, подобные случаи 476 и 478 могут встречаться по мере того, как приближается самый правый край необработанного кадра 278. Например, при условии случая 476 «правого контура - 1» текущий пиксель P отстает на один единственный пиксель от самого правого края необработанного кадра 278 и, таким образом, пиксель P3 не принимается во внимание (N=4). Подобным образом, в случае 478 «правого контура», текущий пиксель P находится на самом правом краю необработанного кадра 278 и, таким образом, не принимаются во внимание оба соседних пикселя, P2 и P3 (N=3).
В проиллюстрированном варианте осуществления, для каждого соседнего пикселя (k = от 0 до 3) в пределах границы изображения (например, необработанного кадра 278), градиенты от пикселя к пикселю могут вычисляться, как изложено ниже:
<mrow><msub><mi>G</mi><mi>k</mi></msub><mo>=</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>P</mi><mo>−</mo><msub><mi>P</mi><mi>k</mi></msub><mo stretchy="false">)</mo></mrow>
<mrow><mn>0</mn><mo>≤</mo><mi>k</mi><mo>≤</mo><mn>3</mn></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
для
(только для k в пределах необработанного кадра)
(8)
k
k
Как только градиенты от пикселя к пикселю были определены, обнаружение дефектных пикселей может выполняться логикой 460 DPDC, как изложено ниже. Прежде всего, предполагается, что пиксель является дефектным, если определенное количество его градиентов G находится на или ниже конкретного порогового значения, обозначенного переменной dprTh. Таким образом, для каждого пикселя, накапливается счет (C) количества градиентов для соседних пикселей внутри границ кадра изображения, которые находятся на или ниже порогового значения dprTh. В качестве примера для каждого соседнего пикселя внутри необработанного кадра C градиентов G, которые находятся на или ниже порогового значения dprTh, могут вычисляться, как изложено ниже:
<mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mi>k</mi><mi>N</mi></munderover><mrow /></mstyle></mrow>
<mo>≤</mo>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
k
C=
(G
dprTh),
(9)
<mrow><mn>0</mn><mo>≤</mo><mi>k</mi><mo>≤</mo><mn>3</mn></mrow>
для
(только для k в пределах необработанного кадра)
Как будет принято во внимание, в зависимости от цветовых компонент, пороговое значение dprTh может меняться. Затем, если накопленный счет C определен меньшим чем или равным максимальному счету, обозначенному переменной dprMaxC, то пиксель может считаться дефектным. Эта логика выражена ниже:
<mo>≤</mo>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Если (C
dprMaxC), то пиксель является дефектным.
(10)
Дефектные пиксели замещаются с использованием некоторого количества правил замещения. Например, в одном варианте осуществления дефектный пиксель может замещаться пикселем непосредственно слева от него, P1. В граничном состоянии (например, P1 находится вне необработанного кадра 278) дефектный пиксель может замещаться пикселем непосредственно справа от него, P2. Кроме того, должно быть понятно, что значения замещения могут сохраняться или распространяться для последующих операций обнаружения дефектных пикселей. Например, со ссылкой на набор пикселей по горизонтали, показанных на фиг. 38, если P0 или P1 ранее идентифицировались логикой 460 DPDC в качестве являющихся дефектными пикселями, их соответствующие значения замещения могут использоваться для обнаружения и замещения дефектного пикселя текущего пикселя P.
Чтобы обобщить описанные выше технологии обнаружения и коррекции дефектных пикселей, блок-схема последовательности операций, изображающая такую обработку, предусмотрена на фиг. 39 и указывается номером 480 ссылки. Как показано, обработка 480 начинается на этапе 482, на котором принимается текущий пиксель (P), и идентифицируется набор соседних пикселей. В соответствии с вариантом осуществления, описанным выше, соседние пиксели могут включать в себя два пикселя по горизонтали одинаковой цветовой компоненты с противоположных сторон текущего пикселя (например, P0, P1, P2 и P3). Затем, на этапе 484, горизонтальные градиенты от пикселя к пикселю рассчитываются в отношении каждого соседнего пикселя в пределах необработанного кадра 278, как описано в уравнении 8, приведенном выше. После этого, на этапе 486 определяется счет C количества градиентов, которые являются меньшими чем или равными конкретному пороговому значению dprTh. Как показано в логике 488 решений, если C является меньшим чем или равным dprMaxC, то обработка 480 продолжается до этапа 490, и текущий пиксель идентифицируется в качестве являющегося дефектным. Дефектный пиксель затем корректируется на этапе 492 с использованием значения замены. Дополнительно, возвращаясь к логике 488 решений, если C является большим, чем dprMaxC, то обработка продолжается до этапа 494, и текущий пиксель определяется в качестве не являющегося дефектным, и его значение не изменяется.
Должно быть отмечено, что технологии обнаружения/коррекции дефектных пикселей во время статистической предварительной обработки ISP могут быть менее устойчивыми к ошибкам, чем обнаружение/коррекция дефектных пикселей, которые выполняются в логике 82 конвейера ISP. Например, как будет подробнее описано ниже, обнаружение/коррекция дефектных пикселей, выполняемые в логике 82 конвейера ISP, в дополнение к коррекции динамических дефектов, могут предусматривать коррекцию неподвижных дефектов, при котором расположения дефектных пикселей известны априори и загружены в одну или более таблиц дефектов. Кроме того, коррекция динамических дефектов в логике 82 конвейера ISP также может рассматривать градиенты как в горизонтальном, так и вертикальном направлениях, и также может учитывать обнаружение/коррекцию образования спеклов, как будет описано ниже.
С обращением к фиг. 37, выходной сигнал логики 460 DPDC затем пропускается к логике 462 компенсации уровня черного (BLC). Логика 462 BLC может предусматривать независимое цифровое усиление, смещение и усечение для каждой цветовой компоненты «c» (например, R, B, Gr и Gb для Байера) на пикселях, используемых для сбора статистических данных. Например, как выражено следующей операцией, входное значение для текущего пикселя сначала смещается на значение со знаком, а затем умножается на коэффициент усиления.
<mrow><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><mi>X</mi><mo>+</mo><mi>O</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo><mo stretchy="false">)</mo><mo>×</mo><mi>G</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(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-кратной величины значения входного пикселя).
Затем, как показано уравнением 12, приведенным ниже, вычисленное значение Y, которое имеет знак, затем может усекаться диапазоном минимального и максимального значений:
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Y=(Y<min[c]) ? min[c]:(Y>max[c]) ? max[c]:Y
(12)
Переменные min[c] и max[c] могут представлять 16-битные «значения усечения» для минимального и максимального выходных значений, соответственно. В одном варианте осуществления логика 462 BLC также может быть выполнена с возможностью поддерживать счет количества пикселей, которые были усечены выше и ниже максимального и минимального значения, соответственно, для каждой цветовой компоненты.
4
4
4
Затем вывод логики 462 BLC пересылается к логике 464 коррекции затенения объектива (LSC). Логика 464 LSC может быть выполнена с возможностью применять надлежащий коэффициент усиления на попиксельной основе, чтобы компенсировать падения интенсивности, которые обычно приблизительно пропорциональны расстоянию от оптического центра объектива 88 устройства 30 формирования изображений. Как может быть принято во внимание, такие падения могут быть результатом геометрической оптики объектива. В качестве примера объектив, имеющий идеальные оптические свойства, может моделироваться в качестве четвертой степени косинуса угла падения, cos(θ), указываемой ссылкой как закон cos. Однако, так как изготовление объектива не является безупречным, различные неравномерности объектива могут вынуждать оптические свойства отклоняться от предполагаемой модели cos. Например, более тонкие кромки объектива обычно проявляют наибольшие неравномерности. Дополнительно, неравномерности структуры затенения объектива также могут быть результатом матрицы микролинз в пределах датчика изображений, не являющейся идеально выровненной с цветовым матричным фильтром. Кроме того, фильтр инфракрасного излучения (IR) в некоторых объективах может вынуждать падение быть зависящим от источника света и, таким образом, коэффициенты усиления затенения объектива могут приспосабливаться в зависимости от выявленного источника света.
Со ссылкой на фиг. 40 проиллюстрирован трехмерный профиль 496, изображающий интенсивность света в зависимости от положения пикселя для типичного объектива. Как показано, интенсивность света возле центра 498 объектива постепенно падает по направлению к угла или краям 500 объектива. Неравномерности затенения объектива, изображенные на фиг. 40, могут быть лучше проиллюстрированы посредством фиг. 41, которая показывает цветной чертеж изображения 502, которое демонстрирует падение интенсивности света по направлению к углам и кромкам. В частности, должно быть отмечено, что интенсивность света приблизительно в центре изображения кажется более яркой, чем интенсивность света в углах и/или по краям изображения.
В соответствии с вариантами осуществления настоящих технологий коэффициенты усиления затенения объектива могут быть заданы в качестве двухмерной сетки усиления для каждого цветового канала (например, Gr, R, B, Gb для фильтра Байера). Точки сетки усиления могут быть распределены с постоянными горизонтальными и вертикальными интервалами в пределах необработанного кадра 278 (фиг. 19). Как описано выше на фиг. 19, необработанный кадр 278 может включать в себя активную область 280, которая определяет участок, на котором обработка выполняется для конкретной операции обработки изображений. Что касается операции коррекции затенения, активная область обработки, которая может указываться ссылкой как область LSC, определена в пределах области 278 необработанного кадра. Как будет описано ниже, область LSC должна быть полностью внутри или на границах сетки усиления, иначе результаты могут быть неопределенными.
Например, со ссылкой на фиг. 42, показаны область 504 LSC и сетка 506 усиления, которые могут быть определены в пределах необработанного кадра 278. Область 504 LSC может иметь ширину 508 и высоту 510 и может быть определена смещением 512 x и смещением 514 y относительно границы необработанного кадра 278. Также предусмотрены смещения сетки (например, смещение 516 x сетки и смещение 518 y сетки) от основания 520 сетки 506 усиления до первого пикселя 522 в области 504 LSC. Эти смещения могут находиться в пределах первого интервала сетки для данной цветовой компоненты. Горизонтальный (направления x) и вертикальный (направления y) интервалы 524 и 526 точек сетки, соответственно, могут быть заданы независимо для каждого цветового канала.
Как описано выше, при условии использования матрицы цветовых фильтров Байера могут быть определены 4 цветовых канала сеток усиления (R, B, Gr и Gb). В одном варианте осуществления всего 4K (4096) точек сетки могут иметься в распоряжении и, для каждого цветового канала, базовый адрес для начального расположения коэффициентов усиления сетки может быть предусмотрен, к примеру, посредством использования указателя. Кроме того, горизонтальный (524) и вертикальный (526) интервалы точек сетки могут быть определены в показателях пикселей с разрешением одной цветовой проекции и, в некоторых вариантах осуществления могут предусматривать интервалы точек сетки, разделенные степенью 2-х, такие как 8, 16, 32, 64 или 128 и т.д., в горизонтальном и вертикальном направлениях. Как может быть принято во внимание, посредством использования степени 2 может достигаться эффективная реализация интерполяции коэффициентов усиления с использованием операций смещения (например, деления) и сложения. С использованием этих параметров одинаковые значения усиления могут использоваться даже в то время, как является изменяющейся область кадрирования датчика. Например, всего лишь нескольким параметрам необходимо обновляться для выравнивания точек сетки по кадрированной области (например, обновление смещений 524 и 526 сетки) вместо обновления всех значений усиления. Только в качестве примера, это может быть полезным, когда кадрирование используется во время операций цифровой трансфокации. Кроме того, несмотря на то, что сетка 506 усиления, показанная в варианте осуществления по фиг. 42, изображена в качестве имеющей в целом равноразнесенные точки сетки, должно быть понятно, что в других вариантах осуществления точки сетки могут не быть обязательно равноразнесенными. Например, в некоторых вариантах осуществления точки сетки могут быть распределены неравномерно (например, логарифмически), так что точки сетки являются менее сконцентрированными в центре области 504 LSC, но более сконцентрированными к углам области 504 LSC, где типично более заметно искажение затенения объектива.
В соответствии с настоящими раскрытыми технологиями коррекции затенения объектива, когда расположение текущего пикселя локализовано вне области 504 LSC, не применяется никакого коэффициента усиления (например, пиксель передается неизменным). Когда расположение ткущего пикселя находится в местоположении сетки усиления, может использоваться значение усиления в такой конкретной точке сетки. Однако когда расположение текущего пикселя находится между точками сетки, коэффициент усиления может интерполироваться с использованием билинейной интерполяции. Пример интерполяции коэффициента усиления для расположения «G» пикселя по фиг. 43 приведен ниже.
Как показано на фиг. 43, пиксель G находится между точками G0, G1, G2 и G3 сетки, которые могут соответствовать верхнему левому, верхнему правому, нижнему левому и нижнему правому коэффициентам усиления, соответственно, относительно расположения G текущего пикселя. Горизонтальный и вертикальный размер интервала сетки представлен посредством X и Y, соответственно. Дополнительно, ii и jj представляют горизонтальное и вертикальное смещения пикселей, соответственно, относительно положения верхнего левого коэффициента G0 усиления. На основании этих факторов коэффициент усиления, соответствующий положению G, таким образом, может интерполироваться, как изложено ниже:
<mrow><mi>G</mi><mo>=</mo><mfrac><mrow><mo stretchy="false">(</mo><mi>G</mi><mn>0</mn><mo stretchy="false">(</mo><mi>Y</mi><mo>−</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>X</mi><mo>−</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>G</mi><mn>1</mn><mo stretchy="false">(</mo><mi>Y</mi><mo>−</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>G</mi><mn>2</mn><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>X</mi><mo>−</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>G</mi><mn>3</mn><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><mrow><mi>X</mi><mi>Y</mi></mrow></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(13a)
Члены в уравнении 13a, приведенном выше, затем могут быть скомбинированы для получения следующего выражения:
<mrow><mi>G</mi><mo>=</mo><mfrac><mrow><mi>G</mi><mn>0</mn><mo stretchy="false">[</mo><mi>X</mi><mi>Y</mi><mo>−</mo><mi>X</mi><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo>−</mo><mi>Y</mi><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mo>+</mo><mi>G</mi><mn>1</mn><mo stretchy="false">[</mo><mi>Y</mi><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo>−</mo><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mo>+</mo><mi>G</mi><mn>2</mn><mo stretchy="false">[</mo><mi>X</mi><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo>−</mo><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mo>+</mo><mi>G</mi><mn>3</mn><mo stretchy="false">[</mo><mo stretchy="false">(</mo><mi>i</mi><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>j</mi><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo></mrow><mrow><mi>X</mi><mi>Y</mi></mrow></mfrac></mrow>
<mrow />
(13b)
В одном варианте осуществления способ интерполяции может выполняться инкрементально вместо использования множителя на каждом пикселе, таким образом снижая вычислительную сложность. Например, член (ii)(jj) может быть реализован с использованием сумматора, который может инициализироваться значением 0 в расположении (0, 0) сетки 506 усиления и приращиваться текущим номером строки каждый раз, когда текущий номер столбца увеличивается на пиксель. Как описано выше, поскольку значения X и Y могут быть выбраны в качестве степеней двух, интерполяция коэффициента усиления может выполняться с использованием простых операций сдвига. Таким образом, множитель необходим только в точке G0 сетки (вместо каждого пикселя), и только операции сложения необходимы для определения интерполированного коэффициента усиления для оставшихся пикселей.
В некоторых вариантах осуществления интерполяция коэффициентов усиления между точками сетки может использовать 14-битную точность, и коэффициенты сетки могут быть беззнаковыми 10-битными значениями с 2 целочисленными битами и 8 дробными битами (например, представлением 2,8 с плавающей точкой). С использованием этого правила коэффициент усиления может иметь диапазон между 0 и 4X, а разрешение коэффициента усиления между точками сетки может иметь значение 1/256.
Технологии коррекции затенения объектива могут быть дополнительно проиллюстрированы обработкой 528, показанной на фиг. 44. Как показано, обработка 528 начинается на этапе 530, на котором положение текущего пикселя определяется относительно границ области 504 LSC по фиг. 42. Затем логика 532 решений определяет, находится ли положение текущего пикселя в пределах области 504 LSC. Если положение текущего пикселя находится вне области 504 LSC, обработка 528 продолжается до этапа 534, и никакого коэффициента усиления не применяется к текущему пикселю (например, пиксель передается неизменным).
Если положение текущего пикселя находится в пределах области 504 LSC, обработка 528 продолжается до логики 536 решений, в которой дополнительно определяется, соответствует ли положение текущего пикселя точке сетки в пределах сетки 504 усиления. Если положение текущего пикселя соответствует точке сетки, то значение усиления в такой точке сетки выбирается и применяется к текущему пикселю, как показано на этапе 538. Если положение текущего пикселя не соответствует точке сетки, то обработка 528 продолжается до этапа 540, и коэффициент усиления интерполируется на основании окаймляющих точек сетки (например, G0, G1, G2 и G3 по фиг. 43). Например, интерполированный коэффициент усиления может вычисляться в соответствии с уравнениями 13a и 13b, как описано выше. После этого обработка 528 заканчивается на этапе 542, на котором интерполированный коэффициент усиления с этапа 540 применяется к текущему пикселю.
Как будет принято во внимание, обработка 528 может повторяться для каждого пикселя данных изображения. Например, как показано на фиг. 45, проиллюстрирован трехмерный профиль, изображающий коэффициенты усиления, которые могут применяться к каждому положению пикселя в пределах области LSC (например, 504). Как показано, коэффициент усиления, применяемый в углах 544 изображения, может быть в целом большим, чем коэффициент усиления, применяемый к центру 546 изображения, вследствие большего падения интенсивности света в углах, как показано на фиг. 40 и 41. С использованием описанных на данный момент технологий коррекции затенения объектива появление падений интенсивности света в изображении может уменьшаться или по существу устраняться. Например, фиг. 46 дает пример того, каким образом цветной чертеж изображения 502 с фиг. 41 может выглядеть после того, как применена коррекция затенения объектива. Как показано, по сравнению с исходным изображением по фиг. 41, общая интенсивность света в целом более равномерна по всему изображению. В частности, интенсивность света приблизительно в центре изображения может быть по существу равной значениям интенсивности света в углах и/или на краях изображения. Дополнительно, как упомянуто выше, вычисление интерполированного коэффициента усиления (уравнений 13a и 13b), в некоторых вариантах осуществления может быть заменено аддитивной «дельтой» между точками сетки посредством использования в своих интересах структуры последовательного приращения столбца и строки. Как будет принято во внимание, это снижает вычислительную сложность.
r
В дополнительных вариантах осуществления в дополнение к использованию коэффициентов усиления сетки, используется глобальный коэффициент усиления для каждой цветовой компоненты, который масштабируется в качестве функции расстояния от центра изображения. Центр изображения может быть предусмотрен в качестве входного параметра и может оцениваться посредством анализа амплитуды интенсивности света каждого пикселя изображения в равномерно освещенном изображении. Радиальное расстояние между идентифицированным центральным пикселем и текущим пикселем, в таком случае, может использоваться для получения линейно масштабированного радиального коэффициента усиления G, как показано ниже:
<mrow><msub><mi>G</mi><mi>r</mi></msub><mo>=</mo><msub><mi>G</mi><mi>p</mi></msub><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo><mo>×</mo><mi>R</mi></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(14)
p
при этом G[c] представляет собой параметр глобального коэффициента усиления для каждой цветовой компоненты c (например, компонент R, B, Gr и Gb для структуры Байера), и при этом R собой представляет радиальное расстояние между центральным пикселем и текущим пикселем.
0
0
G
G
Со ссылкой на фиг. 47, которая показывает область 504 LSC, описанную выше, расстояние R может вычисляться или оцениваться с использованием нескольких технологий. Как показано, пиксель C, соответствующий центру изображения, может иметь координаты (x, y), а текущий пиксель G может иметь координаты (x, y). В одном варианте осуществления логика 464 LSC может вычислять расстояние R с использованием следующего уравнения:
<mrow><mi>R</mi><mo>=</mo><msqrt><mrow><msup><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mi>G</mi></msub><mo>−</mo><msub><mi>x</mi><mn>0</mn></msub><mo stretchy="false">)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo stretchy="false">(</mo><msub><mi>y</mi><mi>G</mi></msub><mo>−</mo><msub><mi>y</mi><mn>0</mn></msub><mo stretchy="false">)</mo></mrow><mn>2</mn></msup></mrow></msqrt></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(15)
В еще одном варианте осуществления, более простая формула, показанная ниже, может использоваться для получения оцененного значения для R:
<mrow><mi>R</mi><mo>=</mo><mi>α</mi><mo>×</mo><mi>max</mi><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>G</mi></msub><mo>−</mo><msub><mi>x</mi><mn>0</mn></msub><mo stretchy="false">)</mo><mo>,</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>y</mi><mi>G</mi></msub><mo>−</mo><msub><mi>y</mi><mn>0</mn></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>+</mo><mi>β</mi><mo>×</mo><mi>min</mi><mo stretchy="false">(</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>G</mi></msub><mo>−</mo><msub><mi>x</mi><mn>0</mn></msub><mo stretchy="false">)</mo><mo>,</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>y</mi><mi>G</mi></msub><mo>−</mo><msub><mi>y</mi><mn>0</mn></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(16)
В уравнении 16, коэффициенты α и β оценки могут масштабироваться в 8-битные значения. Исключительно в качестве примера, в одном варианте осуществления, α может быть приблизительно равным 123/128, а β может быть приблизительно равным 51/128, чтобы давать оцененное значение для R. С использованием этих значений коэффициентов наибольшая ошибка может иметь значение приблизительно 4%, со средней ошибкой приблизительно 1,3%. Таким образом, даже если технология оценки может быть до некоторой степени менее точной, чем использование технологии вычисления при определении R (уравнение 15), предел допустимой ошибки достаточно низок, чтобы оцененные значения или R были пригодны для определения радиальных составляющих коэффициента усиления для представленных технологий коррекции затенения объектива.
r
Радиальный коэффициент G усиления затем может умножаться на интерполированное значение G коэффициента усиления сетки (уравнения 13a и 13b) для текущего пикселя, чтобы определять общий коэффициент усиления, который может применяться к текущему пикселю. Выходной пиксель Y получается умножением значения X входного пикселя на общий коэффициент усиления, как показано ниже:
<mrow><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><mi>G</mi><mo>×</mo><msub><mi>G</mi><mi>r</mi></msub><mo>×</mo><mi>X</mi></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
)
(17)
Таким образом, в соответствии с настоящей технологией коррекция затенения объектива может выполняться с использованием только интерполированного коэффициента усиления как интерполированного коэффициента усиления, так и радиальных составляющих коэффициента усиления. В качестве альтернативы коррекция затенения объектива также может выполняться с использованием только радиального коэффициента усиления вместе с таблицей радиальных коэффициентов усиления, которая компенсирует радиальные ошибки приближения. Например, вместо прямоугольной сетки 506 усиления, как показано на фиг. 42, может быть предусмотрена радиальная сетка усиления, имеющая множество точек сетки, определяющих коэффициенты усиления в радиальном и угловом направлениях. Таким образом, при определении коэффициента усиления для применения к пикселю, который не выравнивается с одной из точек радиальной сетки в пределах области 504 LSC, интерполяция может применяться с использованием четырех точек сетки, которые охватывают пиксель, для определения надлежащего интерполированного коэффициента усиления затенения объектива.
r
r
Со ссылкой на фиг. 48, использование интерполированной и радиальной составляющих коэффициента усиления в коррекции затенения объектива проиллюстрировано обработкой 548. Должно быть отмечено, что обработка 548 может включать в себя этапы, которые подобны обработке 528, описанной выше на фиг. 44. Соответственно, такие этапы были пронумерованы аналогичными номерами ссылки. Начиная с этапа 530, принимается текущий пиксель, и определяется его расположение относительно области 504 LSC. Затем логика 532 решений определяет, находится ли положение текущего пикселя в пределах области 504 LSC. Если положение текущего пикселя находится вне области 504 LSC, обработка 548 продолжается до этапа 534, и никакого коэффициента усиления не применяется к текущему пикселю (например, пиксель передается неизменным). Если положение текущего пикселя находится в пределах области 504 LSC, то обработка 548 может одновременно продолжаться до этапа 550 и логики 536 решений. Сначала со ссылкой на этап 550, извлекаются данные, идентифицирующие центр изображения. Как описано выше, определение центра изображения может включать в себя анализ амплитуд интенсивности света для пикселей при равномерном освещении. Это может происходить, например, во время калибровки. Таким образом, должно быть понятно, что этап 550 не обязательно охватывает повторное вычисление центра изображения для обработки каждого пикселя, но может указывать ссылкой на извлечение данных (например, координат) определенного ранее центра изображения. Как только идентифицирован центр изображения, обработка 548 может продолжаться до этапа 552, на котором определяется расстояние между центром изображения и расположением текущего пикселя (R). Как описано выше, значение R может вычисляться (уравнение 15) или оцениваться (уравнение 16). Затем, на этапе 554, радиальная составляющая G коэффициента усиления может вычисляться с использованием расстояния R и параметра глобального коэффициента усиления, соответствующего цветовой компоненте текущего пикселя (уравнение 14). Радиальная составляющая G коэффициента усиления может использоваться для определения общего коэффициента усиления, как будет описано на этапе 558, приведенном ниже.
Возвращаясь к логике 536 решений, определяется, соответствует ли положение текущего пикселя точке сетки в пределах сетки 504 усиления. Если положение текущего пикселя соответствует точке сетки, то значение усиления в такой точке сетки определяется, как показано на этапе 556. Если положение текущего пикселя не соответствует точке сетки, то обработка 548 продолжается до этапа 540, и интерполированный коэффициент усиления вычисляется на основании окаймляющих точек сетки (например, G0, G1, G2 и G3 по фиг. 43). Например, интерполированный коэффициент усиления может вычисляться в соответствии с уравнениями 13a и 13b, как описано выше. Затем, на этапе 558, общий коэффициент усиления определяется на основании радиального коэффициента усиления, определенного на этапе 554, а также одного из коэффициентов усиления сетки (этап 556) или интерполированного коэффициента усиления (540). Как может быть принято во внимание, это может зависеть от того, какую ветвь занимает логика 536 решений во время обработки 548. Общий коэффициент усиления затем применяется к текущему пикселю, как показано на этапе 560. Вновь, должно быть отмечено, что подобно обработке 528, обработка 548 также повторяется для каждого пикселя данных изображения.
Использование радиального коэффициента усиления вместе с коэффициентами усиления сетки может предлагать различные преимущества. Например, использование радиального коэффициента усиления предоставляет возможность для использования одиночной общей сетки усиления для всех цветовых компонент. Это может сильно сокращать суммарное пространство памяти, требуемой для хранения отдельных сеток усиления для каждой цветовой компоненты. Например, в датчике изображений Байера использование одиночной сетки усиления для каждого из компонент R, B, Gr и Gb может сокращать данные сетки усиления приблизительно на 75%. Как будет принято во внимание, это сокращение данных коэффициентов усиления сетки может уменьшать затраты на реализацию, так как таблицы данных коэффициентов усиления сетки могут нести ответственность за значительную часть памяти или площадь кристалла в аппаратном обеспечении обработки изображений. Кроме того, в зависимости от реализации аппаратного обеспечения использование единого набора значений сетки усиления может предлагать дополнительные преимущества, такие как уменьшение общей площади кристалла (например, такое, как когда значения сетки усиления хранятся во внутрикристалльной памяти) и снижение требований к ширине полосы пропускания памяти (например, такое как когда значения сетки усиления хранятся во внекристалльной внешней памяти).
Имея в распоряжении тщательно описанные функциональные возможности логики 464 коррекции затенения объектива, показанной на фиг. 37, выходной сигнал логики 464 LSC впоследствии пересылается к логике 466 обратной компенсации уровня черного (IBLC). Логика 466 IBLC предусматривает усиление, смещение и усечение независимо для каждой цветовой компоненты (например, R, B, Gr и Gb) и выполняет в целом обратную функцию логике 463 BLC. Например, как показано последующей операцией, значение входного пикселя сначала умножается на коэффициент усиления, а затем смещается на значение со знаком.
<mrow><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><mi>X</mi><mo>×</mo><mi>G</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo><mo stretchy="false">)</mo><mo>+</mo><mi>O</mi><mo stretchy="false">[</mo><mi>c</mi><mo stretchy="false">]</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(18)
при этом X представляет значение входного пикселя для данной цветовой компоненты c (например, R, B, Gr или Gb), O[c] представляет 16-битное смещение со знаком для текущей цветовой компоненты c, а G[c] представляет значение коэффициента усиления для цветовой компоненты c. В одном варианте осуществления коэффициент G[c] усиления может иметь диапазон приблизительно между от 0 до 4X (4-кратной величины входного значения X пикселя). Должно быть отмечено, что эти переменные могут быть теми же самыми переменными, описанными выше в уравнении 11. Вычисленное значение Y может усекаться диапазоном минимального и максимального значений, например, уравнением 12. В одном варианте осуществления логика 466 IBLC может быть выполнена с возможностью поддерживать счет количества пикселей, которые были усечены выше и ниже максимального и минимального значения, соответственно, для каждой цветовой компоненты.
После этого выходной сигнал логики 466 IBLC принимается блоком 468 сбора статистических данных, который может предусматривать сбор различных статистических данных о датчике(ах) 90 изображения, таких как относящиеся к автоматическому экспонированию (AE), автоматической балансировке белого (AWB), автоматической фокусировке (AF), обнаружению мерцания и так далее. Ниже предусмотрен краткий обзор с описанием значения статистических данных AWB, AE и AF.
Что касается балансировки белого, реакция датчика изображений в каждом пикселе может зависеть от источника освещения, поскольку источник света отражается от объектов в сцене изображения. Таким образом, каждое значение пикселя, записанное в сцене изображения, имеет отношение к цветовой температуре источника света. Когда белый объект освещается под низкой цветовой температурой, он может казаться красноватым в захваченном изображении. Наоборот, белый объект, который освещается под высокой цветовой температурой, может казаться синеватым в захваченном изображении. Цель балансировки белого, поэтому, состоит в том, чтобы настраивать значения RGB так, чтобы изображение выглядело для человеческого глаза, как будто было снято при каноническом освещении. Таким образом, в контексте статистических данных формирования изображений, относящихся к балансировке белого, цветовая информация о белых объектах собирается для определения цветовой температуры источника света. Вообще, алгоритмы балансировки белого могут включать в себя два основных этапа. Во-первых, оценивается цветовая температура источника света. Во-вторых, оцененная цветовая температура используется для настройки значений усиления цвета и/или определения/настройки коэффициентов матрицы цветовой коррекции. Такие коэффициенты усиления могут комбинироваться из аналоговых и цифровых коэффициентов усиления датчика изображений, а также цифровых коэффициентов усиления ISP.
Затем автоматическое экспонирование в целом указывает ссылкой на обработку по настройке времени интегрирования пикселя и коэффициентов усиления для регулировки яркости захваченного изображения. Например, автоматическое экспонирование может управлять количеством света из сцены, которое захватывается датчиком(ами) изображений, устанавливая время интегрирования. Кроме того, автоматическая фокусировка может относиться к определению оптимального фокусного расстояния объектива, для того чтобы по существу оптимизировать фокус изображения. Таким образом, различные типы статистических данных, среди прочего, могут определяться и собираться посредством блока 468 сбора статистических данных. Как показано, вывод STATS0 блока 468 сбора статистических данных может отправляться в память 108 и направляться к логике 84 управления или, в качестве альтернативы, может отправляться непосредственно к логике 84 управления.
Как описано выше, логика 84 управления может обрабатывать собранные статистические данные для определения одного или более параметров управления для управления устройством 30 формирования изображений и/или схемами 32 обработки изображений. Например, такие параметры управления могут включать в себя параметры для эксплуатации объектива датчика 90 изображений (например, параметры настройки фокусного расстояния), параметры датчика изображений (например, аналоговый и/или цифровой коэффициенты усиления, время интегрирования), а также параметры конвейерной обработки ISP (например, цифровые значения усиления, коэффициенты матрицы цветовой коррекции (CCM)). Дополнительно, как упомянуто выше, в некоторых вариантах осуществления статистическая обработка может происходить с точностью 8 битов и, таким образом, необработанные пиксельные данные, имеющие более высокую битовую глубину, могут подвергаться понижающей дискретизации в 8-битный формат для статистических целей. Как описано выше, понижающая дискретизация до 8 бит (или любого другого более низкого битового разрешения) может уменьшать размер (например, площадь) аппаратного обеспечения, а также уменьшать сложность обработки, так же как предоставлять статистическим данным возможность быть более устойчивыми к шуму (например, с использованием пространственного усреднения данных изображения).
Перед переходом к подробному описанию логики 82 конвейера ISP ниже по потоку от логики 80 предварительной обработки ISP, должно быть понятно, что компоновка различных функциональных логических блоков в блоках 120 и 122 статистической обработки (например, логических блоков 460, 462, 464, 466 и 468) и блоке 130 предварительной обработки пикселей ISP (например, логических блоков 298 и 300) предназначена только для иллюстрации одного из вариантов осуществления настоящей технологии. Действительно, в других вариантах осуществления логические блоки, проиллюстрированные в материалах настоящей заявки, могут быть скомпонованы в другом порядке или могут включать в себя дополнительные логические блоки, которые могут выполнять дополнительные функции обработки изображений, неописанные особо в материалах настоящей заявки. Кроме того, должно быть понятно, что операции обработки изображений, выполняемые в блоках статистической обработки (например, 120 и 122), такие как коррекция затенения объектива, обнаружение/коррекция дефектных пикселей и компенсация уровня черного, выполняются в пределах блоков статистической обработки в целях сбора статистических данных. Таким образом, операции обработки, выполняемые над данными изображения, принятыми блоками статистической обработки, фактически не отражены в сигнале 109 изображения (FEProcOut), который выводится из логики 130 предварительной обработки пикселей ISP и пересылается к логике 82 конвейерной обработки ISP.
Перед продолжением также должно быть отмечено, что, при условии достаточного времени обработки и подобия между многими требованиями к обработке различных операций, описанных в материалах настоящей заявки, можно реконфигурировать функциональные блоки, показанные в материалах настоящей заявки, для выполнения обработки изображений скорее последовательным образом, нежели конвейерного класса. Как будет понятно, это может дополнительно снижать общие затраты на реализацию аппаратного обеспечения, но также может увеличивать ширину полосы пропускания во внешнюю память (например, для кэширования/сохранения промежуточных результатов/данных).
Логика конвейерной («магистральной») обработки ISP
Имея в распоряжении подробно описанную выше логику 80 предварительной обработки ISP, настоящее описание далее переключит фокус на логику 82 конвейерной обработки ISP. Как правило, функция логики 82 конвейера ISP состоит в том, чтобы принимать данные необработанного изображения, которые могут выдаваться из логики 80 предварительной обработки ISP или извлекаться из памяти 108 и чтобы выполнять дополнительные операции обработки изображений, например, перед выводом данных изображения на устройство 28 отображения.
Структурная схема, показывающая вариант осуществления логики 82 конвейера ISP, изображена на фиг. 49. Как проиллюстрировано, логика 82 конвейера ISP может включать в себя логику 562 обработки необработанных пикселей, логику 564 обработки RGB и логику 566 обработки YCbCr. Логика 562 обработки необработанных пикселей может выполнять различные операции обработки изображений, такие как обнаружение и коррекция дефектных пикселей, коррекция затенения объектива, устранение мозаичности, а также применение коэффициента усиления для автоматической балансировки белого и/или установки уровня черного, как будет дополнительно описано ниже. Как показано в настоящем варианте осуществления, входной сигнал 570 в логику 562 обработки необработанных пикселей может быть выходным сигналом 109 необработанных пикселей (сигналом FEProcOut) из логики 80 предварительной обработки ISP или данными 112 необработанных пикселей из памяти 108, в зависимости от настоящей конфигурации логики 568 выбора.
В результате операций устранения мозаичности, выполняемых в пределах логики 562 обработки необработанных пикселей, выходной сигнал 572 сигнала изображения может быть в области RGB и может пересылаться впоследствии к логике 564 обработки RGB. Например, как показано на фиг. 49, логика 564 обработки RGB принимает сигнал 578, который может быть выходным сигналом 572 или сигналом 574 изображения RGB из памяти 108, в зависимости от настоящей конфигурации логики 576 выбора. Логика 564 обработки RGB может предусматривать различные операции настройки цветов RGB, в том числе цветовую коррекцию (например, с использованием матрицы цветовой коррекции), применение коэффициентов усиления цвета для автоматической балансировки белого, а также отображение глобального оттенка, как будет дополнительно описано ниже. Логика 566 обработки RGB также может предусматривать преобразованием цветового пространства данных изображения RGB в цветовое пространство YCbCr (яркости/цветности). Таким образом, выходной сигнал 580 сигнала изображения может быть в области YCbCr и впоследствии может пересылаться к логике 566 обработки YCbCr.
Например, как показано на фиг. 49, логика 566 обработки YCbCr принимает сигнал 586, который может быть выходным сигналом 580 из логики 564 обработки RGB или сигналом 582 YCbCr из памяти 108 в зависимости от настоящей конфигурации логики 584 выбора. Как будет дополнительно описано ниже, логика 566 обработки YCbCr может предусматривать операции обработки изображений в цветовом пространстве YCbCr, в том числе масштабирование, подавление цветности, увеличение резкости яркости, настройки яркости, контрастности и цветов (BCC), отображение степени контрастности YCbCr, прореживание цветности и так далее. Выходной сигнал 588 сигнала изображения логики 566 обработки YCbCr может отправляться в память 108 или может выводиться из логики 82 конвейерной обработки ISP в качестве сигнала 114 изображений (фиг. 7). Сигнал 114 изображения может отправляться на устройство 28 отображения (непосредственно или через память 108) для просмотра пользователем или может дополнительно обрабатываться с использованием машины сжатия (например, кодировщика 118), CPU/GPU, графической машины или тому подобного.
В соответствии с вариантами осуществления настоящих технологий логика 82 конвейера ISP может поддерживать обработку необработанных пиксельных данных в 8-битном, 10-битном, 12-битном или 14-битном форматах. Например, в одном варианте осуществления 8-битные, 10-битные или 12-битные входные данные могут преобразовываться в 14-битные при вводе в логику 562 обработки необработанных пикселей, и операции обработки необработанных пикселей и обработки RGB могут выполняться с 14-битной точностью. В последнем варианте осуществления 14-битные данные изображения могут подвергаться понижающей дискретизации до 10 битов перед преобразованием данных RGB в цветовое пространство YCbCr, и обработка YCbCr (логика 566) может выполняться с 10-битной точностью.
Для того чтобы предоставить всестороннее описание различных функций, предусмотренных логикой 82 конвейерной обработки ISP, каждая из логики 562 необработанных пикселей, логики 564 обработки RGB и логики 566 обработки YCbCr, а также внутренняя логика для выполнения различных операций обработки изображений, которая может быть реализована в каждом соответственном блоке логики 562, 564 и 566, будет последовательно описана ниже, начиная с логики 562 обработки необработанных пикселей. Например, далее, со ссылкой на фиг. 50 проиллюстрирована структурная схема, показывающая более подробный вид варианта осуществления логики 562 обработки необработанных пикселей в соответствии с вариантом осуществления настоящей технологии. Как показано, логика 562 обработки необработанных пикселей включает в себя логику 590 усиления, смещения и усечения (GOC), логику 592 обнаружения/коррекции дефектных пикселей (DPDC), логику 594 подавления шумов, логику 596 коррекции затенения объектива, логику 598 GOC и логику 600 устранения мозаичности. Кроме того, несмотря на то, что примеры, описанные ниже, предполагают использование матрицы цветовых фильтров Байера с датчиком(ами) 90 изображений, должно быть понятно, что другие варианты осуществления настоящей технологии также могут использовать другие типы цветовых фильтров.
Входной сигнал 570, который будет сигналом необработанного изображения, сначала принимается логикой 590 усиления, смещения и усечения (GOC). Логика 590 GOC может предусматривать подобные функции и может быть реализована подобным образом по отношению к логике 462 BLC блока 120 статистической обработки логики 80 предварительной обработки ISP, как описано выше на фиг. 37. Например, логика 590 GOC может обеспечивать цифровое усиление, смещение и ограничение (усечение) независимо для каждой цветовой компоненты R, B, Gr и Gb датчика изображений Байера. В частности, логика 590 GOC может выполнять автоматическую балансировку белого или устанавливать уровень черного данных необработанного изображения. Кроме того, в некоторых вариантах осуществления логика 590 GOC также может использоваться, чтобы корректировать и компенсировать смещение между цветовыми компонентами Gr и Gb.
В действии, входное значение для текущего пикселя сначала смещается на значение со знаком и умножается на коэффициент усиления. Эта операция может выполняться с использованием формулы, показанной в уравнении 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.
Вычисленное значение Y пикселя (которое включает в себя коэффициент G[c] усиления и смещение O[c]) из уравнения 11 затем усекается диапазоном минимального и максимального значений в соответствии с уравнением 12. Как описано выше, переменные min[c] и max[c] могут представлять 16-битные «значения усечения» для минимального и максимального выходных значений, соответственно. В одном варианте осуществления логика 590 GOC также может быть выполнена с возможностью поддерживать счет количества пикселей, которые были усечены выше и ниже диапазонов максимального и минимального значения, соответственно, для каждой цветовой компоненты.
Затем выходной сигнал логики 590 GOC пересылается к логике 592 обнаружения и коррекции дефектных пикселей. Как описано выше со ссылкой на фиг. 37 (логику 460 DPDC), дефектные пиксели могут быть приписываемыми некоторому количеству факторов и могут включать в себя «яркие» (или дающие утечку) пиксели, «залипшие» пиксели и «погасшие» пиксели, при этом «яркие» пиксели демонстрируют более высокую, чем нормальная, утечку заряда относительно недефектных пикселей, и, таким образом, могут казаться более яркими, чем недефектный пиксель, и при этом «залипший» пиксель выглядит как всегда являющийся включенным (например, полностью заряженным) и, таким образом, кажется более ярким, тогда как потухший пиксель выглядит как всегда являющийся отключенным. По существу, может быть желательно иметь схему детектирования пикселя, которая достаточно устойчива к ошибкам, чтобы идентифицировать и принимать меры в ответ на разные типы сценариев неисправности. В частности, по сравнению с логикой 460 предварительной обработки DPDC, которая может предусматривать только обнаружение/коррекцию динамических дефектов, логика 592 DPDC конвейера может предусматривать обнаружение/коррекцию постоянных или статических дефектов, обнаружение/исправление динамических дефектов, а также удаление спеклов.
В соответствии с вариантами осуществления раскрытых на данный момент технологий обнаружение/коррекция дефектных пикселей, выполняемые логикой 592 DPDC, могут происходить независимо для каждой цветовой компоненты (например, R, B, Gr и Gb) и могут включать в себя различные операции для обнаружения дефектных пикселей, а также для коррекции обнаруженных дефектных пикселей. Например, в одном варианте осуществления операции обнаружения дефектных пикселей могут предусматривать обнаружение статических дефектов, динамических дефектов, а также обнаружение спекла, который может указывать ссылкой на электрические помехи или шумы (например, фотонный шум), которые могут присутствовать в датчике изображений. По аналогии спекл может появляться в изображении в качестве артефактов по внешнему виду случайного шума подобно образу действий, которым статика может появляться на устройстве отображения, таком как телевизионное устройство отображения. Кроме того, как отмечено выше, коррекция динамических дефектов рассматривается в качестве являющейся динамической в том смысле, что определение характеристик пикселя в качестве являющегося дефектным в данное время может зависеть от данных изображения в соседних пикселях. Например, залипший пиксель, который всегда находится на максимальной яркости, может не рассматриваться дефектным пикселем, если расположение залипшего пикселя находится в зоне текущего изображения, которая находится под преобладанием ярких белых цветов. Наоборот, если залипший пиксель находится в области текущего изображения, которая находится под преобладанием черных или более темных цветов, то залипший пиксель может идентифицироваться в качестве дефектного пикселя во время обработки логикой 592 DPDC и корректироваться соответствующим образом.
Что касается обнаружения статических дефектов, расположение каждого пикселя сравнивается с таблицей дефектных пикселей, которая может хранить данные, соответствующие расположению пикселей, которые известно, что являются дефектными. Например, в одном варианте осуществления логика 592 DPDC может контролировать обнаружение дефектных пикселей (например, с использованием механизма или регистра счетчика) и, если конкретный пиксель наблюдается в качестве неоднократно перестающего действовать, расположение такого пикселя сохраняется в таблице статических дефектов. Таким образом, во время обнаружения статических дефектов, если определено, что расположение текущего пикселя находится в таблице статических дефектов, то текущий пиксель идентифицируется в качестве являющегося дефектным пикселем, и значение замещения определяется и временно сохраняется. В одном варианте осуществления значение замещения может быть значением предыдущего пикселя (на основании порядка сканирования) той же самой цветовой компоненты. Значение замещения может использоваться для коррекции статического дефекта во время обнаружения и коррекции динамических дефектов/спеклов, как будет описано ниже. Дополнительно, если предыдущий пиксель находится вне необработанного кадра 278 (фиг. 19), то его значение не используется, и статический дефект может корректироваться во время обработки коррекции динамических дефектов. Кроме того, вследствие соображений памяти таблица статических дефектов может хранить конечное число записей расположения. Например, в одном варианте осуществления таблица статических дефектов может быть реализована в качестве очереди FIFO (первым вошел - первым вышел), выполненной с возможностью хранить всего 16 расположений для каждых двух линий данных изображения. Расположения в определенной таблице статических дефектов, тем не менее, будут корректироваться с использованием предыдущих значений замещения пикселя (предпочтительнее, чем посредством обработки обнаружения динамических дефектов, описанной ниже). Как упомянуто выше, варианты осуществления настоящей технологии также могут предусматривать повторное обновление таблицы статических дефектов со временем.
Варианты осуществления могут предусматривать, чтобы таблица статических дефектов была реализована во внутрикристалльной памяти или внекристалльной памяти. Как будет принято во внимание, использование внутрикристалльной реализации может увеличивать общую площадь/размер кристалла, в то время как использование внекристалльной реализации может уменьшать площадь/размер кристалла, но увеличивать требования к ширине полосы пропускания памяти. Таким образом, должно быть понятно, что таблица статических дефектов может быть реализована на кристалле или вне кристалла в зависимости от специфичных требований к реализации, то есть общего количества пикселей, которые должны сохраняться в пределах таблицы статических дефектов.
Обработки обнаружения динамических дефектов и спеклов могут быть смещены по времени относительно обработки обнаружения статических дефектов, описанной выше. Например, в одном варианте осуществления обработка обнаружения динамических дефектов и спеклов может начинаться после того, как обработка обнаружения статических дефектов проанализировала две линии сканирования (например, строки) пикселей. Как может быть принято во внимание, это предоставляет возможность, чтобы идентификация статических дефектов и их соответственных значений замещения определялась до того, как происходит обнаружение динамических дефектов/спеклов. Например, во время обработки обнаружения динамических дефектов/спеклов, если текущий пиксель ранее был помечен в качестве являющегося статическим дефектом, вместо применения операций обнаружения динамических дефектов/спеклов статический дефект просто корректируется с использованием оцененного ранее значения замещения.
Что касается обнаружения динамических дефектов и спеклов, эти обработки могут происходить последовательно или параллельно. Обнаружение и коррекция динамических дефектов и спеклов, которые выполняются логикой 592 DPDC, могут полагаться на адаптивное обнаружение контура с использованием направленных градиентов от пикселя к пикселю. В одном варианте осуществления используется логика 592 DPDC, которая может выбирать восемь непосредственных соседей текущего пикселя, имеющих такую же цветовую компоненту, которые находятся в пределах необработанного кадра 278 (фиг. 19). Другими словами, текущие пиксели и их восемь непосредственных соседей P0, P1, P2, P3, P4, P5, P6 и P7 могут генерировать участок 3x3, как показано ниже на фиг. 51.
Должно быть отмечено, однако, что в зависимости от расположения текущего пикселя P, пиксели вне необработанного кадра 278 не рассматриваются при вычислении градиентов от пикселя к пикселю. Например, что касается «верхнего левого» случая 602, показанного на фиг. 51, текущий пиксель P находится в верхнем левом углу необработанного кадра 278 и, таким образом, соседние пиксели P0, P1, P2, P3 и P5 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P4, P6 и P7 (N=3). В «верхнем» случае 604 текущий пиксель P находится на самом верхнем краю необработанного кадра 278 и, таким образом, соседние пиксели P0, P1 и P2 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P3, P4, P5, P6 и P7 (N=5). В заключение в «нижнем правом» случае 606 текущий пиксель P находится в нижнем правом углу необработанного кадра 278 и, таким образом, соседние пиксели P2, P4, P5, P6 и P7 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P0, P1 и P3 (N=3). В «левом» случае 608 текущий пиксель P находится на самом левом краю необработанного кадра 278 и, таким образом, соседние пиксели P0, P3 и P5 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P1, P2, P4, P6 и P7 (N=5).
В «центральном» случае 610 все пиксели P0-P7 лежат в пределах необработанного кадра 278 и, таким образом, используются при определении градиентов от пикселя к пикселю (N=8). В «правом» случае 612 текущий пиксель P находится на самом правом краю необработанного кадра 278 и, таким образом, соседние пиксели P2, P4 и P7 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P0, P1, P3, P5 и P6 (N=5). Дополнительно, в «нижнем левом» случае 614 текущий пиксель P находится в нижнем левом углу необработанного кадра 278 и, таким образом, соседние пиксели P0, P3, P5, P6 и P7 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P1, P2 и P4 (N=3). В «нижнем» случае 616 текущий пиксель P находится на самом нижнем краю необработанного кадра 278 и, таким образом, соседние пиксели P5, P6 и P7 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P0, P1, P2, P3 и P4 (N=5). В заключение в «нижнем правом» случае 618, текущий пиксель P находится в нижнем правом углу необработанного кадра 278 и, таким образом, соседние пиксели P2, P4, P5, P6 и P7 вне необработанного кадра 278 не принимаются во внимание, оставляя только пиксели P0, P1 и P3 (N=3).
Таким образом, в зависимости от положения текущего пикселя P, количество пикселей, используемых при определении градиентов от пикселя к пикселю, может иметь значение 3, 5 или 8. В проиллюстрированном варианте осуществления для каждого соседнего пикселя (k = от 0 до 7) в пределах границы изображения (например, необработанного кадра 278) градиенты от пикселя к пикселю могут вычисляться, как изложено ниже:
<mrow><msub><mi>G</mi><mi>k</mi></msub><mo>=</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>P</mi><mo>−</mo><msub><mi>P</mi><mi>k</mi></msub><mo stretchy="false">)</mo></mrow>
<mrow><mn>0</mn><mo>≤</mo><mi>k</mi><mo>≤</mo><mn>7</mn></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
для
(только для k в пределах необработанного кадра)
(19)
av
av
Дополнительно, средний градиент, G, может вычисляться в качестве разности между текущим пикселем и средним значением, P, его окружающих пикселей, как показано уравнениями, приведенными ниже:
<mrow><msub><mi>P</mi><mrow><mi>a</mi><mi>v</mi></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mi>k</mi><mi>N</mi></munderover><mrow><msub><mi>P</mi><mi>k</mi></msub></mrow></mstyle></mrow><mo>)</mo></mrow></mrow><mi>N</mi></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
, при этом N=3, 5 или 8 (в зависимости от положения пикселя)
(20a)
<mrow><msub><mi>G</mi><mrow><mi>a</mi><mi>v</mi></mrow></msub><mo>=</mo><mi>a</mi><mi>b</mi><mi>s</mi><mo stretchy="false">(</mo><mi>P</mi><mo>−</mo><msub><mi>P</mi><mrow><mi>a</mi><mi>v</mi></mrow></msub><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(20b)
Значения градиента от пикселя к пикселю (уравнение 19) могут использоваться при определении случая динамического дефекта, и среднее значение соседних пикселей (уравнения 20a и 20b) может использоваться при идентификации случаев спекла, как дополнительно описано ниже.
k
hf
av
В одном варианте осуществления обнаружение динамических дефектов может выполняться логикой 592 DPDC, как изложено ниже. Прежде всего, предполагается, что пиксель является дефектным, если определенное количество градиентов G находится на или ниже конкретного порогового значения, обозначенного переменной dynTh (порогового значения динамического дефекта). Таким образом, для каждого пикселя накапливается счет (C) количества градиентов для соседних пикселей внутри границ кадра изображения, которые находятся на или ниже порогового значения dynTh. Пороговое значение dynTh может быть комбинацией постоянной составляющей порогового значения и динамической составляющей порогового значения, которая может зависеть от «активности», присутствующей в окружающих пикселях. Например, в одном варианте осуществления динамическая составляющая порогового значения для dynTh может определяться посредством вычисления значения P высокочастотной составляющей на основании суммирования абсолютной разности между средними значениями Pпикселя (уравнения 20a) и каждым соседним пикселем, как проиллюстрировано ниже:
<mrow><msub><mi>P</mi><mrow><mi>h</mi><mi>f</mi></mrow></msub><mo>=</mo><mfrac><mn>8</mn><mi>N</mi></mfrac><mstyle displaystyle="true"><munderover><mo>∑</mo><mi>k</mi><mi>N</mi></munderover><mrow><mi>a</mi><mi>b</mi><mi>s</mi></mrow></mstyle><mo stretchy="false">(</mo><msub><mi>P</mi><mrow><mi>a</mi><mi>v</mi></mrow></msub><mo>−</mo><msub><mi>P</mi><mi>k</mi></msub><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
при этом N=3, 5 или 8.
(20c)
hf
hf
В случаях, где пиксель расположен в углу изображения (N=3) или на краю изображения (N=5), P может умножаться на 8/3 или 8/5, соответственно. Как может быть принято во внимание, это гарантирует, что высокочастотная составляющая P нормализуется на основании восьми соседних пикселей (N=8).
hf
Как только P определен, пороговое значение dynTh обнаружения динамического дефекта может вычисляться, как показано ниже:
1
2
hf
<mo>×</mo>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
dynTh=dynTh+(dynTh
P),
(21)
1
2
hf
1
1
1
при этом dynTh представляет постоянную составляющую порогового значения и при этом dynTh представляет динамическую составляющую порогового значения P в уравнении 21. Разные постоянные составляющие dynTh порогового значения могут быть предусмотрены для каждой цветовой компоненты, но для каждого пикселя одного и того же цвета dynThявляется идентичным. Только в качестве примера dynTh может быть установлено таким образом, чтобы оно было по меньшей мере выше дисперсии шума в изображении.
2
2
2
2
2
1
2
Динамическая составляющая dynTh порогового значения может определяться на основании некоторых характеристик изображения. Например, в одном варианте осуществления dynTh может определяться с использованием хранимых эмпирических данных касательно времени экспонирования и/или интегрирования датчика. Эмпирические данные могут определяться во время калибровки датчика изображений (например, 90) и могут связывать значения динамических составляющих порогового значения, которые могут выбираться для dynTh с каждым из некоторого количества точек данных. Таким образом, на основании текущего значения времени экспонирования и/или интегрирования датчика, которое может определяться во время статистической обработки в логике 80 предварительной обработки ISP, dynTh может определяться посредством выбора значения динамической составляющей порогового значения из хранимых эмпирических данных, которые соответствуют текущему значению времени экспонирования и/или интегрирования датчика. Дополнительно, если текущее значение времени экспонирования и/или интегрирования датчика не соответствует непосредственно одной из определенных опытным путем точек данных, то dynTh может определяться посредством интерполяции значений динамической составляющей порогового значения, связанных с точками данных, между которыми попадает текущее значение времени экспонирования и/или интегрирования датчика. Кроме того, подобно постоянной составляющей dynTh порогового значения динамическая составляющая dynTh порогового значения может иметь разные значения для каждой цветовой компоненты. Таким образом, составное пороговое значение dynTh может меняться для каждой цветовой компоненты (например, R, B, Gr, Gb).
k
Как упомянуто выше, для каждого пикселя определяется счет C количества градиентов для соседних пикселей внутри границ кадра изображения, которые находятся на или ниже порогового значения dynTh. Например, для каждого соседнего пикселя в пределах необработанного кадра 278, накопленный счет C градиентов G, которые находятся ниже порогового значения dynTh, может вычисляться, как изложено ниже:
<mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mi>k</mi><mi>N</mi></munderover><mrow /></mstyle></mrow>
<mo>≤</mo>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
k
C=
(G
dynTh),
(22)
<mrow><mn>0</mn><mo>≤</mo><mi>k</mi><mo>≤</mo><mn>7</mn></mrow>
для
(только для k в пределах необработанного кадра).
Затем, если накопленный счет C определен меньшим чем или равным максимальному счету, обозначенному переменной dynMaxC, то пиксель может рассматриваться в качестве динамического дефекта. В одном варианте осуществления разные значения для dynMaxC могут быть предусмотрены для условий N=3 (угла), N=5 (края), и N=8. Эта логика выражена ниже:
<mo>≤</mo>
Если (C
dynMaxC), то текущий пиксель P является дефектным. (23)
k
Как упомянуто выше, расположение дефектных пикселей может сохраняться в таблице статических дефектов. В некоторых вариантах осуществления минимальное значение градиента (min(G)), вычисленное во время обнаружения динамического дефекта для текущего пикселя, может сохраняться и может использоваться для сортировки дефектных пикселей, так что большее минимальное значение градиента указывает большую «серьезность» дефекта и должно корректироваться во время коррекции пикселей раньше, чем корректируются менее серьезные дефекты. В одном варианте осуществления пикселю может быть необходимым обрабатываться на протяжении многочисленных кадров формирования изображений до сохранения в таблице статических дефектов, к примеру, посредством фильтрации расположений дефектных пикселей со временем. В последнем варианте осуществления расположение дефектного пикселя может сохраняться в таблице статических дефектов, только если дефект появляется в конкретном количестве следующих друг за другом изображений в одном и том же расположении. Кроме того, в некоторых вариантах осуществления таблица статических дефектов может быть выполнена с возможностью сортировать хранимые расположения дефектных пикселей на основании минимальных значений градиента. Например, самое высокое минимальное значение градиента может указывать дефект большей «серьезности». Посредством упорядочения расположений этим образом приоритет коррекции статического дефекта может устанавливаться так, чтобы наиболее серьезные или важные дефекты корректировались первыми. Дополнительно, таблица статических дефектов может обновляться со временем, чтобы включать в себя вновь обнаруженные статические дефекты и с упорядочением их соответствующим образом на основании их соответственных минимальных значений градиента.
av
1
2
1
2
1
2
2
Обнаружение спекла, которое может происходить параллельно с обработкой обнаружения динамического дефекта, описанной выше, может выполняться посредством определения, находится ли значение G (уравнение 20b) выше порогового значения spkTh обнаружения спекла. Подобно пороговому значению dynTh динамического дефекта пороговое значение spkTh спекла также может включать в себя постоянную и динамическую составляющие, указываемые ссылкой как spkTh и spkTh, соответственно. Вообще постоянная и динамическая составляющие spkTh и spkTh могут устанавливаться более «агрессивно» по сравнению со значениями dynTh и dynTh, для того чтобы избежать ложного обнаружения спекла на участках изображения, которые могут быть тяжелее текстурированы, или других, таких как текст, листва, некоторые структуры тканей и т.д. Соответственно, в одном варианте осуществления динамическая составляющая spkTh порогового значения спекла может увеличиваться для высокотекстурных областей формирования изображений и уменьшаться для «более плоских» или более равномерных участков. Пороговое значение spkTh обнаружения спекла может вычисляться, как показано ниже:
1
2
hf
<mo>×</mo>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
spkTh=spkTh+(spkTh
P),
(24)
1
2
при этом spkTh представляет постоянную составляющую порогового значения, и при этом spkTh представляет динамическую составляющую порогового значения. Обнаружение спекла затем может определяться в соответствии со следующим выражением:
av
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
если (G>spkTh), то текущий пиксель P подвергнут формированию спекла.
(25)
k
Как только дефектные пиксели были идентифицированы, логика 592 DPDC может применять операции коррекции пикселя в зависимости от типа обнаруженного дефекта. Например, если дефектный пиксель был идентифицирован в качестве статического дефекта, пиксель замещается сохраненным значением замещения, как описано выше (например, значением предыдущего пикселя такой же цветовой компоненты). Если пиксель был идентифицирован в качестве динамического дефекта или в качестве спекла, то коррекция пикселя может выполняться, как изложено ниже. Прежде всего градиенты вычисляются в качестве суммы абсолютных разностей между центральным пикселем и первым и вторым соседними пикселями (например, вычисление G по уравнению 19) для четырех направлений: горизонтального (h) направления, вертикального (v) направления, диагонально положительного направления (dp) и диагонально отрицательного направления (dn), как показано ниже:
h
3
4
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G=G+G
(26)
v
1
6
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G=G+G
(27)
dp
2
5
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G=G+G
(28)
dn
0
7
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G=G+G
(29)
C
h
v
dp
dn
C
Затем корректирующее значение P пикселя может определяться посредством линейной интерполяции двух соседних пикселей, связанных с направленным градиентом G, G, G, и G, которое имеет наименьшее значение. Например, в одном варианте осуществления логическое выражение, приведенное ниже, может выражать вычисление P:
h
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
если (min==G)
(30)
<mrow><msub><mi>P</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>P</mi><mn>3</mn></msub><mo>+</mo><msub><mi>P</mi><mn>4</mn></msub></mrow><mn>2</mn></mfrac></mrow>
;
v
иначе, если (min==G)
<mrow><msub><mi>P</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>P</mi><mn>1</mn></msub><mo>+</mo><msub><mi>P</mi><mn>6</mn></msub></mrow><mn>2</mn></mfrac></mrow>
;
dp
иначе, если (min==G)
<mrow><msub><mi>P</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>P</mi><mn>2</mn></msub><mo>+</mo><msub><mi>P</mi><mn>5</mn></msub></mrow><mn>2</mn></mfrac></mrow>
;
dn
иначе, если (min==G)
<mrow><msub><mi>P</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>P</mi><mn>0</mn></msub><mo>+</mo><msub><mi>P</mi><mn>7</mn></msub></mrow><mn>2</mn></mfrac></mrow>
.
Технологии коррекции пикселей, реализованные логикой 592 DPDC, также могут предусматривать исключения в граничных условиях. Например, если один из двух соседних пикселей, связанных с выбранным направлением интерполяции, находится вне необработанного кадра, то значение соседнего пикселя, который находится в пределах необработанного кадра, замещается взамен. Таким образом, с использованием этой технологии корректирующее значение пикселя будет эквивалентно значению соседнего пикселя в пределах необработанного кадра.
Должно быть отмечено, что технологии обнаружения/коррекции дефектных пикселей, применяемые логикой 592 DPDC во время конвейерной обработки ISP, являются более устойчивыми к ошибкам по сравнению с логикой 460 DPDC в логике 80 предварительной обработки ISP. Как описано в варианте осуществления, приведенном выше, логика 460 DPDC выполняет только обнаружение и коррекцию динамических дефектов с использованием соседних пикселей только в горизонтальном направлении, тогда как логика 592 DPDC предусматривает обнаружение и коррекцию статических дефектов, динамических дефектов, а также спекла, с использованием соседних пикселей как в горизонтальном, так и вертикальном направлениях.
k
Как будет принято во внимание, сохранение расположения дефектных пикселей с использованием таблицы статических дефектов может предусматривать временную фильтрацию дефектных пикселей с более низкими требованиями к памяти. Например, по сравнению с многими традиционными технологиями, которые сохраняют полные изображения и применяют временную фильтрацию для идентификации статических дефектов по времени, варианты осуществления настоящей технологии сохраняют только расположения дефектных пикселей, что типично может выполняться с использованием только доли памяти, требуемой для хранения полного кадра изображения. Кроме того, как описано выше, сохранение минимального значения градиента (min(G)) предоставляет возможность для эффективного использования таблицы статических дефектов с приоритезацией порядка расположений, в которых корректируются дефектные пиксели (например, начиная с тех, которые будут наиболее заметными).
2
2
Дополнительно, использование пороговых значений, которые включают в себя динамическую составляющую (например, dynTh и spkTh) может помогать уменьшать ложные обнаружения дефектов, проблему, часто встречаемую в традиционных системах обработки изображений при обработке высокотекстурных участков изображения (например, текста, листвы, некоторых структур ткани и т.д.). Кроме того, использование направленных градиентов (например, h, v, dp, dn) для коррекции пикселей может снижать появление визуальных артефактов, если происходит ложное обнаружение дефекта. Например, фильтрация в направлении минимального градиента может давать в результате коррекцию, которая по-прежнему дает приемлемые результаты в большинстве случаев, даже в случаях ложного обнаружения. Дополнительно, включение текущего пикселя P в вычисление градиента может улучшать точность обнаружения градиента, особенно в случае ярких пикселей.
0
Описанные выше технологии обнаружения и коррекции дефектных пикселей, реализованные логикой 592 DPDC, могут быть обобщены рядом блок-схем последовательностей операций способов, предусмотренных на фиг. 52-54. Например, сначала со ссылкой на фиг. 52, проиллюстрирована обработка 620 для обнаружения статических дефектов. Вначале, начиная с этапа 622, входной пиксель P принимается в первый момент T времени. Затем, на этапе 624, расположение пикселя P сравнивается со значениями, хранимыми в таблице статических дефектов. Логика 626 решений определяет, найдено ли расположение пикселя P в таблице статических дефектов. Если расположение P находится в таблице дефектных пикселей, то обработка 620 продолжается до этапа 628, на котором P помечается в качестве статического дефекта и определяется значение замещения. Как описано выше, значение замещения может определяться на основании значения предыдущего пикселя (в порядке сканирования) такой же цветовой составляющей. Обработка 620 затем продолжается до этапа 630, на котором обработка 620 переходит к обработке 640 обработки динамических дефектов и спеклов, проиллюстрированной на фиг. 53. Дополнительно, если в логике 626 решений расположение пикселя P определено не находящимся в таблице статических дефектов, то обработка 620 переходит на этап 630, не выполняя этап 628.
Продолжая по фиг. 53, входной пиксель P принимается в момент T1 времени, как показано этапом 642, для обработки, чтобы определять присутствует ли динамический дефект или спекл. Момент T1 времени может представлять временной сдвиг по отношению к обработке 620 обнаружения статических дефектов по фиг. 52. Как описано выше, обработка обнаружения динамических дефектов и спеклов может начинаться после того, как обработка обнаружения статических дефектов проанализировала две линии сканирования (например, строки) пикселей, таким образом, предоставляя времени для идентификации статических дефектов и их соответственных значений замещения возможность определяться до того, как происходит обнаружение динамических дефектов/спеклов.
av
Логика 644 решений определяет, был ли входной пиксель P помечен ранее в качестве статического дефекта (например, посредством этапа 628 обработки 620). Если P помечен в качестве статического дефекта, то обработка 640 может продолжаться обработкой коррекции пикселя, показанной на фиг. 54, и может обходить оставшуюся часть этапов, показанных на фиг. 53. Если логика 644 решений определяет, что входной пиксель P не является статическим дефектом, то обработка продолжается до этапа 646, и идентифицируются соседние пиксели, которые могут использоваться при обработке динамических дефектов и спеклов. Например, в соответствии с вариантом осуществления, описанным выше и проиллюстрированным на фиг. 51, соседние пиксели могут включать в себя 8 непосредственных соседей пикселя P (например, P0-P7), таким образом, формируя участок пикселей 3x3. Затем, на этапе 648, градиенты от пикселя к пикселю вычисляются в отношении каждого соседнего пикселя в пределах необработанного кадра 278, как описано в уравнении 19, приведенном выше. Дополнительно, средний градиент (G) может вычисляться в качестве разницы между текущим пикселем и средним значением его окружающих пикселей, как показано в уравнениях 20a и 20b.
Обработка 640, которая ответвляется на этап 650 для обнаружения динамических дефектов и в логику 658 решений для обнаружения спеклов. Как отмечено выше, обнаружение динамических дефектов и обнаружение спеклов в некоторых вариантах осуществления может происходить параллельно. На этапе 650 определяется счет C количества градиентов, которые являются меньшими чем или равными пороговому значению dynTh. Как описано выше, пороговое значение dynTh может включать в себя постоянную и динамическую составляющие, и, в одном варианте осуществления может определяться в соответствии с уравнением 21, приведенным выше. Если C является меньшим чем или равным максимальному счету, dynMaxC, то обработка 640 продолжается этапом 656, а текущий пиксель помечается в качестве являющегося динамическим дефектом. После этого обработка 640 может продолжаться обработкой коррекции пикселей, показанной на фиг. 54, которая будет описана ниже.
av
av
Возвращаясь к ветви после этапа 648, для обнаружения спеклов, логика 658 решений определяет, является ли средний градиент G большим, чем пороговое значение spkTh обнаружения спекла, который также может включать в себя постоянную и динамическую составляющую. Если G является большим, чем пороговое значение spkTh, то пиксель P помечается в качестве содержащего спекл на этапе 660, а после этого обработка 640 переходит на фиг. 54 для коррекции спеклового пикселя. Кроме того, если вывод обоих из блоков 652 и 658 логики решений имеет значение «Нет», то это указывает, что пиксель P не содержит в себе динамических дефектов, спекла или даже статических дефектов (логика 644 решений). Таким образом, когда выводы логики 652 и 658 решений оба имеют значение «Нет», обработка 640 может делать вывод, на этапе 654, в силу чего пиксель P передается неизменным, так как дефекты (например, статические, динамические или спекл) не были обнаружены.
Продолжая по фиг. 54, предусмотрена обработка 670 коррекции пикселей в соответствии с технологиями, описанными выше. На этапе 672 входной пиксель P принимается из обработки 640 по фиг. 53. Должно быть отмечено, что пиксель P может приниматься обработкой 670 с этапа 644 (статический дефект) или с этапа 656 (динамический дефект) и 660 (спекловый дефект). Логика 674 решений затем определяет, помечен ли пиксель P как статический дефект. Если пиксель P является статическим дефектом, то обработка 670 продолжается и заканчивается на этапе 676, в силу чего статический дефект корректируется с использованием значения замещения, определенного на этапе 628 (фиг. 52).
C
C
Если пиксель P не идентифицирован в качестве статического дефекта, то обработка 670 продолжается из логики 674 решений до этапа 678 и вычисляются направленные градиенты. Например, как описано выше со ссылкой на уравнения 26-29, градиенты могут вычисляться в качестве суммы абсолютных разностей между центральным пикселем и первым и вторым соседними пикселями для четырех направлений (h, v, dp и dn). Затем, на этапе 680, идентифицируется направленный градиент, имеющий наименьшее значение, а после этого логика 682 решений оценивает, расположен ли один из двух соседних пикселей, связанных с минимальным градиентом, вне кадра изображения (например, необработанного кадра 278). Если оба соседних пикселя находятся в пределах кадра изображения, то обработка 670 продолжается до этапа 684, и значение коррекции пикселя (P) определяется посредством применения линейной интерполяции к значениям двух соседних пикселей, как проиллюстрировано уравнением 30. После этого входной пиксель P может корректироваться с использованием значения P коррекции интерполированного пикселя, как показано на этапе 690.
C
C
C
Возвращаясь к логике 682 решений, если определено, что один из двух соседних пикселей расположен вне кадра изображения (например, необработанного кадра 165), то вместо использования значения наружного пикселя (Pout) логика 592 DPDC может заменять значение Pout значением другого соседнего пикселя, который находится внутри кадра изображения (Pin), как показано на этапе 686. После этого, на этапе 688, значение P коррекции пикселя определяется посредством интерполяции значений Pin и замещенного значения Pout. Другими словами, в этом случае, P может быть эквивалентен значению Pin. В завершение, на этапе 690, пиксель P корректируется с использованием значения P. Перед продолжением, должно быть понятно, что конкретные обработки обнаружения и коррекции дефектных пикселей, описанные в материалах настоящей заявки со ссылкой на логику 592 DPDC, подразумеваются отражающими всего лишь один из возможных вариантов осуществления настоящей технологии. Действительно, в зависимости от конструктивных и/или стоимостных ограничений возможно некоторое количество вариантов, и признаки могут быть добавлены и удалены так, чтобы общая сложность и надежность логики 460 обнаружения/коррекции дефектов находились между более простой логикой 460 обнаружения/коррекции, реализованной в модуле 80 предварительной обработки ISP, и логикой обнаружения/коррекции дефектов, описанной здесь со ссылкой на логику 592 DPDC.
Возвращаясь к фиг. 50, скорректированные пиксельные данные выводятся из логики 592 DPDC, а затем принимаются логикой 594 подавления шумов для дальнейшей обработки. В одном варианте осуществления логика 594 подавления шумов может быть выполнена с возможностью реализовывать двухмерную приспосабливающуюся к контуру фильтрацию нижних частот для подавления шума в данных изображения наряду с сохранением детализации и текстур. Приспосабливающиеся к контуру пороговые значения могут устанавливаться (например, логикой 84 управления) на основании присутствующих уровней освещения так, чтобы фильтрация могла усиливаться в условиях низкой освещенности. Кроме того, как кратко упомянуто выше со ссылкой на определение значений dynTh и spkTh, дисперсия шума может определяться раньше для данного датчика, так что пороговые значения подавления шумов могут устанавливаться непосредственно выше дисперсии шума так, чтобы во время обработки подавления шумов шум подавлялся без значительного влияния на текстуры и детализацию сцены (например, чтобы избегать/снижать ложные обнаружения). При условии реализации цветового фильтра Байера логика 594 подавления шумов может обрабатывать независимо каждую цветовую компоненту Gr, R, B и Gb с использованием разделяемых 7-отводного горизонтального фильтра и 5-отводного вертикального фильтра. В одном варианте осуществления обработка подавления шумов может выполняться посредством коррекции неоднородности в цветовых компонентах зеленого (Gb и Gr), а затем выполнения горизонтальной фильтрации и вертикальной фильтрации.
Неоднородность зеленого (GNU) обычно отличается легким яркостным контрастом между пикселями Gr и Gb при условии равномерно освещенной плоской поверхности. Без коррекции или компенсации этой неравномерности некоторые артефакты, такие как артефакты «лабиринта», могут появляться в полноцветном изображении после устранения мозаичности. Во время обработки неравномерности зеленого она может включать в себя определение, для каждого пикселя зеленого в данных необработанного изображения Байера, является ли абсолютная разность между текущим пикселем (G1) зеленого и пикселем зеленого справа и ниже (G2) текущего пикселя меньшей, чем пороговое значение коррекции GNU (gnuTh). Фиг. 55 иллюстрирует расположение пикселей G1 и G2 в области 2x2 структуры Байера. Как показано, цвет пикселей, окаймляющих 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, как показано логикой, приведенной ниже:
<mo>≤</mo>
<mrow><mi>G</mi><mn>1</mn><mo>=</mo><mfrac><mrow><mi>G</mi><mn>1</mn><mo>+</mo><mi>G</mi><mn>2</mn></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
если (abs(G1-G2)
gnuTh);
(31)
Как может быть принято во внимание, применение коррекции неравномерности зеленого таким образом может помочь предохранить пиксели G1 и G2 от усреднения на контурах, таким образом, улучшая и/или сохраняя резкость.
Горизонтальная фильтрация применяется в след за коррекцией неравномерности зеленого и, в одном варианте осуществления может предусматривать 7-отводный горизонтальный фильтр. Вычисляются градиенты на краях каждого отвода фильтра, и если они выше порогового значения горизонтального контура (horzTh), отвод фильтра сворачивается к центральному пикселю, как будет проиллюстрировано ниже. Горизонтальный фильтр может обрабатывать данные изображения независимо для каждой цветовой компоненты (R, B, Gr, Gb) и может использовать нефильтрованные значения в качестве входных значений.
В качестве примера фиг. 56 показывает графическое изображение набора пикселей с P0 по P6 по горизонтали, с центральным отводом, расположенным на P3. На основании пикселей, показанных на фиг. 56, градиенты контура для каждого отвода фильтра могут вычисляться, как изложено ниже:
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh0 = abs(P0-P1)
(32)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh1 = abs(P1-P2)
(33)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh2 = abs(P2-P3)
(34)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh3 = abs(P3-P4)
(35)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh4 = abs(P4-P5)
(36)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Eh5 = abs(P5-P6)
(37)
horz
Градиенты Eh0-Eh5 контура затем могут использоваться горизонтальной составляющей фильтра для определения вывода, P горизонтальной фильтрации, с использованием формулы, показанной в уравнении 38, приведенном ниже:
horz
при этом horzTh[c] - пороговое значение горизонтального контура для каждой цветовой компоненты c (например, R, B, Gr и Gb) и при этом C0-C6 - коэффициенты отводов фильтра, соответствующие пикселям P0-P6, соответственно. Вывод P горизонтального фильтра может применяться в расположении центрального пикселя P3. В одном варианте осуществления коэффициенты C0-C6 отводов фильтра могут быть 16-битными дополняющими значениями двух с 3 целочисленными битами и 13 дробными битами (3.13 при плавающей точке). Кроме того, должно быть понятно, что коэффициентам C0-C6 отводов фильтра необязательно быть симметричными относительно центрального пикселя P3.
Вертикальная фильтрация также применяется логикой 594 подавления шумов вслед за обработками коррекции неравномерности и горизонтальной фильтрации зеленого цвета. В одном варианте осуществления операция вертикального фильтра может предусматривать 5-отводный фильтр, как показано на фиг. 57, с центральным отводом вертикального фильтра, расположенным на P2. Обработка вертикальной фильтрации может происходить подобным образом, как обработка горизонтальной фильтрации, описанная выше. Например, вычисляются градиенты на контуре каждого отвода фильтра и, если он находится выше порогового значения вертикального контура (vertTh), отвод фильтра складывается к центральному пикселю P2. Вертикальный фильтр может обрабатывать данные изображения независимо для каждой цветовой компоненты (R, B, Gr, Gb) и может использовать нефильтрованные значения в качестве входных значений.
На основании пикселей, показанных на фиг. 57, градиенты вертикального контура для каждого отвода фильтра могут вычисляться, как изложено ниже:
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Ev0 = abs(P0-P1)
(39)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Ev1 = abs(P1-P2)
(40)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Ev2 = abs(P2-P3)
(41)
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Ev3 = abs(P3-P4)
(42)
vert
Градиенты Ev0-Ev5 затем могут использоваться вертикальным фильтром для определения выходного сигнала, P вертикальной фильтрации, с использованием формулы, показанной в уравнении 43, приведенном ниже:
vert
при этом vertTh[c] - пороговое значение вертикального контура для каждой цветовой компоненты c (например, R, B, Gr и Gb) и при этом C0-C4 - коэффициенты отводов фильтра, соответствующие пикселям P0-P4 по фиг. 57, соответственно. Вывод P вертикального фильтра может применяться в расположении центрального пикселя P2. В одном варианте осуществления коэффициенты C0-C4 отводов фильтра могут быть 16-битными дополняющими значениями двух с 3 целочисленными битами и 13 дробными битами (3.13 при плавающей точке). Кроме того, должно быть понятно, что коэффициентам C0-C4 отводов фильтра не обязательно быть симметричными относительно центрального пикселя P2.
Дополнительно, что касается граничных условий, когда соседние пиксели находятся вне необработанного кадра 278 (фиг. 19), значения пикселей вне границы повторяются значением пикселем того же цвета на контуре необработанного кадра. Это правило может быть реализовано для операций как горизонтальной, так и вертикальной фильтрации. В качестве примера, вновь со ссылкой на фиг. 56, в случае горизонтальной фильтрации, если пиксель P2 является контурным пикселем на самой левой кромке необработанного кадра, а пиксели P0 и P1 находятся вне необработанного кадра, то значения пикселей P0 и P1 замещаются значением пикселя P2 для горизонтальной фильтрации.
Вновь возвращаясь к структурной схеме логики 562 обработки необработанных пикселей, показанной на фиг. 50, вывод логики 594 подавления шумов впоследствии отправляется к логике 596 коррекции затенения объектива (LSC) для обработки. Как описано выше, технологии коррекции затенения объектива могут включать в себя применение надлежащего коэффициента усиления на попиксельной основе для компенсации падений интенсивности освещения, которые могут быть результатом геометрической оптики объектива, изъянов изготовления, нарушения соосности матрицы микролинз и цветового матричного фильтра, и так далее. Кроме того, фильтр инфракрасного излучения (IR) в некоторых объективах может вынуждать падение быть зависящим от источника света и, таким образом, коэффициенты усиления затенения объектива могут приспосабливаться в зависимости от обнаруженного источника света.
В изображенном варианте осуществления логика 596 LSC конвейера 82 ISP может быть реализована подобным образом, и, таким образом, предусматривать в целом такие же функции, как логика 664 LSC модуля 80 предварительной обработки ISP, как описано выше со ссылкой на фиг. 40-48. Соответственно, для того чтобы избежать избыточности должно быть понятно, что логика 596 LSC проиллюстрированного на данный момент варианта осуществления выполнена с возможностью работать в целом таким же образом, как логика 460 LSC, и, как таковое, описание технологий коррекции затенения объектива, предоставленное выше, здесь повторяться не будет. Однако чтобы в целом подвести итог вышесказанному, должно быть понятно, что логика 596 LSC может независимо обрабатывать каждую цветовую компоненту потока данных необработанных пикселей, чтобы определять коэффициент усиления для применения к текущему пикселю. В соответствии с описанными выше вариантами осуществления коэффициент усиления коррекции затенения объектива может определяться на основании определенного набора точек сетки усиления, распределенных по кадру изображения, при этом интервал между каждой точкой сетки определен количеством пикселей (например, 8 пикселями, 16 пикселями, и т.д.). Если расположение текущего пикселя соответствует точке сетки, то значение усиления, связанное с такой точкой сетки, применяется к текущему пикселю. Однако, если расположение текущего пикселя находится между точками сетки (например, G0, G1, G2 и G3 по фиг. 43), то значение усиления LSC может вычисляться посредством интерполяции точек сетки, между которыми расположен текущий пиксель (уравнений 13a и 13b). Эта обработка изображена обработкой 528 по фиг. 44. Кроме того, как упомянуто выше со ссылкой на фиг. 42, в некоторых вариантах осуществления точки сетки могут быть распределены неравномерно (например, логарифмически), так что точки сетки являются менее сконцентрированными в центре области 504 LSC, но более сконцентрированными к углам области 504 LSC, где типично более заметно искажение затенения объектива.
Дополнительно, как описано выше со ссылкой на фиг. 47 и 48, логика 596 LSC также может применять радиальную составляющую коэффициента усиления со значениями усиления сетки. Радиальная составляющая коэффициента усиления может определяться на основании расстояния текущего пикселя от центра изображения (уравнений 14-16). Как упомянуто, использование радиального коэффициента усиления предоставляет возможность для использования единой общей сетки усиления для всех цветовых компонент, которые могут сильно сокращать суммарное пространство памяти, требуемое для хранения отдельных сеток усиления для каждой цветовой компоненты. Это сокращение данных усиления сетки может уменьшать затраты на реализацию, так как таблицы данных усиления сетки могут нести ответственность за значительную часть памяти или площадь кристалла в аппаратном обеспечении обработки изображений.
Затем, вновь со ссылкой на структурную схему 562 логики обработки необработанных пикселей по фиг. 50, вывод логики 596 LSC затем передается во второй блок 598 усиления, смещения и усечения (GOC). Логика 598 GOC может применяться перед устранением мозаичности (логическим блоком 600) и может использоваться для выполнения автоматической балансировки белого над выводом логики 596 LSC. В изображенном варианте осуществления логика 598 GOC может быть реализована таким же образом, как логика 590 GOC (и логика 462 BLC). Таким образом, в соответствии с уравнением 11, приведенным выше, ввод, принятый логикой 598 GOC, сначала смещается на значение со знаком, а затем умножается на коэффициент усиления. Результирующее значение затем усекается диапазоном максимального значения и минимального значения в соответствии с уравнением 12.
После этого выходной сигнал логики 598 GOC пересылается к логике 600 устранения мозаичности для обработки, чтобы вырабатывать полноцветное изображение (RGB) на основании необработанных входных данных Байера. Как будет принято во внимание, необработанный выходной сигнал датчика изображений, использующего матрицу цветовых фильтров, такую как фильтр Байера, является «неполным» в том смысле, что каждый пиксель фильтруется, чтобы получать только одну цветовую компоненту. Таким образом, данные, собранные для отдельного пикселя в одиночку, недостаточны для определения цвета. Соответственно, технологии устранения мозаичности могут использоваться для формирования полноцветного изображения из необработанных данных Байера посредством интерполяции отсутствующих цветовых данных для каждого пикселя.
Далее, со ссылкой на фиг. 58, проиллюстрирована последовательность 692 операций графической обработки, которая дает общий обзор в отношении того, каким образом устранение мозаичности может применяться к структуре 694 необработанного изображения Байера, чтобы вырабатывать полноцветное RGB. Как показано, участок 696 4x4 необработанного изображения 694 Байера может включать в себя отдельные каналы для каждой цветовой компоненты, в том числе канал 698 зеленого, канал 700 красного и канал 702 синего. Так как каждый пиксель формирования изображений в датчике Байера получает данные только для одного цвета, цветовые данные для каждого цветового канала 698, 700 и 702 могут быть неполными, как указано символами «?». Посредством применения технологии 704 устранения мозаичности отсутствующие цветовые выборки из каждого канала могут интерполироваться. Например, как показано номером 706 ссылки, интерполированные данные G' могут использоваться для заполнения недостающих выборок в цветовом канале зеленого. Подобным образом, интерполированные данные R' (в комбинации с интерполированными данными 706 G') могут использоваться для заполнения недостающих выборок в цветовом канале 708 красного, интерполированные данные B' (в комбинации с интерполированными данными 706 G') могут использоваться для заполнения недостающих выборок в цветовом канале 710 синего. Таким образом, в результате обработки устранения мозаичности каждый цветовой канал (R, G, B) будет иметь полный набор цветовых данных, который затем может использоваться для реконструирования полноцветного изображения 712 RGB.
Технология устранения мозаичности, которая может быть реализована логикой 600 устранения мозаичности, далее будет описана в соответствии с одним вариантом осуществления. В цветовом канале зеленого недостающие цветовые выборки могут интерполироваться с использованием направленного фильтра нижних частот на известных выборках зеленого и фильтра верхних частот (или градиентного фильтра) на смежных цветовых каналах (например, красного и синего). Что касается цветовых каналов красного и синего, недостающие цветовые выборки могут интерполироваться подобным образом, но посредством использования фильтрации нижних частот на известных значениях красного или синего цвета и фильтрации верхних частот на совместно расположенных интерполированных значениях зеленого цвета. Кроме того, в одном варианте осуществления устранение мозаичности в цветовом канале зеленого может использовать приспосабливающийся к контуру фильтр блока пикселей 5x5 на основании исходных цветовых данных Байера. Как будет дополнительно описано ниже, использование приспосабливающегося к контуру фильтра может предусматривать непрерывное взвешивание на основании градиентов подвергнутых горизонтальной и вертикальной фильтрации значений, которое уменьшает появление некоторых артефактов, таких как артефакты двоения изображения, «шахматной доски» и «радуги», обычно наблюдаемых в традиционных технологиях устранения мозаичности.
Во время устранения мозаичности в канале зеленого цвета используются исходные значения для пикселей зеленого (пикселей Gr и Gb) структуры изображения Байера. Однако для того чтобы получать полный набор данных для канала зеленого цвета, значения пикселей зеленого могут интерполироваться на пикселях красного и синего структуры изображения Байера. В соответствии с настоящей технологией горизонтальные и вертикальные составляющие энергии, соответственно указываемые ссылкой как Eh и Ev, сначала вычисляются в пикселях красного и синего на основании вышеупомянутого блока пикселей 5x5. Значения Eh и Ev могут использоваться для получения взвешенного контуром фильтрованного значения из этапов горизонтальной и вертикальной фильтрации, как дополнительно описано ниже.
В качестве примера фиг. 59 иллюстрирует вычисление значений Eh и Ev для пикселя красного, центрированного в блоке пикселей 5x5 в расположении (j, i), при этом j строке, а i соответствует столбцу. Как показано, вычисление Eh принимает во внимание средние три строки (j-1, j, j+1) блока пикселей 5x5, а расчет Ev принимает во внимание средние три столбца (i-1, i, i+1) блока пикселей 5x5. Для вычисления 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). Эти вычисления проиллюстрированы уравнениями 44 и 45, приведенными ниже:
Таким образом, общая сумма энергии может быть выражена в качестве: Eh+Ev. Кроме того, несмотря на то, что пример, показанный на фиг. 59, иллюстрирует вычисление Eh и Ev для центрального пикселя красного (j, i), должно быть понятно, что значения Eh и Ev могут определяться подобным образом для центральных пикселей синего.
Затем горизонтальная и вертикальная фильтрация может применяться к структуре Байера для получения фильтрованных значений Gh и Gv по вертикали и по горизонтали, которые могут представлять интерполированные значения зеленого в горизонтальном и вертикальном направлениях, соответственно. Фильтрованные значения Gh и Gv могут определяться с использованием фильтра нижних частот на известных соседних выборках зеленого в дополнение к использованию направленных градиентов соседнего цвета (R или B) для получения высокочастотного сигнала в расположениях недостающих выборок зеленого. Например, со ссылкой на фиг. 60 далее будет проиллюстрирован пример горизонтальной интерполяции для определения Gh.
Как показано на фиг. 60, пять пикселей (R0, G1, R2, G3 и R4) по горизонтали линии 714 красного изображения Байера, в которых R2 предполагается центральным пикселем на (j, i), могут рассматриваться при определении Gh. Коэффициенты фильтрации, связанные с каждым из этих пяти пикселей, указаны номером 716 ссылки. Соответственно, интерполяция значения зеленого цвета, указанного ссылкой как G2', для центрального пикселя R2, может определяться, как изложено ниже:
<mrow><mfrac><mrow><mi>G</mi><mn>1</mn><mo>+</mo><mi>G</mi><mn>3</mn></mrow><mn>2</mn></mfrac></mrow>
<mrow><mfrac><mrow><mn>2</mn><mi>R</mi><mn>2</mn><mo>−</mo><mrow><mo>(</mo><mrow><mfrac><mrow><mi>R</mi><mn>0</mn><mo>+</mo><mi>R</mi><mn>2</mn></mrow><mn>2</mn></mfrac></mrow><mo>)</mo></mrow><mo>−</mo><mrow><mo>(</mo><mrow><mfrac><mrow><mi>R</mi><mn>2</mn><mo>+</mo><mi>R</mi><mn>4</mn></mrow><mn>2</mn></mfrac></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G2'=
+
(46)
Различные математические операции, в таком случае, могут использоваться для создания выражения для G2', показанного в уравнениях 47 и 48, приведенных ниже:
<mrow><mfrac><mrow><mn>2</mn><mi>G</mi><mn>1</mn><mo>+</mo><mn>2</mn><mi>G</mi><mn>3</mn></mrow><mn>4</mn></mfrac></mrow>
<mrow><mfrac><mrow><mn>4</mn><mi>R</mi><mn>2</mn><mo>−</mo><mi>R</mi><mn>0</mn><mo>−</mo><mi>R</mi><mn>2</mn><mo>−</mo><mi>R</mi><mn>2</mn><mo>−</mo><mi>R</mi><mn>4</mn></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G2'=
+
(47)
<mrow><mfrac><mrow><mn>2</mn><mi>G</mi><mn>1</mn><mo>+</mo><mn>2</mn><mi>G</mi><mn>3</mn><mo>+</mo><mn>2</mn><mi>R</mi><mn>2</mn><mo>−</mo><mi>R</mi><mn>0</mn><mo>−</mo><mi>R</mi><mn>4</mn></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G2'=
(48)
Таким образом, со ссылкой на фиг. 60 и уравнения 46-48, приведенные выше, общее выражение для горизонтальной интерполяции для данного значения на (j, i) может быть выведено в качестве:
<mrow><mfrac><mrow><mo stretchy="false">(</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo stretchy="false">)</mo><mo>−</mo><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>−</mo><mn>2</mn><mo stretchy="false">)</mo><mo>−</mo><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>2</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Gh=
(49)
Вертикальная составляющая Gv фильтрации может определяться подобным образом, как Gh. Например, со ссылкой на фиг. 61, пять пикселей по вертикали (R0, G1, R2, G3 и R4) столбца 718 красного из изображения Байера и их соответственные коэффициенты 720 фильтрации, в которых R2 предполагается центральным пикселем на (j, i), могут рассматриваться при определении Gv. С использованием фильтрации нижних частот на известных выборках зеленого цвета и фильтрации верхних частот в канале красного в вертикальном направлении следующее выражение может быть выведено для Gv:
<mrow><mfrac><mrow><mo stretchy="false">(</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>1,</mn><mi>i</mi><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>1,</mn><mi>i</mi><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>,</mo><mi>i</mi><mo stretchy="false">)</mo><mo>−</mo><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>−</mo><mn>2,</mn><mi>i</mi><mo stretchy="false">)</mo><mo>−</mo><mi>P</mi><mo stretchy="false">(</mo><mi>j</mi><mo>+</mo><mn>2,</mn><mi>i</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Gv=
(50)
Несмотря на то, что примеры, описанные в материалах настоящей заявки, показали интерполяцию значений зеленого цвета на пикселе красного, должно быть понятно, что выражения, изложенные в уравнениях 49 и 50, также могут использоваться при горизонтальной и вертикальной интерполяции значений зеленого цвета для пикселей синего.
Заключительное интерполированное значение G' зеленого цвета для центрального пикселя (j, i) может определяться посредством взвешивания выводов горизонтального и вертикального фильтров (Gh и Gv) составляющими энергии (Eh и Ev), описанными выше, чтобы давать следующее уравнение:
<mrow><mrow><mo>(</mo><mrow><mfrac><mrow><mi>E</mi><mi>v</mi></mrow><mrow><mi>E</mi><mi>h</mi><mo>+</mo><mi>E</mi><mi>v</mi></mrow></mfrac></mrow><mo>)</mo></mrow><mi>G</mi><mi>h</mi><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><mi>E</mi><mi>h</mi></mrow><mrow><mi>E</mi><mi>h</mi><mo>+</mo><mi>E</mi><mi>v</mi></mrow></mfrac></mrow><mo>)</mo></mrow><mi>G</mi><mi>v</mi></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
G'(j, i)=
(51)
Как описано выше, составляющие Eh и Ev энергии могут предусматривать приспосабливающееся к контуру взвешивание выводов Gh и Gv горизонтального и вертикального фильтров, которое может помогать уменьшать артефакты изображения, такие как артефакты радуги, двоения изображения или шахматной доски в реконструированном изображении RGB. Дополнительно, логика 600 устранения мозаичности может предусматривать возможность для обхода признака, приспосабливающегося к контуру взвешивания посредством установки каждого из значений Eh и Ev в 1 так, чтобы Gh и Gv были равновзвешенными.
В одном варианте осуществления горизонтальные и вертикальные весовые коэффициенты, показанные в уравнении 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-битных значений с плавающей точкой), квантование весовых коэффициентов может снижать сложность реализации при определении и применении весовых коэффициентов к выводам горизонтального и вертикального фильтра.
В дополнительных вариантах осуществления раскрытые на данный момент технологии, в дополнение к определению и использованию горизонтальной и вертикальной составляющих энергии для применения весовых коэффициентов к подвергнутым горизонтальной (Gh) и вертикальной (Gv) фильтрации значениям, также могут определять и использовать составляющие в диагонально положительном и диагонально отрицательном направлениях. Например, в таких вариантах осуществления фильтрация также может применяться в диагонально положительном и диагонально отрицательном направлениях. Взвешивание выводов фильтра может включать в себя выбор двух составляющих наивысшей энергии и использование выбранных составляющих энергии для взвешивания их соответственных выводов фильтра. Например, при условии, что две составляющих наивысшей энергии соответствуют вертикальному и диагонально положительному направлениям, вертикальная и диагонально положительная составляющие энергии используются для взвешивания выводов вертикального и диагонально положительного фильтра, чтобы определять интерполированное значение зеленого цвета (например, в расположении пикселей красного и синего в структуре Байера).
Затем устранение мозаичности в цветовых каналах красного и синего может выполняться посредством интерполяции значений красного и синего цвета на пикселях зеленого структуры изображения Байера, интерполяции значений красного цвета на пикселях синего структуры изображения Байера и интерполяции значений синего цвета на пикселях красного структуры изображения Байера. В соответствии с настоящими описанными технологиями значения недостающих пикселей красного и синего могут интерполироваться с использованием фильтрации нижних частот на основании известных соседних пикселей красного и синего и фильтрации верхних частот на основании совместно расположенных значений пикселей зеленого, которые могут быть исходными или интерполированными значениями (из обработки устранения мозаичности канала зеленого цвета, описанной выше) в зависимости от расположения текущего пикселя. Таким образом, в отношении таких вариантов осуществления должно быть понятно, что сначала может выполняться интерполяция недостающих значений зеленого цвета так, чтобы полный набор значений зеленого цвета (как исходных, так и интерполированных значений) был доступен при интерполяции недостающих выборок красного и синего.
11
11
Интерполяция значений пикселей красного и синего может быть описана со ссылкой на фиг. 62, которая иллюстрирует различные блоки 3x3 структуры изображения Байера, к которой может применяться устранение мозаичности красного и синего цвета, а также интерполированные значения зеленого цвета (обозначенные посредством G'), которые могли быть получены во время устранения мозаичности в канале зеленого цвета. Сначала со ссылкой на блок 722, интерполированное значение красного цвета, R', для пикселя Gr (G) может определяться, как изложено ниже:
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>R</mi><mrow><mn>10</mn></mrow></msub><mo>+</mo><msub><mi>R</mi><mrow><mn>12</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>10</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>12</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(52)
10
12
11
11
где G' и G' представляют интерполированные значения зеленого цвета, как показано номером 730 ссылки. Подобным образом, интерполированное значение синего цвета, B', для пикселя Gr (G) может определяться, как изложено ниже:
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>B</mi><mrow><mn>01</mn></mrow></msub><mo>+</mo><msub><mi>B</mi><mrow><mn>21</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>01</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>21</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(53)
01
21
при этом G' и G' представляют интерполированные значения зеленого цвета (730).
11
11
11
Затем со ссылкой на блок 724 пикселей, в котором центральный пиксель является пикселем Gb (G), интерполированное значение красного цвета, R' и значение синего цвета B' могут определяться, как показано в уравнениях 54 и 55, приведенных ниже:
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>R</mi><mrow><mn>01</mn></mrow></msub><mo>+</mo><msub><mi>R</mi><mrow><mn>21</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>01</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>21</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(54)
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>B</mi><mrow><mn>10</mn></mrow></msub><mo>+</mo><msub><mi>B</mi><mrow><mn>12</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>2</mn><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>10</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>12</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(55)
11
Кроме того, со ссылкой на блок 726 пикселей, интерполяция значения красного цвета на пикселе синего, B, может определяться, как изложено ниже:
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>R</mi><mrow><mn>00</mn></mrow></msub><mo>+</mo><msub><mi>R</mi><mrow><mn>02</mn></mrow></msub><mo>+</mo><msub><mi>R</mi><mrow><mn>20</mn></mrow></msub><mo>+</mo><msub><mi>R</mi><mrow><mn>22</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mi>G</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>00</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>02</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>20</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>22</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(56)
00
02
11
20
22
при этом G', G', G', G' и G' представляют интерполированные значения зеленого цвета, как показано номером 732 ссылки. В заключение, интерполяция значения синего цвета на пикселе красного, как показано блоком 728 пикселей, может вычисляться, как изложено ниже:
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mrow><msub><mi>B</mi><mrow><mn>00</mn></mrow></msub><mo>+</mo><msub><mi>B</mi><mrow><mn>02</mn></mrow></msub><mo>+</mo><msub><mi>B</mi><mrow><mn>20</mn></mrow></msub><mo>+</mo><msub><mi>B</mi><mrow><mn>22</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mrow><mn>4</mn><mi>G</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>00</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>02</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>20</mn></mrow></msub><mo>−</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>22</mn></mrow></msub></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(57)
Несмотря на то, что вариант осуществления, описанный выше, полагался на цветовые контрасты (например, градиенты) для определения интерполированных значений красного и синего цвета, еще один вариант осуществления может предусматривать интерполированные значения красного и синего цвета с использованием цветовых соотношений. Например, интерполированные значения зеленого цвета (блоки 730 и 732) могут использоваться для получения цветового соотношения в расположениях пикселей красного и синего структуры изображения Байера, и линейная интерполяция соотношений может использоваться для определения интерполированного цветового соотношения для недостающей цветовой выборки. Значение зеленого цвета, которое может быть интерполированным или исходным значением, может умножаться на интерполированное цветовое соотношение для получения заключительного интерполированного цветового значения. Например, интерполяция значений пикселей красного и синего с использованием цветовых соотношений может выполняться в соответствии с формулами, приведенными ниже, при этом уравнения 58 и 59 показывают интерполяцию значений красного и синего цвета для пикселя Gr, уравнения 60 и 61 показывают интерполяцию значений красного и синего цвета для пикселя Gb, уравнение 62 показывает интерполяцию значения красного цвета на пикселе синего, и уравнение 63 показывает интерполяцию значения синего цвета на пикселе красного:
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>10</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>10</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>12</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>12</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(58)
11
11
(R' интерполируется, когда G является пикселем Gr)
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>01</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>01</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>21</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>21</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(59)
11
11
(B' интерполируется, когда G является пикселем Gr)
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>01</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>01</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>21</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>21</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(60)
11
11
(R' интерполируется, когда G является пикселем Gb)
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><msub><mi>G</mi><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>10</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>10</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>12</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>12</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(61)
11
11
(B' интерполируется, когда G является пикселем Gb)
<mrow><mi>R</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>00</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>00</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>02</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>02</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>20</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>20</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>R</mi><mrow><mn>22</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>22</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(62)
11
11
(R'интерполируется на пикселе Bсинего)
<mrow><mi>B</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mo>=</mo><mi>G</mi><msub><mo>'</mo><mrow><mn>11</mn></mrow></msub><mfrac><mrow><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>00</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>00</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>02</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>02</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>20</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>20</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mfrac><mrow><msub><mi>B</mi><mrow><mn>22</mn></mrow></msub></mrow><mrow><mi>G</mi><msub><mo>'</mo><mrow><mn>22</mn></mrow></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow><mn>4</mn></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(63)
11
11
(B' интерполируется на пикселе R красного)
Как только недостающие цветовые выборки были интерполированы для каждого пикселя изображения из структуры изображения Байера, полная выборка цветовых значений для каждого из цветовых каналов красного, синего и зеленого (например, 706, 708 и 710 по фиг. 58) может комбинироваться для выработки полноцветного изображения RGB. Например, возвращаясь к фиг. 49 и 50, выходной сигнал 572 логики 562 обработки необработанных пикселей может быть сигналом изображения RGB в 8, 10, 12 или 14-битном форматах.
Далее, со ссылкой на фиг. 63-66 проиллюстрированы различные блок-схемы последовательности операций способа, иллюстрирующие процессы обработки для устранения мозаичности структуры необработанного изображения Байера в соответствии с раскрытыми вариантами осуществления. Более точно, обработка 740 по фиг. 63 изображает определение того, какие цветовые компоненты должны интерполироваться для данного выходного пикселя P. На основании определения посредством обработки 740 может выполняться одна или более из обработки 750 (фиг. 64) для интерполяции значения зеленого цвета, обработки 762 (фиг. 65) для интерполяции значения красного цвета или обработки 774 (фиг. 66) для интерполяции значения синего цвета (например, посредством логики 600 устранения мозаичности).
Начиная с фиг. 63, обработка 740 начинается на этапе 741, когда принимается входной пиксель P. Логика 742 решений определяет цвет выходного пикселя. Например, это может зависеть от расположения пикселя в пределах структуры изображения Байера. Соответственно, если P идентифицирован в качестве являющегося пикселем зеленого (например, Gr или Gb), обработка 740 переходит на этап 744 для получения интерполированных значений красного и синего цвета для P. Это, например, может включать в себя продолжение движения на обработки 762 и 774 по фиг. 65 и 66, соответственно. Если P идентифицирован в качестве являющегося пикселем красного, то обработка 740 переходит на этап 746 для получения интерполированных значений зеленого и синего цвета для P. Это, кроме того, может включать в себя выполнение процессов 750 и 774 обработки по фиг. 64 и 66, соответственно. Дополнительно, если P идентифицирован в качестве являющегося пикселем синего, то обработка 740 переходит на этап 748 для получения интерполированных значений зеленого и красного цвета для P. Это, кроме того, может включать в себя выполнение процессов 750 и 762 обработки по фиг. 64 и 65, соответственно. Каждый из процессов 750, 762 и 774 обработки дополнительно описан ниже.
Обработка 750 для определения интерполированного значения зеленого цвета для входного пикселя P проиллюстрирована на фиг. 64 и включает в себя этапы 752-760. На этапе 752 принимается входной пиксель P (например, из обработки 740). Затем, на этапе 754, идентифицируется набор соседних пикселей, формирующих блок пикселей 5x5, причем P является центром блока 5x5. После этого блок пикселей анализируется для определения горизонтальной и вертикальной составляющих энергии на этапе 756. Например, горизонтальная и вертикальная составляющие энергии могут определяться в соответствии с уравнениями 44 и 45 для вычисления Eh и Ev, соответственно. Как описано, составляющие Eh и Ev энергии могут использоваться в качестве весовых коэффициентов для обеспечения приспосабливающейся к контуру фильтрации, а потому уменьшение появления некоторых артефактов устранения мозаичности в заключительном изображении. На этапе 758 фильтрация нижних частот и фильтрация верхних частот применяются в горизонтальном и вертикальном направлениях для определения выходных сигналов горизонтальной и вертикальной фильтрации. Например, выходные сигналы горизонтальной и вертикальной фильтрации, Gh и Gv, могут вычисляться в соответствии с уравнениями 49 и 50. Затем обработка 740 продолжается до этапа 760, на котором интерполированное значение G' зеленого цвета интерполируется на основании значений Gh и Gv, взвешенных составляющими Eh и Ev энергии, как показано в уравнении 51.
Затем, в отношении обработки 762 по фиг. 65, интерполяция значений красного цвета может начинаться на этапе 764, на котором принимается входной пиксель P (например, из обработки 740). На этапе 766 идентифицируется набор соседних пикселей, формирующих блок пикселей 3x3, причем P является центром блока 3x3. После этого фильтрация нижних частот применяется к соседним пикселям красного в пределах блока 3x3 на этапе 768, и фильтрация верхних частот применяется (этап 770) к совместно расположенным соседним значениям зеленого цвета, которые могут быть исходными значениями зеленого цвета, захваченными датчиком изображений Байера, или интерполированными значениями (например, определенными посредством обработки 750 по фиг. 64). Интерполированное значение R' красного цвета для P может определяться на основании выходных сигналов фильтрации нижних частот и верхних частот, как показано на этапе 772. В зависимости от цвета P, R' может определяться в соответствии с одним из уравнений 52, 54 или 56.
Что касается интерполяции значений синего цвета, может применяться обработка 774 по фиг. 66. Этапы 776 и 778 в целом идентичны этапам 764 и 766 обработки 762 (фиг. 65). На этапе 780 фильтрация нижних частот применяется к соседним синим пикселям в пределах 3x3, и, на этапе 782, фильтрация верхних частот применяется к совместно расположенным соседним значениям зеленого цвета, которые могут быть исходными значениями зеленого цвета, захваченными датчиком изображений Байера, или интерполированными значениями (например, определенными посредством обработки 750 по фиг. 64). Интерполированное значение B' синего цвета для P может определяться на основании выходных сигналов фильтрации нижних частот и верхних частот, как показано на этапе 784. В зависимости от цвета P, B' может определяться в соответствии с одним из уравнений 53, 55 или 57. Кроме того, как упомянуто выше, интерполяция значений красного и синего цвета может определяться с использованием цветовых контрастов (уравнений 52-57) или цветовых соотношений (уравнений 58-63). Вновь, должно быть понятно, что сначала может выполняться интерполяция недостающих значений зеленого цвета так, чтобы полный набор значений зеленого цвета (как исходных, так и интерполированных значений) был доступен при интерполяции недостающих выборок красного и синего. Например, обработка 750 по фиг. 64 может применяться для интерполяции всех недостающих цветовых выборок зеленого перед выполнением обработок 762 и 774 по фиг. 65 и 66, соответственно.
Со ссылкой на фиг. 67-70 предоставлены примеры цветных чертежей изображений, обрабатываемых логикой 562 обработки необработанных пикселей в конвейере 82 ISP. Фиг. 67 изображает сцену 786 исходного изображения, которая может захватываться датчиком 90 изображений устройства 30 формирования изображений. Фиг. 68 показывает необработанное изображение 788 Байера, которое может представлять данные необработанных пикселей, захваченные датчиком 90 изображений. Как упомянуто выше, традиционные технологии устранения мозаичности могут не предусматривать адаптивной фильтрации на основании обнаружения контуров (например, границ между участками двух или более цветов) в данных изображения, что может нежелательно порождать артефакты в результирующем реконструированном полноцветном изображении RGB. Например, фиг. 69 показывает изображение 790 RGB, реконструированное с использованием традиционных технологий устранения мозаичности, и может включать в себя артефакты, такие как артефакты 792 «шахматной доски» на контуре 794. Однако сравнение изображения 790 с изображением 796 RGB по фиг. 70, которое может быть примером изображения, реконструированного с использованием технологий устранения мозаичности, описанных выше, может быть видно, что артефакты 792 шахматной доски, присутствующие на фиг. 69, не представлены, или по меньшей мере их появление существенно снижено на контуре 794. Таким образом, изображения, показанные на фиг. 67-70, предназначены для иллюстрации по меньшей мере одного из преимуществ, которые технологии устранения мозаичности, раскрытые в материалах настоящей заявки, имеют над традиционными способами.
Возвращаясь к фиг. 49, теперь имея в распоряжении тщательно описанную работу логики 562 обработки необработанных пикселей, которая может выводить сигнал 572 изображения RGB, настоящее описание далее будет фокусироваться на описании обработки сигнала 572 изображения RGB посредством логики 564 обработки RGB. Как показано, сигнал 572 изображения RGB может отправляться к логике 576 выбора и/или в память 108. Логика 564 обработки RGB может принимать входной сигнал 578, который может быть данными изображения RGB, из сигнала 572 или из памяти 108, как показано сигналом 574, в зависимости от конфигурации логики 576 выбора. Данные 578 изображения RGB могут обрабатываться логикой 564 обработки RGB для выполнения операций настроек цвета, в том числе цветовой коррекции (например, с использованием матрицы цветовой коррекции), применения цветовых коэффициентов усиления для автоматической балансировки белого, а также отображения глобального оттенка, и так далее.
Структурная схема, изображающая более подробный вид варианта осуществления логики 564 обработки RGB, проиллюстрирована на фиг. 71. Как показано, логика 564 обработки RGB включает в себя логику 800 усиления, смещения и усечения (GOC), логику 802 цветовой коррекции RGB, логику 804 GOC, логику настройки степени контрастности RGB и логику 808 преобразования цветового пространства. Входной сигнал 578 сначала принимается логикой 800 усиления, смещения и усечения (GOC). В проиллюстрированном варианте осуществления логика 800 GOC может применять коэффициенты усиления для выполнения автоматической балансировки белого в одном или более цветовых каналов R, G или B перед обработкой логикой 802 цветовой коррекции.
Логика 800 GOC может быть подобной логике 590 GOC из логики 562 обработки необработанных пикселей, за исключением того, что обрабатываются цветовые компоненты области 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-битные «значения усечения» для минимального и максимального выходных значений, соответственно. В одном варианте осуществления логика 800 GOC также может быть выполнена с возможностью поддерживать счет количества пикселей, которые были усечены выше и ниже максимального и минимального значения, соответственно, для каждой цветовой компоненты R, G и B.
Выходной сигнал логики 800 GOC затем пересылается к логике 802 цветовой коррекции. В соответствии с настоящими раскрытыми технологиями логика 802 цветовой коррекции может быть выполнена с возможностью применять цветовую коррекцию к данным изображения RGB с использованием матрицы цветовой коррекции (CCM). В одном варианте осуществления CCM может быть матрицей преобразования RGB 3x3, хотя матрицы других размеров также могут использоваться в других вариантах осуществления (например, 4x3, и т.д.). Соответственно, обработка выполнения цветовой коррекции над входным пикселем, имеющим компоненты R, G и B, может быть выражена, как изложено ниже:
<mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>R</mi><mo>'</mo></mrow></mtd><mtd><mrow><mi>G</mi><mo>'</mo></mrow></mtd><mtd><mrow><mi>B</mi><mo>'</mo></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>00</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>01</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>02</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>10</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>11</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>12</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>20</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>21</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>C</mi><mi>M</mi><mn>22</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>×</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mi>R</mi></mtd><mtd><mi>G</mi></mtd><mtd><mi>B</mi></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(64)
при этом R, G и B представляют значения красного, зеленого и синего цвета для входного пикселя, CCM00-CCM22 представляют коэффициенты матрицы цветовой коррекции, а R', G' и B' представляют скорректированные значения красного, зеленого и синего цветов для входного пикселя. Соответственно, правильные цветовые значения могут вычисляться в соответствии с уравнениями 65-67, приведенными ниже:
<mrow><mi>R</mi><mo>'</mo><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>00</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>01</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>02</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(65)
<mrow><mi>G</mi><mo>'</mo><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>10</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>11</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>12</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(66)
<mrow><mi>B</mi><mo>'</mo><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>20</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>21</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>C</mi><mi>M</mi><mn>22</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(67)
Коэффициенты (CCM00-CCM22) CCM могут определяться во время статистической обработки в модуле 80 предварительной обработки ISP, как описано выше. В одном варианте осуществления коэффициенты для данного цветового канала могут выбираться так, чтобы сумма таких коэффициентов (например, CCM00, CCM01 и CCM02 для цветовой коррекции красного цвета) была равна 1, что может помогать поддерживать яркость и цветовой баланс. Кроме того, коэффициенты типично выбираются так, чтобы положительный коэффициент усиления применялся к цвету, являющемуся корректируемым. Например, при цветовой коррекции красного цвета коэффициент CCM00 может быть большим чем 1, наряду с тем, что один или оба из коэффициентов CCM01 и CCM02 могут быть меньшими чем 1. Установка коэффициентов таким образом может усиливать компоненту красного (R) в результирующем скорректированном значении R' наряду с вычитанием некоторой части компоненты синего (B) и зеленого (G). Как будет принято во внимание, это может принимать меры в ответ на проблемы с наложением цветов, которое может происходить во время получения исходного изображения Байера, так как часть фильтрованного света для пикселя конкретного цвета может «переливаться» на соседний пиксель другого цвета. В одном варианте осуществления коэффициенты CCM могут предоставляться в качестве 16-битных дополняющих до двух чисел с 4 целочисленными битами и 12 дробными битами (выраженными с плавающей точкой как 4.12). Дополнительно, логика 802 цветовой коррекции может предусматривать усечение вычисленных скорректированных значений цвета, если значения превышают максимальное значение или находятся ниже минимального значения.
Выходной сигнал логики 802 цветовой коррекции RGB затем передается к другому блоку 804 логики GOC. Логика 804 GOC может быть реализована идентичным образом, как логика 800 GOC, и таким образом, подробное описание обеспечиваемых функций усиления, смещения и ограничения здесь повторяться не будет. В одном варианте осуществления применение логики 804 GOC вслед за цветовой коррекцией может предусматривать автоматическую балансировку белого данных изображения на основании скорректированных значений цвета, и также может настраивать отклонения датчика по соотношениям красного к зеленому и синего к зеленому.
Затем выходной сигнал логики 804 GOC отправляется к логике 806 настройки гаммы RGB для дальнейшей обработки. Например, логика 806 настройки гаммы RGB может предусматривать коррекцию степени контрастности, отображение оттенка, согласование гистограммы, и так далее. В соответствии с раскрытыми вариантами осуществления логика 806 настройки гаммы может предусматривать отображение входных значений RGB в соответствующие выходные значения RGB. Например, логика настройки степени контрастности может предусматривать три справочных таблицы, одну таблицу для каждой компоненты R, G и B. В качестве примера, каждая справочная таблица может быть выполнена с возможностью хранить 256 записей 10-битных значений, каждое значение представляет выходной уровень. Записи таблицы могут быть равномерно распределены в диапазоне входных значений пикселей так, чтобы, когда входное значение попадает между двумя записями, выходное значение могло линейно интерполироваться. В одном варианте осуществления каждая из трех справочных таблиц для R, G и B может дублироваться так, чтобы справочные таблицы «подвергались двойной буферизации» в памяти, таким образом, предоставляя возможность, чтобы одна таблица использовалась во время обработки, в то время как ее дубликат обновляется. На основании 10-битных выходных значений, описанных выше, должно быть отмечено, что 14-битный сигнал изображения RGB эффективно подвергается понижающей дискретизации в 10 бит в результате обработки гамма-коррекции в настоящем варианте осуществления.
Выходной сигнал логики 806 настройки гаммы может отправляться в память 108 и/или логику 808 преобразования цветового пространства. Логика 808 преобразования цветового пространства (CSC) может быть выполнена с возможностью преобразовывать выходной сигнал RGB из логики 806 настройки степени контрастности в формат YCbCr, в котором Y представляет компоненту яркости, Cb представляет компоненту цветности контраста синего и Cr представляет компоненту цветности контраста красного, каждая из которых может быть в 10-битном формате в результате преобразования битовой глубины данных RGB из 14-битного формата во время операции настройки степени контрастности. Как описано выше, в одном варианте осуществления выходной сигнал RGB логики 806 настройки гаммы может подвергаться понижающей дискретизации до 10 бит и, таким образом, преобразовываться в 10-битные значения YCbCr логикой 808 CSC, которые затем могут пересылаться к логике 566 обработки YCbCr, которая будет дополнительно описана ниже.
Преобразование из области RGB в цветовое пространство YCbCr может выполняться с использованием матрицы преобразования цветового пространства (CSCM). Например, в одном варианте осуществления CSCM может быть матрицей преобразования 3x3. Коэффициенты CSCM могут устанавливаться в соответствии с известным уравнением преобразования, таким как стандарты BT.601 и BT.709. Дополнительно, коэффициенты CSCM могут быть гибкими на основании требуемого диапазона входного сигнала и выходных сигналов. Таким образом, коэффициенты CSCM могут определяться и программироваться на основании данных, собранных во время статистической обработки в модуле 80 предварительной обработки ISP.
Обработка выполнения преобразования цветового пространства YCbCr на входном пикселе RGB может быть выражена, как приведено ниже:
<mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mi>Y</mi></mtd><mtd><mrow><mi>C</mi><mi>b</mi></mrow></mtd><mtd><mrow><mi>C</mi><mi>r</mi></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>00</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>01</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>02</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>10</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>11</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>12</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>20</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>21</mn></mrow></mtd><mtd><mrow><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>22</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>×</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mi>R</mi></mtd><mtd><mi>G</mi></mtd><mtd><mi>B</mi></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(68)
при этом R, G и B представляют текущие значения красного, зеленого и синего цвета для входного пикселя в 10-битной форме (например, в то время как обрабатываются логикой 806 настройки гаммы), CSCM00-CSCM22 представляют коэффициенты матрицы преобразования цветового пространства, а Y, Cb и Cr представляют результирующие составляющие яркости и цветности для входного пикселя. Соответственно, значения для Y, Cb и Cr могут вычисляться в соответствии с уравнениями 69-71, приведенными ниже:
<mrow><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>00</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>01</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>02</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(69)
<mrow><mi>C</mi><mi>b</mi><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>10</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>11</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>12</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(70)
<mrow><mi>C</mi><mi>r</mi><mo>=</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>20</mn><mo>×</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>21</mn><mo>×</mo><mi>G</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>C</mi><mi>S</mi><mi>C</mi><mi>M</mi><mn>22</mn><mo>×</mo><mi>B</mi><mo stretchy="false">)</mo></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(71)
Вслед за операцией преобразования цветового пространства результирующие значения YCbCr могут выдаваться из логики 808 CSC в качестве сигнала 580, который может обрабатываться логикой 566 обработки YCbCr, как будет описано ниже.
В одном варианте осуществления коэффициенты CSCM могут быть 16-битными дополняющими до двух числами с 4 целочисленными битами и 12 дробными битами (4.12). В еще одном варианте осуществления, логика 808 CSC может быть дополнительно выполнена с возможностью применять смещение к каждому из значений Y, Cb и Cr и усекать результирующие значения минимальным и максимальным значением. Только в качестве примера, при условии, что значения YCbCr находятся в 10-битной форме, смещение может быть в диапазоне от -512 до 512, а минимальным и максимальным значениями могут быть 0 и 1023, соответственно.
Возвращаясь вновь к структурной схеме логики 82 конвейера ISP на фиг. 49, сигнал 580 YCbCr может отправляться к логике 584 выбора и/или в память. Логика 566 обработки YCbCr может принимать входной сигнал 586, который может быть данными изображения YCbCr, из сигнала 580 или из памяти 108, как показано сигналом 582, в зависимости от конфигурации логики 584 выбора. Данные 586 изображения YCbCr затем могут обрабатываться логикой 566 обработки YCbCr для увеличения резкости яркости, подавления цветности, подавления шумов цветности, подавления шумов цветности, а также настроек яркости, контрастности и цвета и так далее. Кроме того, логика 566 обработки YCbCr может предусматривать отображение степени контрастности и масштабирование обработанных данных изображения как в горизонтальном, так и вертикальном направлениях.
Структурная схема, изображающая более подробный вид варианта осуществления логики 566 обработки YCbCr, проиллюстрирована на фиг. 72. Как показано, логика 566 обработки YCbCr включает в себя логику 810 увеличения резкости изображения, логику 812 для настройки яркости, контрастности и/или цвета, логику 814 настройки степени контрастности YCbCr, логику 816 прореживания цветности и логику 818 масштабирования. Логика 566 обработки YCbCr может быть выполнена с возможностью обрабатывать пиксельные данные в форматах 4:4:4, 4:2:2 или 4:2:0 с использованием конфигураций памяти 1 проекции, 2 проекций или 3 проекций. Кроме того, в еще одном варианте осуществления, входной сигнал 586 YCbCr может предусматривать информацию о яркости и цветности в качестве 10-битных значений.
Как будет принято во внимание, ссылка на 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 цветности как в вертикальном, так и горизонтальном направлениях.
Обработка информации YCbCr может происходить в пределах активной области источника, определенной в буфере источника, при этом активная область источника содержит в себе «действительные» пиксельные данные. Например, со ссылкой на фиг. 73 проиллюстрирован буфер 820 источника, определявшийся в материалах настоящей заявки активной областью 822 источника. В проиллюстрированном примере буфер источника может представлять формат 1 проекции 4:4:4, предусматривающий пиксели источника 10-битных значений. Активная область 822 источника может предписываться отдельно для выборок яркости (Y) и выборок цветности (Cb и Cr). Таким образом, должно быть понятно, что активная область 822 источника фактически может включать в себя многочисленные области источника для выборок яркости и цветности. Начало активных областей 822 источника для яркости и цветности может определяться на основании смещения от базового адреса 824 (0,0) буфера источника. Например, начальное положение 826 (Lm_X, Lm_Y) для активной области источника яркости может определяться смещением 830 по x и смещением 834 по y относительно базового адреса 824. Подобным образом, начальное положение 828 (Ch_X, Ch_Y) для активной области источника цветности может определяться смещением 832 по x и смещением 836 по y относительно базового адреса 824. Должно быть отмечено, что в настоящем примере смещения 832 и 836 по y для яркости и цветности, соответственно, могут быть равными. На основании начального положения 826 активная область источника яркости может определяться шириной 838 и высотой 840, каждая из которых могут представлять число выборок яркости в направлениях x и y, соответственно. Дополнительно, на основании начального положения 828 активная область источника цветности может определяться шириной 842 и высотой 844, каждая из которых могут представлять число выборок цветности в направлениях x и y, соответственно.
Фиг. 74, кроме того, дает пример, показывающий каким образом активные области источника для выборок яркости и цветности могут определяться в формате двух проекций. Например, как показано, активная область 822 источника яркости может определяться в первом буфере 820 источника (имеющем базовый адрес 824) участком, заданным шириной 838 и высотой 840 по отношению к начальному положению 826. Активная область 848 источника цветности может определяться во втором буфере 846 источника (имеющем базовый адрес 706) в качестве участка, заданного шириной 842 и высотой 844 относительно начального положения 828.
С приведенными выше моментами в уме и возвращаясь к фиг. 72, сигнал 586 YCbCr сначала принимается логикой 810 увеличения резкости изображения. Логика 810 увеличения резкости изображения может быть выполнена с возможностью выполнять обработку увеличения резкости и выделения контуров изображения для увеличения детализации текстуры и контуров в изображении. Как будет принято во внимание, увеличение резкости изображения может улучшать воспринимаемое разрешение изображения. Однако в целом желательно, чтобы существующие шумы в изображении не обнаруживались в качестве текстуры и/или контуров, и таким образом, не усиливались во время обработки увеличения резкости.
В соответствии с настоящей технологией логика 810 увеличения резкости изображения может выполнять увеличение резкости изображения с использованием многопредельного фильтра нерезкой маски над компонентой яркости (Y) сигнала YCbCr. В одном варианте осуществления могут быть предусмотрены два или более фильтров нижних частот с гауссовской характеристикой разных размеров масштаба. Например, в варианте осуществления, который предусматривает два фильтра с гауссовской характеристикой, выходной сигнал (например, гауссово размытие) первого фильтра с гауссовской характеристикой, имеющего радиус (x), вычитается из выходного сигнала второго фильтра с гауссовской характеристикой, имеющего второй радиус (y), при этом x является большим, чем y, чтобы генерировать нерезкую маску. Дополнительные нерезкие маски также могут получаться вычитанием выходных сигналов фильтров с гауссовской характеристикой из ввода Y. В некоторых вариантах осуществления технология также может предусматривать операции сравнения адаптивных базовых пороговых значений, которые могут выполняться с использованием нерезких масок так, чтобы, на основании результатов сравнения(ий), величины усиления могли добавляться к базовому изображению, которое может быть выбрано в качестве исходного входного изображения Y или выходного сигнала одного из фильтров с гауссовской характеристикой, чтобы генерировать заключительный выходной сигнал.
Со ссылкой на фиг. 75 проиллюстрирована структурная схема, изображающая примерную логику 850 для выполнения увеличения резкости изображения в соответствии с вариантами осуществления раскрытых на данный момент технологий. Логика 850 представляет маску многопредельной нерезкой фильтрации, которая может применяться к входному изображению Yin яркости. Например, как показано, Yin принимается и обрабатывается двумя фильтрами 852 (G1) и 854 (G2) нижних частот с гауссовской характеристикой. В настоящем примере фильтр 852 может быть фильтром 3x3, а фильтр 854 может быть фильтром 5x5. Должно быть принято во внимание, однако, что в дополнительных вариантах осуществления также могут использоваться более чем два фильтра с гауссовской характеристикой разных масштабов (например, 7x7, 9x9, и т.д.). Как будет принято во внимание, вследствие обработки фильтрации нижних частот высокочастотные составляющие, которые, как правило, соответствуют шуму, могут удаляться из выходных сигналов G1 и G2, чтобы создавать «нерезкие» изображения (G1out и G2out). Как будет описано ниже, использование нерезкого входного изображения в качестве базового изображения предоставляет возможность для подавления шумов в качестве части фильтра увеличения резкости.
Фильтр 852 с гауссовской характеристикой 3x3 и фильтр 854 с гауссовской характеристикой 5x5 могут быть определены, как показано ниже:
<mrow><mi>G</mi><mn>1</mn><mo>=</mo><mfrac><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>0</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>1</mn><mn>1</mn></msub></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mrow><mn>256</mn></mrow></mfrac></mrow>
<mrow><mi>G</mi><mn>2</mn><mo>=</mo><mfrac><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>0</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>1</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd><mtd><mrow><mi>G</mi><msub><mn>2</mn><mn>2</mn></msub></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mrow><mn>256</mn></mrow></mfrac></mrow>
Только в качестве примера, значения фильтров G1 и G2 с гауссовскими характеристиками могут выбираться в одном варианте осуществления, как изложено ниже:
<mrow><mi>G</mi><mn>1</mn><mo>=</mo><mfrac><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mn>28</mn></mrow></mtd><mtd><mrow><mn>28</mn></mrow></mtd><mtd><mrow><mn>28</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>28</mn></mrow></mtd><mtd><mrow><mn>32</mn></mrow></mtd><mtd><mrow><mn>28</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>28</mn></mrow></mtd><mtd><mrow><mn>28</mn></mrow></mtd><mtd><mrow><mn>28</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mrow><mn>256</mn></mrow></mfrac></mrow>
<mrow><mi>G</mi><mn>2</mn><mo>=</mo><mfrac><mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mn>9</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>16</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mn>9</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mrow><mn>12</mn></mrow></mtd><mtd><mn>9</mn></mtd></mtr><mtr><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd><mtd><mn>9</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow><mrow><mn>256</mn></mrow></mfrac></mrow>
На основании Yin, G1out и G2out могут быть сгенерированы три нерезких маски, Sharp1, Sharp2 и Sharp3. Sharp1 может быть определено в качестве нерезкого изображения G2out фильтра 854 с гауссовской характеристикой, вычитаемого из нерезкого изображения G1out фильтра 852 с гауссовской характеристикой. Так как Sharp1 по существу является разницей между двумя фильтрами нижних частот, он может указываться ссылкой как маска «средней полосы», поскольку высокочастотные составляющие шума уже отфильтрованы в нерезких изображениях G1out и G2out. Дополнительно, Sharp2 может вычисляться посредством вычитания G2out из входного изображения Yin яркости, а Sharp3 может вычисляться посредством вычитания G1out из входного изображения Yin яркости. Как будет описано ниже, схема адаптивных базовых пороговых значений может применяться с использованием нерезких масок Sharp1, Sharp2 и Sharp3.
Со ссылкой на логику 856 выбора, базовое изображение может выбираться на основании сигнала UnsharpSel управления. В проиллюстрированном варианте осуществления базовое изображение может быть входным изображением Yin либо фильтрованными выходными сигналами G1out или G2out. Как будет принято во внимание, когда исходные изображения имеют высокую дисперсию шума (например, почти настолько же высокую, как изменчивость сигнала), использование исходного изображения Yin в качестве базового изображения при увеличении резкости может не в достаточной мере предусматривать подавление составляющих шума во время увеличения резкости. Соответственно, когда конкретное пороговое значение шумового содержания обнаружено во входном изображении, логика 856 выбора может быть приспособлена для выбора одного из подвергнутых фильтрации нижних частот выходных сигналов G1out или G2out, у которых было уменьшено высокочастотное содержание, которое может включать в себя шумы. В одном варианте осуществления значение сигнала UnsharpSel управления может определяться посредством анализа статистических данных во время статистической обработки в модуле 80 предварительной обработки ISP для определения шумового содержания изображения. В качестве примера, если входное изображение Yin имеет низкое шумовое содержание, так что шумы внешнего вида вероятно не будут увеличиваться в результате обработки увеличения резкости, входное изображение Yin может выбираться в качестве базового изображения (например, UnsharpSel = 0). Если входное изображение Yin определено содержащим в себе заметный уровень шума, так что обработка увеличения резкости может усиливать шум, может выбираться одно из фильтрованных изображений G1out или G2out (например, UnsharpSel = 1 или 2, соответственно). Таким образом, посредством применения адаптивной технологии для выбора базового изображения логика 850 по существу обеспечивает функцию подавления шумов.
Затем коэффициенты усиления могут применяться к одной или более из масок Sharp1, Sharp2 и Sharp3 в соответствии со схемой адаптивных базовых пороговых значений, как описано ниже. Затем нерезкие значения Sharp1, Sharp2 и Sharp3 могут сравниваться с различными пороговыми значениями SharpThd1, SharpThd2 и SharpThd3 (не обязательно соответственно) посредством блоков 858, 860 и 862 компаратора. Например, значение Sharp1 всегда сравнивается SharpThd1 в блоке 858 компаратора. С помощью соответственного блока 860 компаратора пороговое значение SharpThd2 может сравниваться с Sharp1 либо Sharp2, в зависимости от логики 866 выбора. Например, логика 866 выбора может выбирать Sharp1 или Sharp2 в зависимости от состояния сигнала SharpCmp2 управления (например, SharpCmp2 = 1 выбирает Sharp1; SharpCmp2 = 0 выбирает Sharp2). Например, в одном варианте осуществления состояние SharpCmp2 может определяться в зависимости от дисперсии шума/шумового содержания входного изображения (Yin).
В проиллюстрированном варианте осуществления в целом предпочтительно устанавливать значения SharpCmp2 и SharpCmp3 для выбора Sharp1, если не обнаружено, что данные изображения имеют относительно низкие величины шумов. Это происходит потому, что Sharp1, будучи разностью между выходными сигналами фильтров G1 и G2 нижних частот с гауссовской характеристикой, в целом менее чувствителен к шуму, и таким образом, может помогать снижать величину, с которой меняются значения SharpAmt1, SharpAmt2 и SharpAmt3 вследствие колебаний уровня шума в «зашумленных» данных изображения. Например, если исходное изображение имеет высокую дисперсию шума, некоторые из высокочастотных составляющих могут не улавливаться при использовании постоянных пороговых значений и, таким образом, могут усиливаться во время обработки увеличения резкости. Соответственно, если шумовое содержание входного изображения является высоким, то некоторая часть шумового содержания может присутствовать в Sharp2. В таких случаях, SharpCmp2 может устанавливаться в 1, чтобы выбирать маску Sharp1 средней полосы, которая, как описано выше, имеет пониженное высокочастотное содержание вследствие существования разницы двух выходных сигналов фильтров нижних частот и, таким образом, менее чувствительна к шуму.
Как будет принято во внимание, подобная обработка может применяться к выбору Sharp1 либо Sharp3 посредством логики 864 выбора под управлением SharpCmp3. В одном варианте осуществления SharpCmp2 и SharpCmp3 могут устанавливаться в 1 по умолчанию (например, использовать Sharp1), и устанавливаться в 0 только для тех входных изображений, которые идентифицированы в качестве имеющих в целом низкие дисперсии шума. Это дает по существу схему адаптивных базовых пороговых значений, в которой выбор значения сравнения (Sharp1, Sharp2 или Sharp3) является адаптивным на основании дисперсии шума входного изображения.
На основании выходных сигналов блоков 858, 860 и 862 компаратора подвергнутое увеличению резкости выходное изображение Ysharp может определяться посредством применения усиленных нерезких масок к базовому изображению (например, выбранному посредством логики 856). Например, сначала со ссылкой на блок 862 компаратора, SharpThd3 сравнивается с B-вводом, обеспечиваемым логикой 864 выбора, который в материалах настоящей заявки будет указываться ссылкой как «SharpAbs» и может быть равным одному из Sharp1 или Sharp3 в зависимости от состояния SharpCmp3. Если SharpAbs является большим, чем пороговое значение SharpThd3, то коэффициент SharpAmt3 усиления применяется к Sharp3, и результирующее значение добавляется к базовому изображению. Если SharpAbs является меньшим, чем пороговое значение SharpThd3, то может применяться ослабленный коэффициент Att3 усиления. В одном варианте осуществления ослабленный коэффициент Att3 усиления может определяться, как изложено ниже:
<mrow><mi>A</mi><mi>t</mi><mi>t</mi><mn>3</mn><mo>=</mo><mfrac><mrow><mi>S</mi><mi>h</mi><mi>a</mi><mi>r</mi><mi>p</mi><mi>A</mi><mi>m</mi><mi>t</mi><mn>3</mn><mo>×</mo><mi>S</mi><mi>h</mi><mi>a</mi><mi>r</mi><mi>p</mi><mi>A</mi><mi>b</mi><mi>s</mi></mrow><mrow><mi>S</mi><mi>h</mi><mi>a</mi><mi>r</mi><mi>p</mi><mi>T</mi><mi>h</mi><mi>d</mi><mn>3</mn></mrow></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
(72)
при этом SharpAbs является Sharp1 либо Sharp3, как определяется логикой 864 выбора. Выбор базового изображения, суммированного с полным коэффициентом усиления (SharpAmt3) или ослабленным коэффициентом усиления (Att3), выполняется логикой 868 выбора на основании выходного сигнала блока 862 компаратора. Как будет принято во внимание, использование ослабленного коэффициента усиления может принимать меры в ответ на ситуации, в которых SharpAbs не является большим, чем пороговое значение (например, SharpThd3), но дисперсия шума изображения, тем не менее, близка к заданному пороговому значению. Это может помогать снижать заметные переходы между резким и нерезким пикселем. Например, если данные изображения передаются без ослабленного коэффициента усиления в таких обстоятельствах, результирующий пиксель может выглядеть как дефектный пиксель (например, залипший пиксель).
Затем подобная обработка может применяться по отношению к блоку 860 компаратора. Например, в зависимости от состояния SharpCmp2, логика 866 выбора может обеспечивать Sharp1 или Sharp2 в качестве ввода в блок 860 компаратора, который сравнивается с пороговым значением SharpThd2. В зависимости от выходного сигнала блока 860 компаратора коэффициент SharpAmt2 усиления или ослабленный коэффициент усиления, основанный на SharpAmt2, Att2, применяется к Sharp2 и прибавляется к выводу логики 868 выбора, описанной выше. Как будет принято во внимание, ослабленный коэффициент Att2 усиления может вычисляться некоторым образом, подобным уравнению 72, приведенному выше, за исключением того, что коэффициент SharpAmt2 усиления и пороговое значение SharpThd2 применяются по отношению к SharpAbs, который может быть выбран в качестве Sharp1 или Sharp2.
После этого коэффициент SharpAmt1 усиления или ослабленный коэффициент Att1 усиления применяется к Sharp1, и результирующее значение суммируется с выводом логики 870 выбора, чтобы вырабатывать выходной сигнал Ysharp подвергнутого увеличению резкости пикселя (из логики 872 выбора). Выбор применения коэффициента SharpAmt1 усиления или ослабленного коэффициента Att1 усиления может определяться на основании выходного сигнала блока 858 компаратора, который сравнивает Sharp1 с пороговым значением SharpThd1. Вновь ослабленный коэффициент Att1 усиления может определяться некоторым образом, подобным уравнению 72, приведенному выше, за исключением того, что коэффициент SharpAmt1 усиления и пороговое значение SharpThd1 применяются по отношению к Sharp1. Результирующие подвергнутые увеличению резкости значения пикселя, масштабированные с использованием каждой из трех масок, прибавляются к выходному пикселю Yin, чтобы сгенерировать подвергнутый увеличению резкости выходной сигнал Ysharp, который, в одном варианте осуществления, может усекаться до 10 бит (при условии, что обработка YCbCr происходит с 10-битной точностью).
Как будет принято во внимание, по сравнению с традиционными технологиями нерезкого маскирования, технологии увеличения резкости изображения, изложенные в этом раскрытии, могут предусматривать улучшение выделения текстур и контуров, к тому же, наряду с подавлением шумов в выходном изображении. В частности, настоящие технологии могут быть вполне пригодны в применениях, в которых изображения, захваченные, например, с использованием датчиков изображения на КМОП, демонстрируют недостаточное отношение сигнал/шум, такие как изображения, полученные в условиях тусклого освещения с использованием камер более низкого разрешения, встроенных в портативные устройства (например, мобильные телефоны). Например, когда дисперсия шума и изменчивость сигнала сопоставимы, трудно использовать постоянное пороговое значение для увеличения резкости, так как некоторые из шумовых составляющих подвергались бы увеличению резкости наряду с текстурами и контурами. Соответственно, технологии, предусмотренные в материалах настоящей заявки, как описано выше, могут отфильтровывать шум из входного изображения с использованием многопредельных фильтров с гауссовской характеристикой для извлечения признаков из нерезкого изображения (например, G1out и G2out), для того чтобы обеспечивать подвергнутое увеличению резкости изображение, которое также демонстрирует уменьшенное шумовое содержание.
Перед продолжением, должно быть понятно, что проиллюстрированная логика 850 подразумевается дающей всего лишь один из примерных вариантов осуществления настоящей технологии. В других вариантах осуществления дополнительные или некоторые признаки могут быть предусмотрены логикой 810 увеличения резкости изображения. Например, в некоторых вариантах осуществления вместо применения ослабленного коэффициента усиления логика 850 может просто пропускать базовое значение. Дополнительно, некоторые варианты осуществления могут не включать в себя блоки 864, 866 или 856 логики выбора. Например, блоки 860 и 862 компаратора могут просто принимать значения Sharp2 и Sharp3, соответственно, вместо выходного сигнала выбора из блоков 864 и 866, соответственно, логики выбора. Несмотря на то, что такие варианты осуществления могут не предусматривать признаков увеличения резкости и/или подавления шумов, которые устойчивы к ошибкам настолько же, насколько реализация, показанная на фиг. 75, должно быть принята во внимание, что такие выборы конструкции могут быть результатом связанных с себестоимостью и/или коммерческой деятельностью ограничений.
В настоящем варианте осуществления логика 810 увеличения резкости изображения также может предусматривать признаки выделения контуров и подавления цветности, как только получен выходной сигнал YSharp подвергнутого увеличению резкости изображения. Каждый из этих дополнительных признаков далее будет описан ниже. Сначала, со ссылкой на фиг. 76, примерная логика 874 для выполнения выделения контуров, которая может быть реализована ниже по потоку от логики 850 увеличения резкости по фиг. 75, проиллюстрирована в соответствии с одним вариантом осуществления. Как показано, исходное входное значение Yin обрабатывается фильтром 876 Зобеля для обнаружения контура. Фильтр 876 Зобеля может определять значение YEdge градиента на основании блока пикселей 3x3 (указываемого ниже ссылкой как «A») исходного изображения, причем Yin является центральным пикселем блока 3x3. В одном варианте осуществления фильтр 876 Зобеля может вычислять YEdge посредством проведения операции свертки данных исходного изображения для обнаружения изменений в горизонтальном и вертикальном направлениях. Эта обработка показана ниже в уравнениях 73-75.
<mrow><msub><mi>S</mi><mi>x</mi></msub><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><msub><mi>S</mi><mi>y</mi></msub><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>2</mn></mrow></mtd><mtd><mrow><mo>−</mo><mn>1</mn></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><msub><mi>G</mi><mi>x</mi></msub><mo>=</mo><msub><mi>S</mi><mi>x</mi></msub><mo>×</mo><mi>A</mi></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(73)
<mrow><msub><mi>G</mi><mi>y</mi></msub><mo>=</mo><msub><mi>S</mi><mi>y</mi></msub><mo>×</mo><mi>A</mi></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(74)
<mrow><mi>Y</mi><mi>E</mi><mi>d</mi><mi>g</mi><msub><mi>e</mi><mrow /></msub><mo>=</mo><msub><mi>G</mi><mi>x</mi></msub><mo>×</mo><msub><mi>G</mi><mi>y</mi></msub></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(75)
x
y
x
y
x
y
при этом S и S представляют матричные операторы для обнаружения градиентной интенсивности контура в горизонтальном и вертикальном направлениях, соответственно, и при этом G и G представляют градиентные изображения, которые содержат в себе производные горизонтальных и вертикальных изменений, соответственно. Соответственно, выходной сигнал YEdge определяется в качестве произведения G и G.
YEdge затем принимается логикой 880 выбора наряду с маской Sharp1 средней полосы, как описано выше на фиг. 75. На основании сигнала EdgeCmp управления Sharp1 либо YEdge сравнивается с пороговым значением, EdgeThd, в блоке 878 компаратора. Состояние EdgeCmp, например, может определяться на основании шумового содержания изображения, таким образом, давая схему адаптивных базовых пороговых значений для обнаружения и выделения контуров. Затем выходной сигнал блока 878 компаратора может обеспечиваться к логике 882 выбора и может применяться полный коэффициент усиления либо ослабленный коэффициент усиления. Например, когда выбранный B-ввод в блок 878 компаратора (Sharp1 или YEdge) находится выше EdgeThd, YEdge умножается на коэффициент усиления контура, EdgeAmt, чтобы определять величину выделения контура, которая должна быть применена. Если B-ввод в блоке 878 компаратора является меньшим, чем EdgeThd, то ослабленный коэффициент усиления контура, AttEdge, может применяться для избежания заметных переходов между выделенным контуром и исходным пикселем. Как будет принято во внимание, AttEdge может вычисляться подобным образом, как показано в уравнении 72, приведенном выше, но при этом EdgeAmt и EdgeThd применяются к «SharpAbs», который может иметь значение Sharp1 или YEdge, в зависимости от выходного сигнала логики 880 выбора. Таким образом, пиксель контура, выделенный с использованием коэффициента усиления (EdgeAmt) или ослабленного коэффициента усиления (AttEdge), может прибавляться к YSharp (выводу логики 850 по фиг. 75), чтобы получать подвергнутый выделению контура выходной пиксель Yout, который, в одном варианте осуществления, может усекаться до 10 бит (при условии, что обработка YCbCr происходит с 10-битной точностью).
Что касается признаков подавления цветности, предусмотренных логикой 810 увеличения резкости изображения, такие признаки могут ослаблять цветность на яркостных контурах. Как правило, подавление цветности может выполняться применением коэффициента усиления цветности (коэффициента ослабления), меньшего чем 1 в зависимости от значения (YSharp, Yout), полученного с этапов увеличения резкости яркости и/или выделения контуров, описанных выше. В качестве примера фиг. 77 показывает график 890, который включает в себя кривую 892, представляющую коэффициенты усиления цветности, которые могут выбираться для соответствующих подвергнутых увеличению резкости значений яркости (YSharp). Данные, представленные графиком 890, могут быть реализованы в качестве справочной таблицы значений YSharp и соответствующих коэффициентов усиления цветности между 0 и 1 (коэффициента ослабления). Справочные таблицы используются для аппроксимации кривой 892. Что касается значений YSharp, которые сосредоточены между двумя коэффициентами ослабления в справочной таблице, линейная интерполяция может применяться к двум коэффициентам ослабления, соответствующим значениям YSharp выше и ниже текущего значения YSharp. Кроме того, в других вариантах осуществления входное значение яркости также может выбираться в качестве одного из значений Sharp1, Sharp2 или Sharp3, определенных логикой 850, как описано выше на фиг. 75, или значения YEdge, определенного логикой 874, как описано на фиг. 76.
Затем выходной сигнал логики 810 увеличения резкости изображения (фиг. 72) обрабатывается посредством логики 812 настройки яркости, контрастности и цвета (BCC). Функциональная структурная схема, изображающая вариант осуществления логики настройки BCC, проиллюстрированная на фиг. 78. Как показано, логика 812 включает в себя блок 894 обработки яркости и контрастности, блок 896 регулировки глобального цветового тона и блок 898 регулировки насыщенности. Проиллюстрированный в настоящий момент вариант осуществления предусматривает обработку данных YCbCr в пределах 10-битной точности, хотя другие компоненты могут использовать разные битовые глубины. Функции каждого из блоков 894, 896 и 898 описаны ниже.
Прежде всего, со ссылкой на блок 894 обработки яркости и контрастности, смещение, YOffset, сначала вычитается из данных яркости (Y), чтобы установить уровень черного в ноль. Это делается, чтобы гарантировать, что настройка контрастности не изменяет уровней черного. Затем значение яркости умножается на значение усиления контрастности для применения регулировки контрастности. В качестве примера, значение степени контрастности может быть 12-битным беззнаковым с 2 целочисленными битами и 10 дробными битами, таким образом, предусматривая диапазон усиления контрастности вплоть до 4-кратного значения пикселя. После этого настройка яркости может быть реализована посредством добавления (или вычитания) значения смещения яркости из данных яркости. В качестве примера, смещение яркости в настоящем варианте осуществления может быть 10-битным дополняющим значением двух, имеющим диапазон между от -512 до +512. Кроме того, должно быть понятно, что настройка яркости выполняется вслед за настройкой контрастности, для того чтобы избежать изменения смещения по постоянной составляющей при изменении контрастности. После этого начальное YOffset добавляется обратно к настроенным данным яркости, чтобы переустановить уровень черного.
Блоки 896 и 898 предусматривают настройку яркости на основании характеристик цветового тона данных Cb и Cr. Как показано, смещение 512 (при условии 10-битной обработки) сначала вычитается из данных Cb и Cr, чтобы установить положение диапазона приблизительно на ноль. Цветовой тон затем настраивается в соответствии со следующими уравнениями:
adj
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Cb=Cb cos(θ)+Cr sin(θ),
(76)
adj
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
Cr=Cr cos(θ)-Cb sin(θ),
(77)
adj
adj
при этом Cb и Cr представляют настроенные значения Cb и Cr, и при этом θ представляет угол цветового тона, который может быть вычислен, как изложено ниже:
<mrow><mrow><mo>(</mo><mrow><mfrac><mrow><mi>C</mi><mi>r</mi></mrow><mrow><mi>C</mi><mi>b</mi></mrow></mfrac></mrow><mo>)</mo></mrow></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
θ=arctan
(78)
Вышеприведенные операции изображены логикой в пределах блок 896 регулировки глобального цветового тона и могут быть представлены следующей матричной операцией:
<mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>C</mi><msub><mi>b</mi><mrow><mi>a</mi><mi>d</mi><mi>j</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><msub><mi>r</mi><mrow><mi>a</mi><mi>d</mi><mi>j</mi></mrow></msub></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>K</mi><mi>a</mi></mrow></mtd><mtd><mrow><mi>K</mi><mi>b</mi></mrow></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>K</mi><mi>b</mi></mrow></mtd><mtd><mrow><mi>K</mi><mi>a</mi></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>C</mi><mi>b</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>C</mi><mi>r</mi></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(79)
при этом Ka = cos(θ), Kb = sin(θ), а θ - определено выше в уравнении 78.
adj
adj
Затем регулировка насыщенности может применяться к значениям Cb и Cr, как показано блоком 898 регулировки насыщенности. В проиллюстрированном варианте осуществления регулировка насыщенности выполняется посредством применения глобального множителя насыщенности и основанного на цветовом тоне множителя насыщенности для каждого из значений Cb и Cr. Основанная на цветовом тоне регулировка насыщенности может улучшать воспроизведение цветов. Цветовой тон цвета может быть представлен в цветовом пространстве YCbCr, как показано графиком 904 цветового круга на фиг. 79. Как будет принято во внимание, цветовой круг 904 тона и насыщенности YCbCr может быть выведен смещением идентичного цветового круга в цветовом пространстве HSV (цветового тона, насыщенности и интенсивности) приблизительно на 109°. Как показано, график 904 включает в себя значения круга, представляющие множитель (S) насыщенности в пределах диапазона от 0 до 1, а также угловые значения, представляющие θ, как определено выше, в пределах диапазона между от 0 до 360°. Каждое θ может представлять разный цвет (например, 49° = пурпурный цвет, 109° = красный цвет, 229° = зеленый цвет, и т.д.). Цветовой тон цвета с конкретным углом θ цветового тона может настраиваться посредством выбора надлежащего множителя S насыщенности.
adj
adj
Возвращаясь к фиг. 78, угол θ цветового тона (вычисленный в блоке 896 регулировки глобального цветового тона) может использоваться в качестве индекса для справочной таблицы 900 насыщенности Cb и справочной таблицы 902 насыщенности Cr. В одном варианте осуществления справочные таблицы 900 и 902 насыщенности могут содержать в себе 256 значений насыщенности, равномерно распределенных в диапазоне цветовых тонов от 0-360° (например, первая запись справочной таблицы находится на 0°, а последняя запись находится на 360°), и значение S насыщенности на данном пикселе может определяться посредством линейной интерполяции значений насыщенности в справочной таблице непосредственно ниже и выше текущего угла θ цветового тона. Заключительное значение насыщенности для каждых компонент Cb и Cr получается умножением глобального значения насыщенности (которое может быть глобальной постоянной для каждого из Cb и Cr) с определенным основанным на цветовом тоне значением насыщенности. Таким образом, заключительные скорректированные значения Cb' и Cr' могут определяться перемножением Cb и Cr с их соответственными заключительными значениями насыщенности, как показано в блоке 898 регулировки основанной на цветовом тоне насыщенности.
После этого выходной сигнал логики 812 BCC передается к логике 814 настройки гаммы YCbCr, как показано на фиг. 72. В одном варианте осуществления логика 814 настройки гаммы может предусматривать нелинейные функции отображения для каналов Y, Cb и Cr. Например, входные значения Y, Cb и Cr отображаются в соответствующие выходные значения. Вновь, при условии, что данные YCbCr обрабатываются в 10 битах, может использоваться справочная таблица с 256 интерполированными 10-битными записями. Три таких справочных таблицы могут быть предусмотрены по одной для каждого из каналов Y, Cb и Cr. Каждая из 256 входных записей может быть равномерно распределена, и выходное значение может определяться посредством линейной интерполяции выходных значений, отображенных в индексы непосредственно выше и ниже текущего входного индекса. В некоторых вариантах осуществления неинтерполированная справочная таблица, имеющая 1024 записей (для 10-битных данных), также может использоваться, но может иметь значительно большие требования к памяти. Как будет принято во внимание, посредством настройки выходных значений справочных таблиц, функция настройки степени контрастности YCbCr также может использоваться для выполнения некоторых эффектов фильтра изображения, таких как черно-белое, в оттенке сепии, негативные изображения, соляризация и так далее.
Затем прореживание цветности может применяться посредством логики 816 прореживания цветности к выходному сигналу логики 814 настройки гаммы. В одном варианте осуществления логика 816 прореживания цветности может быть выполнена с возможностью выполнять горизонтальное прореживание, чтобы прореживать данные YCbCr из формата 4:4:4 в формат 4:2:2, в котором информация о цветности (Cr и Cr) подвергается субдискретизации выборок на половинной частоте данных яркости. Исключительно в качестве примера, прореживание может выполняться посредством применения 7-отводного фильтра нижних частот, такого как полуполосный фильтр Ланцоша, к набору 7 пикселей по горизонтали, как показано ниже:
<mrow><mi>O</mi><mi>u</mi><mi>t</mi><mo>=</mo><mfrac><mtable columnalign="left"><mtr><mtd><mi>C</mi><mn>0</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>−</mo><mn>3</mn><mo stretchy="false">)</mo><mo>+</mo><mi>C</mi><mn>1</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>−</mo><mn>2</mn><mo stretchy="false">)</mo><mo>+</mo><mi>C</mi><mn>2</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mo>+</mo><mi>C</mi><mn>3</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo stretchy="false">)</mo><mo>+</mo></mtd></mtr><mtr><mtd><mi>C</mi><mn>4</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo stretchy="false">)</mo><mo>+</mo><mi>C</mi><mn>5</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>+</mo><mn>2</mn><mo stretchy="false">)</mo><mo>+</mo><mi>C</mi><mn>6</mn><mo>×</mo><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>i</mi><mo>+</mo><mn>3</mn><mo stretchy="false">)</mo></mtd></mtr></mtable><mrow><mn>512</mn></mrow></mfrac></mrow>
<mrow><mtable><mtr><mtd><mrow /></mtd><mtd><mrow /></mtd><mtd><mrow /></mtd></mtr></mtable></mrow>
,
(80)
при этом in(i) представляет входные пиксели (Cb или Cr), а C0-C6 представляет коэффициенты фильтрации 7-отводного фильтра. Каждый входной пиксель имеет независимый коэффициент (C0-C6) фильтра, чтобы предоставлять возможность гибкого сдвига фазы для подвергнутых фильтрации цветности выборок.
Кроме того, прореживание цветности, в некоторых случаях, также может выполняться без фильтрации. Это может быть полезным, когда изображение источника изначально принималось в формате 4:2:2, но было подвергнуто повышающей дискретизации в формат 4:4:4 для обработки YCbCr. В этом случае результирующее прореженное изображение 4:2:2 идентично исходному изображению.
Затем данные YCbCr, выведенные из логики 816 прореживания цветности, могут масштабироваться с использованием логики 818 масштабирования перед выводом из блока 566 обработки YCbCr. Функция логики 818 масштабирования может быть подобной функциональным возможностям логики 368, 370 масштабирования фильтром 300 компенсации группирования блока 130 предварительной обработки пикселей, как описано выше со ссылкой на фиг. 28. Например, логика 818 масштабирования может выполнять горизонтальное и вертикальное масштабирования в качестве двух этапов. В одном варианте осуществления 5-отводный многофазный фильтр может использоваться для вертикального масштабирования, и 9-отводный многофазный фильтр может использоваться для горизонтального масштабирования. Многоотводные многофазные фильтры могут умножать пиксели, выбранные из изображения источника на весовой коэффициент (например, коэффициент фильтра), а затем суммировать выводы, чтобы сформировать пиксель назначения. Выбранные пиксели могут выбираться в зависимости от текущего положения пикселя и количества отводов фильтра. Например, с вертикальным 5-отводным фильтром могут выбираться два соседних пикселя на каждой вертикальной стороне текущего пикселя, а с горизонтальным 9-отводным фильтром могут выбираться четыре соседних пикселя на каждой стороне по горизонтали текущего пикселя. Коэффициенты фильтрации могут обеспечиваться из справочной таблицы и могут определяться текущим дробным положением между пикселями. Выходной сигнал 588 логики 818 масштабирования затем выводится из блока 566 обработки YCbCr.
Возвращаясь к фиг. 49, обработанный выходной сигнал 588 может отправляться в память 108 или может выводиться из логики 82 конвейерной обработки ISP в качестве сигнала 114 изображения на аппаратное обеспечение изображения (например, устройство 28 отображения) для просмотра пользователем. В некоторых вариантах осуществления сигнал 114 изображения может дополнительно обрабатываться блоком графической обработки и/или машиной сжатия и сохраняться до восстановления после сжатия и выдачи на устройство отображения. Дополнительно, один или более буферов кадров также могут быть предусмотрены для управления буферизацией данных изображения, выводимых на устройство отображения, в частности, в отношении данных видеоизображения.
Как будет понятно, различные технологии обработки изображений, описанные выше и относящиеся, среди прочего, к обнаружению и коррекции дефектных пикселей, коррекции затенения объектива, устранению мозаичности и увеличению контрастности изображения, предоставлены в материалах настоящей заявки только в качестве примера. Соответственно, должно быть понятно, что настоящее раскрытие не должно толковаться в качестве являющегося ограниченным только примерами, приведенными выше. В действительности, примерная логика, изображенная в материалах настоящей заявки, может быть подвергнута некоторому количеству изменений и/или дополнительных признаков в других вариантах осуществления. Кроме того, должно быть принято во внимание, что описанные выше технологии могут быть реализованы любым подходящим образом. Например, компоненты схем 32 обработки изображения и, в частности, модуль 80 предварительной обработки ISP и модуль 82 конвейера ISP могут быть реализованы с использованием аппаратного обеспечения (например, соответствующим образом сконфигурированных схем), программного обеспечения (например, посредством компьютерной программы, включающей в себя исполняемый код, хранимый на одном или более материальных считываемых компьютером носителей), либо посредством использования комбинации элементов как аппаратного обеспечения, так и программного обеспечения.
Специфичные варианты осуществления, описанные выше, были показаны в качестве примера, и должно быть понятно, что эти варианты осуществления могут быть допускающими различные модификации и альтернативные формы. Кроме того, должно быть понятно, что формула изобретения не подразумевается ограниченной конкретными раскрытыми формами, но, скорее должна покрывать все модификации, эквиваленты и альтернативные варианты, подпадающие под сущность и объем этого раскрытия.