Очистка изображения от шума, некоторые методы
Если Вы видели картинку, которая получается в современных цифровых фотоаппаратах без обработки, то Вы знаете, что выглядит она просто ужасно. Она заполнена шумом. Даже когда Вы скачиваете картинку на компьютер и она уже прошла внутреннюю обработку в фотоаппарате, если ее увеличить и посмотреть на отдельные пиксели, можно увидеть, как мужественно цифровые алгоритмы борются с шумом и проигрывают в этой неравной войне.
Некоторые алгоритмы стирают мелкие детали напрочь, этим знамениты сотовые телефоны Nokia. В некоторых случаях детали остались, но они окружены цветными островками сложной формы, это можно увидеть в фотоаппаратах Sony. Ну и так далее — у каждого метода свои проблемы.
Какие же есть средства, чтобы убрать этот шум, и которые не нарушают чужих патентов? Надеюсь, этот небольшой обзор будет полезным.
1. Переход в координаты яркость-цвет.
Это преобразование можно осуществлять многими способами: HSV, L*a*b и т.п. По некоторым причинам, в которые мы не будем углубляться:
— человеческий глаз намного менее чувствителен к деталям цветовой информации, чем яркостной
— шум в цветовой компоненте, напротив, гораздо выше, чем в яркостной
Поэтому простая фильтрация цветовой компоненты + обратное восстановление, обычно, делают картинку сильно лучше.
2. Медианный фильтр.
Хорошим простым способом очистить картинку от шума является медианный фильтр Im_new(x,y)=median{dx=-1..1,dy=-1..1}Im(x+dx,y+dy).
У этого метода есть множество вариаций, приведу лишь некоторые:
2.1 Шаг 1: вычислить M1=median(C, Cnorth, Csouth); M2=median(C, Ceast, Cwest); M3=median(C, Cne, Csw); M4=median(C, Cnw, Csw); здесь Cnort, Cne,...Cnw — восемь соседних пикселей из окрестности 3x3, C — центральный пиксель
Шаг 2 — вычислить Ma=median(C, M1, M2); Mb=median(C, M3, M4);
Шаг 3 — вычислить Csmooth=median(C, Ma, Mb);
Шаг 4 — заменить C на Csmooth.
2.2 Шаг 1: отсортировать пиксели из окрестности 3x3 по возрастанию, P[1]...P[9].
Шаг 2: Если центральный пиксель равен P[1] — заменить его на P[2], если центральный пиксель равен P[9] — заменить его на P[8], в других случаях оставить без изменения.
Это направление использует компания Kodak, а также большинство сканеров и факс-аппаратов.
3. Фильтры, управляющие величиной коррекции
Этот метод сначала предлагает сгладить картинку как-нибудь грубо, например с помощью low-pass filter, bilateral filter или еще как-нибудь. А потом делается такая процедура
Im_new(x,y)=Im(x,y)+S(Im(x,y)-Im_smooth(x,y),threshold).
Функция-передатчик S может быть устроена по разному, например так:
S(x,threshold) = x, если -threshold<x<threshold; S(x,threshold)=threshold если x>threshold; S(x,threshold)=-threshold если x<-threshold. Если выбрать threshold примерно равным величине шума, то весь шум пропадет, а детали и мелкие объекты останутся четкими.
4. Bilateral filter
Очень интересный фильтр, изобретенный в 2003 году. За описаниями отсылаю к Интернету.
Вот здесь достаточно хорошая статья: scien.stanford.edu/class/psych221/projects/06/imagescaling/bilati.html
Интересной разновидностью bilateral filter является, также T-filter:
Шаг 1: Найти все пиксели в окрестности, значения которого отличаются от исходного пикселя не более, чем на заданный threshold.
Шаг 2: Усреднить эти найденные пиксели и сохранить значение.
5. Фильтры, использующие спектральное представление сигнала
Так работает, к примеру, Photoshop. Суть идеи в том, чтобы сделать в окрестности каждого пикселя преобразование Фурье, затем стереть высокие частоты и сделать обратное преобразование.
Вместо преобразования Фурье используются также и другие ортогональные базисы, иногда довольно замысловатые. По-сути, это целое семейство методов.
6. Фильтры, выделяющие доминантное направление
Эти фильтры в каждой точке сначала находят доминантное направление (направление градиента яркости), а затем усредняют сигнал только в перпендикулярном направлении. Таким образом, линии и мелкие детали остаются четкими. Хорошие разновидности этого алгоритма учитывают также значения матрицы вторых производных.
Это целое семейство алгоритмов, описания которых можно также найти в Интернете.
7. Локальная классификация фрагментов
Эти фильтры особенно хорошо работают со специальными изображениями, такими как текст, звездное небо и т.п.
Сначала составляется база данных типичных элементов такого изображения, к примеру, несколько сотен фрагментов NxN пикселей, которые уже очищены от шума.
Алгоритм работает так: окрестность каждого пикселя сравнивается с этими фрагментами и выбирается один, который наиболее похож. Затем значение исходного пикселя на грязной картинке заменяется на значение аналогичного пикселя, расположенного в этом же месте на чистом фрагменте.
8. Приведу в конце «простецкий» способ, который также можно использовать в ряде случаев.
Шаг 1: Уменьшить картинку (применяя какой-нибудь умный алгоритм Downscaling)
Шаг 2: Увеличить ее обратно (применяя какой-нибудь умный алгоритм Upscaling)
Дело в том, что алгоритмы Upscaling/ Downscaling бывают очень мощными (Lanczos filter, фрактальные методы и т.п.), так что результат получается вполне удовлетворительным. Этот же метод можно использовать в качестве простой, но довольно эффективной компрессии.
Некоторые алгоритмы стирают мелкие детали напрочь, этим знамениты сотовые телефоны Nokia. В некоторых случаях детали остались, но они окружены цветными островками сложной формы, это можно увидеть в фотоаппаратах Sony. Ну и так далее — у каждого метода свои проблемы.
Какие же есть средства, чтобы убрать этот шум, и которые не нарушают чужих патентов? Надеюсь, этот небольшой обзор будет полезным.
1. Переход в координаты яркость-цвет.
Это преобразование можно осуществлять многими способами: HSV, L*a*b и т.п. По некоторым причинам, в которые мы не будем углубляться:
— человеческий глаз намного менее чувствителен к деталям цветовой информации, чем яркостной
— шум в цветовой компоненте, напротив, гораздо выше, чем в яркостной
Поэтому простая фильтрация цветовой компоненты + обратное восстановление, обычно, делают картинку сильно лучше.
2. Медианный фильтр.
Хорошим простым способом очистить картинку от шума является медианный фильтр Im_new(x,y)=median{dx=-1..1,dy=-1..1}Im(x+dx,y+dy).
У этого метода есть множество вариаций, приведу лишь некоторые:
2.1 Шаг 1: вычислить M1=median(C, Cnorth, Csouth); M2=median(C, Ceast, Cwest); M3=median(C, Cne, Csw); M4=median(C, Cnw, Csw); здесь Cnort, Cne,...Cnw — восемь соседних пикселей из окрестности 3x3, C — центральный пиксель
Шаг 2 — вычислить Ma=median(C, M1, M2); Mb=median(C, M3, M4);
Шаг 3 — вычислить Csmooth=median(C, Ma, Mb);
Шаг 4 — заменить C на Csmooth.
2.2 Шаг 1: отсортировать пиксели из окрестности 3x3 по возрастанию, P[1]...P[9].
Шаг 2: Если центральный пиксель равен P[1] — заменить его на P[2], если центральный пиксель равен P[9] — заменить его на P[8], в других случаях оставить без изменения.
Это направление использует компания Kodak, а также большинство сканеров и факс-аппаратов.
3. Фильтры, управляющие величиной коррекции
Этот метод сначала предлагает сгладить картинку как-нибудь грубо, например с помощью low-pass filter, bilateral filter или еще как-нибудь. А потом делается такая процедура
Im_new(x,y)=Im(x,y)+S(Im(x,y)-Im_smooth(x,y),threshold).
Функция-передатчик S может быть устроена по разному, например так:
S(x,threshold) = x, если -threshold<x<threshold; S(x,threshold)=threshold если x>threshold; S(x,threshold)=-threshold если x<-threshold. Если выбрать threshold примерно равным величине шума, то весь шум пропадет, а детали и мелкие объекты останутся четкими.
4. Bilateral filter
Очень интересный фильтр, изобретенный в 2003 году. За описаниями отсылаю к Интернету.
Вот здесь достаточно хорошая статья: scien.stanford.edu/class/psych221/projects/06/imagescaling/bilati.html
Интересной разновидностью bilateral filter является, также T-filter:
Шаг 1: Найти все пиксели в окрестности, значения которого отличаются от исходного пикселя не более, чем на заданный threshold.
Шаг 2: Усреднить эти найденные пиксели и сохранить значение.
5. Фильтры, использующие спектральное представление сигнала
Так работает, к примеру, Photoshop. Суть идеи в том, чтобы сделать в окрестности каждого пикселя преобразование Фурье, затем стереть высокие частоты и сделать обратное преобразование.
Вместо преобразования Фурье используются также и другие ортогональные базисы, иногда довольно замысловатые. По-сути, это целое семейство методов.
6. Фильтры, выделяющие доминантное направление
Эти фильтры в каждой точке сначала находят доминантное направление (направление градиента яркости), а затем усредняют сигнал только в перпендикулярном направлении. Таким образом, линии и мелкие детали остаются четкими. Хорошие разновидности этого алгоритма учитывают также значения матрицы вторых производных.
Это целое семейство алгоритмов, описания которых можно также найти в Интернете.
7. Локальная классификация фрагментов
Эти фильтры особенно хорошо работают со специальными изображениями, такими как текст, звездное небо и т.п.
Сначала составляется база данных типичных элементов такого изображения, к примеру, несколько сотен фрагментов NxN пикселей, которые уже очищены от шума.
Алгоритм работает так: окрестность каждого пикселя сравнивается с этими фрагментами и выбирается один, который наиболее похож. Затем значение исходного пикселя на грязной картинке заменяется на значение аналогичного пикселя, расположенного в этом же месте на чистом фрагменте.
8. Приведу в конце «простецкий» способ, который также можно использовать в ряде случаев.
Шаг 1: Уменьшить картинку (применяя какой-нибудь умный алгоритм Downscaling)
Шаг 2: Увеличить ее обратно (применяя какой-нибудь умный алгоритм Upscaling)
Дело в том, что алгоритмы Upscaling/ Downscaling бывают очень мощными (Lanczos filter, фрактальные методы и т.п.), так что результат получается вполне удовлетворительным. Этот же метод можно использовать в качестве простой, но довольно эффективной компрессии.
комментарии (50)
home page: www.neatimage.com/download.html
alt. link: nnm.ru/blogs/SHAH/neat_image_pro_plus_6_0_retail/
А так, спасибо за статью конечно.
жирнючий вам минус
Если у вас есть вопрос, задайте, а если вам интересно только минусов наставить, то мне кажется что это вы засоряете хабр своими комментариями не к месту.
хабр вообще меня стал угнетать в последнее время… напишешь что-то полезное — кричат боян-отстой… кто-то напишет боян-отстой — все кричат браво-полезно… непонимаю
да вот щас глянул… оказывается меня немного поддержали по-поводу «кучи работы»… это такая редкость
Ключевые слова для поиска: image, video, processing, handbook, signal, filters, fourier transform, wavelets, pattern recognition, statistics, for dummies, etc.
Рекомендации от себя по книгам.
Обработка изображений.
Классика жанра, маст рид.
Gonzales R., Woods R. Digital image processing // Prentice Hall, 2002, p.1070.
Gonzales R., Woods R. Digital image processing using Matlab // Prentice Hall, 2002, 609 p.
Pratt W. Digital image processing // J. Wiley & Sons, 2001, p. 735.
Зер гуд.
Nixon M., Aguado A. Feature extraction and image processing // Newnes, 2002, p. 350.
Acharya T., RayA.K. Image processing: principles and applications // J. Wiley & Sons, 2005, p. 428.
Дас ист фантастиш, с большим количеством смежно-прикладных задач.
Bovik A. Handbook of image and video processing. //Academic Press ,2000, 890 p.
BANKMAN, I. N. Handbook of Medical Imaging Processing and Analysis, 2000.
Просто о сложном.
Ilonen J. Supervised local image feature detection // Lappeenranta University of Technology, ISBN 978-952-214-466-9, 2007, p. 116.
Охренительная книга, но нет в открытом доступе.
B. Jahne, Spatio-temporal image processing, theory and scientific applications //Springer-Verlag, ISBN 3-540-57418-2.
Распознавание образов: полно книг от советской классики до свежака.
Фурье-вейвлеты. В базовой части есть во всех книгах по обработке изображений. Если хотите глубже, то любая радиотехническая классика.
Из математики: тензоры, фракталы, графы, теория принятия решений, статистика ну и общий курс вышки для технарей.
Касательно свежака: статьи IEEE, доклады с профильных конференций.
Советы:
— ищите на английском языке;
— обращайте внимание на список литературы в статьях;
— на сайтах европейских политехнических и прочих универов полно открытых интерейснеших последних публикаций, дисеров и дипломов;
— мониторье какие темы выдвигают для ph.d. буржуйские универы;
— не циклитесь на одной книге, в разных книгах по разному описаны одни и те же вещи;
— учитывайте несовпадение отечественных и буржуйских терминов;
— англо-вики;
— гугл и вам воздасться :)
Исходники: вот тут я не помошник, ничего сложнее матлаба, и установки эклипс в убунту не делал, да и к алгоритмам отношения не имею, так люблю перед сном всякую хрень почитать :)
б) На C есть отличная библиотека OpenCV
Вопрос в том, надо ли Вам что-то разрабатывать? Ведь сегодня полно готовых решений. А если надо, то на мой взгляд (понимаю, что это звучит как самореклама, но все-таки) проще и дешевле обратиться к профессионалам.
Тема очистки изображений, при всей ее кажущейся простоте, вовсе не простая. И кормит нас уже давно.
1. На особенности биологии глаза все телевидение строится. Любой учебник по телевизорам и стандартам тв систем все это объясняет.
2. Даже в университетских методичках описывается медианная и ранговая фильтрация.
3. Вариации на тему пороговой обработки и суммирования/вычитания отфильтрованных изображений обычно ковыряют на лабах в универе. По книжке имаж процессинг узинг Матлаб, Гонзалез и Вудс.
4. О существовании нелинейных фильтров студентам тоже обычно рассказывают, про гауссианы тоже. И не поверите в книжках про билатерал тоже есть.
5. А радиотехники то и не знают, зачем их долбят пространственно-временным представлением сигналов и псевдоортогональными базисными функциями, а окна Гаусса и Габора по ночам снятся. И вроде РТЦиС сдадут, Кархуена — Лоена с Адамардом забудут, а тут их вейвлетами Добеши и Хаара по голове… а это чтобы в фотошопе кисточками мазать :)
6. Еще одно революционное направление описанное в методичках (обычно из Прэтта все переписывают). Как же первая и вторая производная, масочки Собеля, Превита, Робертса, разность гауссианов, лапласианы гауссианов. Поиск перпендикуляра к направлению градиента обычно называется не макисмальное подавление, вытекающее из аналитического требования к импульсной характеристике предложенной Канни в 198х каком-то году. И про гистерезис на физике никто не слушал, а на рассказе про интерполяцию все спали. И сакральное С/Ш никто не понимает.
7. О, классификация. Как там? статистикал паттерн рекогнишин, супервайзд имаж фитче экстракшн, машин вижн вся фигня? А студенты то и не знают.
8. Хороший и логичный совет.
Резюмирую: где технологии выходяшие за рамки университетского образования? :)
Просто чтобы поговорить об этом.
Почему-то на этом месте все спотыкаются, или считают, что здесь происходит какое-то соревнование.
У нас есть proprietary алгоритмы на этот счет, конечно. Честно говоря, мне было очень жаль, что я не могу, к примеру, enternet дать прямой ответ на его вопрос. А я ведь его знаю.
Но часть этих алгоритмов мы продаем за довольно большие деньги, часть были разработаны для наших клиентов и они обладают всеми правами. В этом бизнесе решения редко патентуются, так как фирмы предпочитают просто хранить их в секрете для себя.
Спасибо за Ваш ответ. Мы бы сработались, наверное.
Любой алгоритм опирается на определенную базу знаний.
Пример:
1. Зная принцип неопределенности Гейзенберга, можно легко понять о расширении этого принципа для двумерных фильтров в пространственно-частотной области, добавляя к этому пространственную ориентацию. Читая дальше труды определенных известных личностей о функции Габора на основе гауссиана и синусоиды, приходим к пониманию двумерных квадратурных фильтров (опять же Re первая производная и Im вторая). А квадратура дает нам возможность не сочинять преобразование Гильберта для двумерного случая и уход от полосовых фильтров. А если вспомнить курс биологии, да прочитать про кортикальные клетки головного мозга у млекопитающих и про злые опыты над кошками. А если еще про сегментацию текстур почитать и патенты порыскать в нужных областях.Приходим к созданию определенного алгоритмического ядра для покорения вселенной.
2. А вот потом начинается кропотливая работа с напильником, ковыряние в последних докладах, куча практических экспериментов для поиска функций, дающих лучший результат, отладка на конкретной аппаратной платформе ну и конечно же не забываем про соблюдение патентной чистоты. А то растроится конкурент покоритель вселенной.
Этап 1: база технического института + толика любопытства. гугл.ком и никакого мошенничества. Все открыто, доступно.
Этап 2: обычно узнается у товарищей, выпустившихся на год раньше, кропотливая работа. Решения приходящие по мере втыкания в тему все глубже, утренние озарения и оптимизационные задачи. Консультации с мало чего понимающими профессорами, но с воплями это же элементарно, Ватсон. Конечно добавляются задачи из смежно-прикладных областей о полимерах для микротонкой асферической оптики для аннигилятора материи. Ну, а кто сказал, что будет легко?.. Расчехляем учебник по физике и химии для начальных классов, да и гугл работает круглосуточно.
Вопрос: что мне нужно добавить, концептуально иного, для полноценного захвата вселенной, исходя из вашего опыта создания гравицапов? Больше вкалывать не предлагать. :)
То, что Вы написали, напомнило мне структуру хай-тек сообщества, которое действительно состоит из ученых-первопроходцев, бизнесменов-первопроходцев, предпринимателей разного сорта, инвесторов, адвокатов и множества других групп людей, которые делают странные вещи. Но в итоге прогресс все-таки идет вперед.
Кто-то пытался их разделять на пионеров 1го, 2го, 3го и 4го поколения. Но я плохо помню эту систему. Запомнилось только, что мы все, практически, сидим в 3м типе.
Мне кажется, концептуально нужно а) думать о деньгах и б) думать о собственном развитии и месте на этой земле. Скорее всего, даже в обратном порядке.
Важна команда, репутация.
Не знаю, что еще сказать, подумаю :)
б) Собственное развитие. Тоже логично, какое же это РД без постоянного промышленного шпионажа за фронт едж технологиями.
в) Команда. Логично. Один в поле воин только Чак Норрис.
г) Репутация. Логично. Дело наживное.
Все логично. Я о концептуальном подходе, который по вашим словам, помогает в рекордно сжатые сроки получить фантастические результаты.
Я, конечно, не могу сказать, что хабр не предназначен для такой рекламы (не мне судить), но, вроде бы, раньше такого здесь не было.
P.S. неплохо бы сделать русскую версию сайта. Вы же пытаетесь выйти на российский рынок?
А что здесь принято обсуждать? Новости? Вот мне кажется, что появление нашей компании — это хорошая новость. Просто потому, что я недавно выяснил, что из выпускников мех-мата МГУ, к примеру, вообще почти никто не занимается R&D. А ведь их этому именно и учили… А у нас связи с западными заказчиками, они хотят делать здесь проекты (репутация русского инженера на Западе высока!)
Технологии обсуждать? Так ведь хорошая книга или Интернет все равно даст больше информации.
Мы хотели бы найти гнезда хороших российских программистов. Места, где они общаются. Было предположение, что Хабр — одно из таких мест.
Русский сайт мы сделаем скоро, я думаю. Но на российский рынок, если честно, мы выходить не торопимся по ряду причин. А вот инженеры нам нужны, так что и сайт не помешает.
И вдург РАЗ!, загорается лампочка! Какая-то часть этих знаний, как полезных, так и на первый взгляд бесполезных, формируются четкую идею… и вот она…
Понимаете в чем ваша выгода?
А искать выгоду напрямую в чужих словах, не дальновидно. Это все равно, что надеятсья, что человек сейчас начнет раздавать деньги налево и направо.
Гнездо российских программистов — это RSDN. А Хабр — это гнездо ойтишнегов.
Ваши посты весьма полезны, что бы там ни говорили критики. Но к их мнению тоже стоит прислушаться. Картинки «было—стало», побольше математики, ссылки на статьи, рекомендации литературы — совсем не помешали бы.
>Так ведь хорошая книга или Интернет все равно даст больше информации.
С течением времени вероятность существования необходимой информации в сети увеличивается, а вероятность её нахождения уменьшается. Потому что забивается шумом, студенческими рефератами, статьями на Хабре, etc. Так что помощь в нахождении качественной и точной информации всегда приветствуется.
1) к мнениям критиков хоть и надо прислушиваться, но не стоит забывать, что дискуссии с некоторыми критиками больше напоминают споры типа: «кто круче: строители, знающие толк в выкладывании ровнейших и надежнейших кирпичных стен, или инженеры, проектирующие многоэтажные кирпичные дома так, что бы они не завалились от порыва ветра?»
2) RSDN, хоть и гнездо русскоговорящих (а не только русских) программистов, но Хабр более динамичен, поскольку является новостным и обзорным ресурсом, а значит вероятность того, что нечто заметят много народу, если его опубликовать на Хабре — выше, чем, если это нечто появится на RSDN.
ЗЫ: О, Qbit! Знакомые все лица! :)
Замкнутый круг. :(
Мне импонирует Ваша идея о важности принципиального технологического превосходства над конкурентами, которое в первую очередь основывается на алгоритмах. Я разделяю идею о том, что в современном законкурированном мире быть «умными» и использовать нестандартные алгоритмы — это значит иметь огромное преимущество.
Конечно, это не залог успеха (и даже нельзя сказать, что это необходимое условие успеха) – но всегда сильная алгоритмика это серьезная заявка на победу.
Однако PR Вашей компании через обсуждение чужих алгоритмов – он какой-то совсем неправильный.
Если Вы хотите нанять разработчиков — почему бы просто не опубликовать вакансию в форме рассказа о Вашей компании? В котором бы говорилось, в какие области Вы хотите расширяться, какого рода специалисты Вам нужны и что (примерно) они получат, какие выгоды. Причем раз уж компания состоявшаяся, у нее есть работники – то IMHO было бы правильным озвучить и “вилку” зарплаты. Разве не сработает?
Если же Вы хотите саму компанию рекламировать — то хотя бы не разглашая Ваши засекреченные алгоритмы расскажите о конкретных задачах которые были — в чем конкретно (!) там были сложности, и в общих словах не опускаясь до конкретного алгоритма как Вы их решили, что это дало.
Если не страшно, что Вам сделают отрицательную карму — так же можете поднять атомный флейм о ценности идей или даже для новизны — о ценности алгоритмов.
А когда никакой конкретики о компании, о ее работах, никакой конкретики о вакансиях, зато в “корпоративном” блоге много статей о чужих алгоритмах – это как-то странно.
Мне понравилась только первая Ваша заметка о стартапах — она оригинальная, с не избитыми мыслями (и без странного изложения чужих алгоритмов в своем корпоративном блоге).
Разумеется, те, кто хочет получать качественные фотографии, предпочтут хороший фотоаппарат, а не хороший алгоритм преобразования изображений :)
если только с мобилы снимать ))
Ценности в статье — 0.
Те, кого волнует эта проблема обзавелись нормальными фотоаппаратами. Тем же, кто не обзавелся по барабану шумы и прочая хрень — они видят из косяков лишь «красные глаза».
Для программистов ценности тем более — 0.
«Есть такие методы! Замечательные методы!» Картинки — результаты работы? Ссылки на коды и тексты? Хабровчане в комментах пишут больше, чем вы в посте!
Если вы также стараетесь над проектами, как над постами, то я к вам никогда не обращусь.
Кстати, если бы в статье было про шумоподавители, которые ставят производители на матрицы, было бы интереснее.
А так, ощущение, что автор в глаза не видел фотографии, которые получаются на выходе современных зеркальных фотокамер (даже низкого диапазона).
Автор разрабатывал своими ручками цепочку алгоритмов, которые используются сегодя в фотоаппаратах такой малоизвестной фирмы как Samsung. Кроме того, автор делал reverse engineering и публиковал разбор алгоритмов, использующихся в Nikon и некоторых других фотоаппаратах.
Но до уровня некоторых читателей Хабрахабра автору еще очень далеко. Могу себе представить, ведь даже английский язык они знают лучше, чем профессиональный лит-редактор и коренной американец.
habrahabr.ru/company/gilalgorithms/blog/67454/#comment_1912030
На какую аудиторию вы рассчитывали, когда писали данную статью?
"… вычислить M1=median(C, Cnorth, Csouth); M2=median(C, Ceast, Cwest); M3=median(C, Cne, Csw); M4=median(C, Cnw, Csw); здесь Cnort, Cne,...Cnw..." — ШТОЭТА?!?! Возможно, в силу своей молодости я не особо разобрался о чем вообще идет речь, но имхо следует писать информативнее — не все же здесь такие крутые, как ребята из GIL. Да и оформления нет никакого. Читая данный топик у меня сложилось впечатление, что вы куда-то торопились. Выкладывать статью в таком виде это значит высказывать свое неуважение к аудитории сайта, я так считаю.
p.s. Когда я читаю комменты ваши и ваших сотрудников меня посещает мысль, что толпа тонких и не очень троллей хочет что-то устроить на моем уютном хабре.
когда человек в силу молодости или по другим причинам чего-то не может понять или разобраться, он или ТИХО-ТИХО ищет источники и учит матчасть или ВЕЖЛИВО-ВЕЖЛИВО спрашивает у профессионалов, о чем идет речь
посты на хабре несут познавательный характер, с целью ознакомить аудиторию с чем-то новым. а галопом по европам, формулами и изречениями вида «здесь применим какое-нибудь преобразование» можно заинтересовать только людей компетентных в данном вопросе. да и то, сомневаюсь, что их это заинтересует — насколько я понимаю, описанные топиком технологии достаточно тривиальны и профессионалы о них давно знают.
ваша компания перепутала назначение хабра — это место не только для поиска суперменов для вашей невероятно крутой конторы, здесь еще люди делятся знаниями и опытом