Чтобы распознавать картинки, не нужно распознавать картинки / Хабр
Посмотрите на это фото.
Это совершенно обычная фотография, найденная в Гугле по запросу «железная дорога». И сама дорога тоже ничем особенным не отличается.
Что будет, если убрать это фото и попросить вас нарисовать железную дорогу по памяти?
Если вы ребенок лет семи, и никогда раньше не учились рисовать, то очень может быть, что у вас получится что-то такое:
Упс. Кажется, что-то пошло не так.
Давайте еще раз вернемся к рельсам на первой картинке и попробуем понять, что не так.
На самом деле, если долго разглядывать ее, становится понятно, что она не совсем точно отображает окружающий мир. Главная проблема, о которую мы немедленно споткнулись — там, например, пересекаются параллельные прямые. Ряд одинаковых (в реальности) фонарных столбов на самом деле изображен так, что каждый следующий столб имеет все меньшие и меньшие размеры.
Все это — эффекты перспективы, последствия того, что трехмерные объекты снаружи проецируются на двумерную сетчатку внутри глаза. Ничего отдельно магического в этом нет — разве что немного любопытно, почему эти искажения контуров и линий не вызывают у нас никаких проблем при ориентации в пространстве, но вдруг заставляют мозг напрячься при попытке взяться за карандаш.
Еще один замечательный пример — как маленькие дети рисуют небо.
Небо должно быть наверху — вот она, синяя полоска, пришпиленная к верхнему краю. Середина листа при этом остается белой, заполнена пустотой, в которой плавает солнце.
И так происходит всегда и везде. Мы знаем, что куб состоит из квадратных граней, но посмотрите на картинку, и вы не увидите там ни одного прямого угла — более того, эти углы постоянно меняются, стоит сменить угол обзора.
Как будто где-то в голове у нас сохранена грубая схема правильного, трехмерного объекта, и именно к ней мы обращаемся в процессе рисования рельс, не сразу успевая сопоставить результат с тем, что видим своими глазами.На самом деле все еще хуже. Каким образом, например, на самой первой картинке с дорогой мы определяем, какая часть дороги расположена ближе к нам, а какая дальше? По мере удаления предметы становятся меньше, ок — но вы уверены, что кто-то не обманул вас, коварно разместив друг за другом последовательно уменьшающиеся шпалы? Далекие объекты обычно имеют бледно-голубоватый оттенок (эффект, который называется «атмосферная перспектива») — но предмет может быть просто окрашен в такой цвет, и в остальном казаться совершенно нормальным. Мост через железнодорожные пути, который едва видно отсюда, кажется нам находящимся позади, потому что его заслоняют фонари (эффект окклюзии) — но опять-таки, как вы можете быть уверены, что фонари просто не нарисованы на его поверхности? Весь этот набор правил, с помощью которых вы оцениваете трехмерность сцены, во многом зависит от вашего опыта, и возможно, генетического опыта ваших предков, обученных выживать в условиях нашей атмосферы, падающего сверху света и ровной линии горизонта.
Сама по себе, без помощи мощной аналитической программы в вашей голове, наполненной этим визуальным опытом, любая фотография говорит об окружающем мире ужасно мало. Изображения — это скорее такие триггеры, заставляющие вас мысленно представить себе сцену, большая часть знаний о которой уже есть у вас в памяти. Они не содержат реальных предметов — только ограниченные, сплющенные, трагически двумерные представления о них, которые, к тому же, постоянно меняются при движении. В чем-то мы с вами — такие же жители Флатландии, которые могут увидеть мир только с одной стороны и неизбежно искаженным.
больше перспективы
Вообще мир вокруг прямо-таки полон свидетельств того, как перспектива все искажает. Люди, поддерживающие пизанскую башню, фотографии с солнцем в руках, не говоря уже про классические картины Эшера, или вот совершенно прекрасный пример — Комната Эймса. Тут важно понять, что это не какие-то единичные подлянки, специально сделаные для того, чтобы обманывать. Перспектива всегда показывает нам неполноценную картинку, просто как правило, мы способны ее «раскодировать». Попробуйте выглянуть в окно и подумать, что то, что вы видите — обман, искажение, безнадежная неполноценность.
Представьте, что вы — нейронная сеть.
Это не должно быть очень сложно — в конце концов, как-то так оно и есть на самом деле. Вы проводите свободное время за распознаванием лиц на документах в паспортном столе. Вы — очень хорошая нейронная сеть, и работа у вас не слишком сложная, потому что в процессе вы ориентируетесь на паттерн, строго характерный именно для человеческих лиц — взаимное расположение двух глаз, носа и рта. Глаза и носы сами по себе могут различаться, какой-то один из признаков иногда может оказаться на фотографии неразличимым, но вам всегда помогает наличие других. И вдруг вы натыкаетесь вот на такое:
Хм, думаете вы. Вы определенно видите что-то знакомое — по крайней мере, в центре, кажется, есть один глаз. Правда, странной формы — он похож на треугольник, а не на заостренный овал. Второго глаза не видно. Нос, который должен располагаться посередине и между глаз, уехал куда-то совсем в край контура, а рта вы вообще не нашли — опредленно, темный уголок снизу-слева совсем на него не похож. Не лицо — решаете вы, и выбрасываете картинку в мусорное ведро.
Так бы мы думали, если бы наша зрительная система занималась простым сопоставлением паттернов в изображениях. К счастью, думает она как-то по-другому. У нас не вызывает никакого беспокойства отсутствие второго глаза, от этого лицо не становится менее похожим на лицо. Мы мысленно прикидываем, что второй глаз должен находиться по ту сторону, и форма его обусловлена исключительно тем, что голова на фото повернута и смотрит в сторону. Кажется невозможно тривиальным, когда пытаешься это объяснить на словах, но кое-кто с вами бы на полном серьезе не согласился.
Самое обидное, что не видно, как можно решить этот вопрос механическим способом.
Итак, важный вопрос — как бы нам получать трехмерную модель всего, что мы видим? Еще более важный вопрос — как при этом обойтись без необходимости покупать лазерный пространственный сканер (сначала я написал «чертовски дорогой лазерный сканер», а потом наткнулся на этот пост)? Даже не столько по той причине, что нам жалко, а потому, что животные в процессе эволюции зрительной системы явно каким-то образом обошлись без него, одними только глазами, и было бы любопытно выяснить, как они так.
Где-то в этом месте часть аудитории обычно встает и выходит из зала, ругаясь на топтание по матчасти — все знают, что для восприятия глубины и пространства мы пользуемся бинокулярным зрением, у нас для этого два специальных глаза! Если вы тоже так думаете, у меня для вас небольшой сюрприз — это неправда. Доказательство прекрасно в своей простоте — достаточно закрыть один глаз и пройтись по комнате, чтобы убедиться, что мир внезапно не утратил глубины и не стал походить на плоский аналог анимационного мультфильма. Еще один способ — вернуться и снова посмотреть на фотографию с железной дорогой, где замечательно видно глубину даже при том, что она расположена на полностью плоской поверхности монитора.
Вообще с двумя глазами все не так просто
Для некоторых действий они, похоже, и правда приносят пользу с точки зрения оценки пространственного положения. Возьмите два карандаша, закройте один глаз и попытайтесь сдвигать эти карандаши так, чтобы они соприкоснулись кончиками грифелей где-то вблизи вашего лица. Скорее всего, грифели разойдутся, причем ощутимо (если у вас получилось легко, поднесите их еще ближе к лицу), при этом со вторым открытым глазом такого не происходит. Пример взят из книги Марка Чангизи «Революция в зрении» — там есть целая глава о стереопсисе и бинокулярном зрении с любопытной теорией о том, что два смотрящих вперед глаза нужны нам для того, чтобы видеть сквозь мелкие помехи вроде свисающих листьев. Кстати, забавный факт — на первом месте в списке преимуществ бинокулярного зрения в Википедии стоит «It gives a creature a spare eye in case one is damaged».
Итак, бинокулярное зрение нам не подходит — и вместе с ним мы отвергаем стереокамеры, дальномеры и Kinect. Какой бы ни была способость нашей зрительной системы воссоздавать трехмерные образы увиденного, она явно не требует наличия двух глаз. Что остается в итоге?
Я ни в коем случае не готов дать точный ответ применительно к биологическом зрению, но пожалуй, для случая абстрактного робота с камерой вместо глаза остался один многообещающий способ. И этот способ — движение.
Вернемся к теме поездов, только на этот раз выглянем из окна:
То, что мы при этом видим, называется «параллакс движения», и вкратце он заключается в том, что когда мы двигаемся вбок, близкие предметы смещаются в поле зрения сильнее, чем далекие. Для движения вперед/назад и поворотов тоже можно сформулировать соответствующие правила, но давайте их пока проигнорируем. Итак, мы собираемся двигаться, оценивать смещения предметов в кадре и на основании этого определять их расстояние от наблюдателя — техника, которая официально называется «structure-from-motion». Давайте попробуем.
Прежде всего — а не сделали ли все, случайно, до нас? Страница «Structure from motion» в Википедии предлагает аж тринадцать инструментов (и это только опенсорсных) для воссоздания 3D-моделей из видео или набора фотографий, большинство из них пользуются подходом под названием bundle adjustment, а самым удобным мне показался Bundler (и демо-результаты у него крутые). К сожалению, тут возникает проблема, с которой мы еще столкнемся — Bundler для корректной работы хочет знать от нас модель камеры и ее внутренние параметры (в крайнем случае, если модель неизвестна, он требует указать фокусное расстояние).
Если для вашей задачи это не проблема — можете смело бросать чтение, потому что это самый простой и одновременно эффективный метод (а знаете, кстати, что примерно таким способом делались модели в игре «Исчезнование Итана Картера»?). Для меня, увы, необходимость быть привязанным к модели камеры — это условие, которого очень хотелось бы избежать. Во-первых, потому что у нас под боком полный ютуб визуального видео-опыта, которым хотелось бы в будущем пользоваться в качестве выборки. Во-вторых (и это, может быть, даже важнее), потому что наш с вами человеческий мозг, похоже, если и знает в цифрах внутренние параметры камеры наших глаз, то прекрасно умеет приспосабливаться к любым оптическим искажениями. Взгляд через объектив широкофокусной камеры, фишай, просмотр кино и ношение окулусрифта совершенно не разрушает ваших зрительных способностей. Значит, наверное, возможен и какой-то другой путь.
Итак, мы печально закрыли страницу с Итаном Картером википедии и опускаемся на уровень ниже — в OpenCV, где нам предлагают следующее:
1. Взять два кадра, снятые с откалиброванной камеры.
2. Вместе с параметрами калибровки (матрицей камеры) положить их оба в функцию stereoRectify, которая выпрямит (ректифицирует) эти два кадра — это преобразование, которое искажает изображение так, чтобы точка и ее смещение оказывались на одной горизонтальной прямой.
3. Эти ректифицированые кадры мы кладем в функцию stereoBM и получаем карту смещений (disparity map) — такую картинку в оттенках серого, где чем пиксель ярче, тем большее смещение он выражает (по ссылке есть пример).
4. Полученную карту смещений кладем в функцию с говорящим названием reprojectImageTo3D (понадобится еще и матрица Q, которую в числе прочих мы получим на шаге 2). Получаем наш трехмерный результат.
Черт, похоже, мы наступаем на те же грабли — уже в пункте 1 от нас требуют откалиброванную камеру (правда, OpenCV милостиво дает возможность сделать это самому). Но погодите, здесь есть план Б. В документации прячется функция с подозрительным названием stereoRectifyUncalibrated…
План Б:
1. Нам нужно оценить примерную часть смещений самим — хотя бы для ограниченного набора точек. StereoBM здесь не подойдет, поэтому нам нужен какой-то другой способ. Логичным вариантом будет использовать feature matching — найти какие-то особые точки в обоих кадрах и выбрать сопоставления. Про то, как это делается, можно почитать здесь.
2. Когда у нас есть два набора соответствующих друг другу точек, мы можем закинуть их в findFundamentalMat, чтобы получить фундаментальную матрицу, которая понадобится нам для stereoRectifyUncalibrated.
3. Запускаем stereoRectifyUncalibrated, получаем две матрицы для ректификации обоих кадров.
4. И… а дальше непонятно. Выпрямленные кадры у нас есть, но нет матрицы Q, которая была нужна для завершающего шага. Погуглив, я наткнулся примерно на такой же недоумения пост, и понял, что либо я что-то упустил в теории, либо в OpenCV этот момент не продумали.
OpenCV: мы — 2:0.
4.1 Меняем план
Но погодите. Возможно, мы с самого начала пошли не совсем правильным путем. В предыдущих попытках мы, по сути, пытались определить реальное положение трехмерных точек — отсюда необходимость знать параметры камеры, матрицы, ректифицировать кадры и так далее. По сути, это обычная триангуляция: на первой камере я вижу эту точку здесь, а на второй здесь — тогда нарисуем два луча, проходящих через центры камер, и их пересечение покажет, как далеко точка от нас находится.
Это все прекрасно, но вообще говоря, нам не нужно. Реальные размеры предметов интересовали бы нас, если бы наша модель использовалась потом для промышленных целей, в каких-нибудь 3d-принтерах. Но мы собираемся (эта цель слегка уже расплылась, правда) запихивать полученные данные в нейросети и им подобные классификаторы. Для этого нам достаточно знать только относительные размеры предметов. Они, как мы все еще помним, обратно пропорциональны смещениям параллакса — чем дальше от нас предмет, тем меньше смещается при нашем движении. Нельзя ли как-то найти эти смещения еще проще, просто каким-то образом сопоставив обе картинки?
Само собой, можно. Привет, оптический поток.
Это замечательный алгоритм, который делает ровно то, что нам нужно. Кладем в него картинку и набор точек. Потом кладем вторую картинку. Получаем на выходе для заданных точек их новое положение на второй картинке (приблизительное, само собой). Никаких калибровок и вообще никаких упоминаний о камере — оптический поток, несмотря на название, можно рассчитывать на базе чего угодно. Хотя обычно он все-таки используется для слежения за объектами, обнаружения столкновений и даже дополненной реальности.
Для наших целей мы (пока) хотим воспользоваться «плотным» потоком Гуннара Фарнебака, потому что он умеет рассчитывать поток не для каих-то отдельных точек, а для всей картинки сразу. Метод доступен с помощью calcOpticalFlowFarneback, и первые же результаты начинают очень-очень радовать — смотрите, насколько оно выглядит круче, чем предыдущий результат stereoRectifyUncalibrated + stereoBM.
Большое спасибо замечательной игре Portal 2 за возможность строить собственные комнаты и играть в кубики. I’m doin’ Science!
Код для для этой маленькой демонстрации
# encoding: utf-8 import cv2 import numpy as np from matplotlib import pyplot as plt img1 = cv2.imread('0.jpg', 0) img2 = cv2.imread('1.jpg', 0) def stereo_depth_map(img1, img2): # 1: feature matching orb = cv2.ORB() kp1, des1 = orb.detectAndCompute(img1, None) kp2, des2 = orb.detectAndCompute(img2, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(des1, des2) matches = sorted(matches, key=lambda x: x.distance) src_points = np.vstack([np.array(kp1[m.queryIdx].pt) for m in matches]) dst_points = np.vstack([np.array(kp2[m.trainIdx].pt) for m in matches]) # 2: findFundamentalMat F, mask = cv2.findFundamentalMat(src_points, dst_points) # 3: stereoRectifyUncalibrated _, h2, h3 = cv2. stereoRectifyUncalibrated(src_points.reshape(src_points.shape[ 0], 1, 2), dst_points.reshape(dst_points.shape[0], 1, 2), F, img1.shape) rect1 = cv2.warpPerspective(img1, h2, (852, 480)) rect2 = cv2.warpPerspective(img2, h3, (852, 480)) # 3.5: stereoBM stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET, ndisparities=16, SADWindowSize=15) return stereo.compute(rect1, rect2) def optical_flow_depth_map(img1, img2): flow = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) return mag def plot(title, img, i): plt.subplot(2, 2, i) plt.title(title) plt.imshow(img, 'gray') plt.gca().get_xaxis().set_visible(False) plt.gca().get_yaxis().set_visible(False) plot(u'Первый кадр', img1, 1) plot(u'Второй кадр (шаг вправо)', img2, 2) plot(u'stereoRectifyUncalibrated', stereo_depth_map(img1, img2), 3) plot(u'Первый кадр', optical_flow_depth_map(img1, img2), 4) plt. show()
Итак, отлично. Смещения у нас есть, и на вид неплохие. Как теперь нам получить из них координаты трехмерных точек?
4.2 Часть, в которой мы получаем координаты трехмерных точек
Эта картинка уже мелькала на одной из ссылок выше.
Расстояние до объекта здесь рассчитывается методом школьной геометрии (подобные треугольники), и выглядит так: . А координаты, соответственно, вот так: . Здесь w и h — ширина и высота картинки, они нам известны, f — фокусное расстояние камеры (расстояние от центра камеры до поверхности ее экрана), и B — камеры же шаг. Кстати, обратите внимание, что мы тут слегка нарушаем общепринятые названия осей, когда Z направлена вверх — у нас Z смотрит «вглубь» экрана, а X и Y — соответственно, направлены по ширине и высоте картинки.
Ну, насчет f все просто — мы уже оговаривали, что реальные параметры камеры нас не интересуют, лишь бы пропорции всех предметов изменялись по одному закону. Если подставить Z в формулу для X выше, то можно увидеть, что X от фокусного расстояния вообще не зависит (f сокращается), поэтому разные его значения буду менять только глубину — «вытягивать» или «сплющивать» нашу сцену. Визуально — не очень приятно, но опять же, для алгоритма классификации — совершенно все равно. Так что зададим фокусное расстояние интеллектуальным образом — просто придумаем. Я, правда, оставляю за собой право слегка изменить мнение дальше по тексту.
Насчет B чуть посложнее — если у нас нет встроенного шагомера, мы не знаем, на какую дистанцию переместилась камера в реальном мире. Так что давайте пока немного считерим и решим, что движение камеры происходит примерно плавно, кадров у нас много (пара десятков на секунду), и расстояние между двумя соседними примерно одинаковое, т.е. . И опять же, дальше мы слегка уточним эту ситуацию, но пока пусть будет так.
Настало время написать немного кода
import cv2 import numpy as np f = 300 # раз мы занимаемся визуализацией, фокус я все-таки подобрал так, чтобы сцена выглядела условно реальной B = 1 w = 852 h = 480 img1 = cv2. imread('0.jpg', 0) img2 = cv2.imread('1.jpg', 0) flow = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) edges = cv2.Canny(img1, 100, 200) result = [] for y in xrange(img1.shape[0]): for x in xrange(img1.shape[1]): if edges[y, x] == 0: continue delta = mag[y, x] if delta == 0: continue Z = (B * f) / delta X = (Z * (x - w / 2.)) / f Y = (Z * (y - h / 2.)) / f point = np.array([X, Y, Z]) result.append(point) result = np.vstack(result) def dump2ply(points): # сохраняем в формат .ply, чтобы потом открыть Блендером with open('points.ply', 'w') as f: f.write('ply\n') f.write('format ascii 1.0\n') f.write('element vertex {}\n'.format(len(points))) f.write('property float x\n') f.write('property float y\n') f.write('property float z\n') f.write('end_header\n') for point in points: f. write('{:.2f} {:.2f} {:.2f}\n'.format(point[0], point[2], point[1])) dump2ply(result)
Вот так выглядит результат. Надеюсь, эта гифка успела загрузиться, пока вы дочитали до этого места.
Для наглядности я взял не все точки подряд, а только границы, выделенные Canny-детектором
С первого взгляда (во всяком случае, мне) все показалось отличным — даже углы между гранями кубиков образовали симпатичные девяносто градусов. С предметами на заднем плане получилось похуже (обратите внимание, как исказились контуры стен и двери), но хэй, наверное, это просто небольшой шум, его можно будет вылечить использованием большего количества кадров или чем-нибудь еще.
Из всех возможных поспешных выводов, которые можно было здесь сделать, этот оказался дальше всех от истины.
В общем, основная проблема оказалась в том, что какая-то часть точек довольно сильно искажалась. И — тревожный знак, где уже пора было заподозрить неладное — искажалась не случайным образом, а примерно в одних и тех же местах, так что исправить проблему путем последовательного наложения новых точек (из других кадров) не получалось.
Выглядело это примерно так:
Лестница сминается, местами превращаясь в аморфный кусок непонятно-чего.
Я очень долго пытался это починить, и за это время перепробовал следующее:
— сглаживать каринку с оптическим потоком: размытие по Гауссу, медианный фильтр и модный билатеральный фильтр, который оставляет четкими края. Бесполезно: предметы наоборот, еще сильнее расплывались.
— пытался находить на картинке прямые линии с помощью Hough transform и переносить их в неизменном прямом состоянии. Частично работало, но только на границах — поверхности по-прежнему оставались такими же искаженными; плюс никуда не получалось деть мысль в духе «а что если прямых линий на картинке вообще нет».
— я даже попытался сделать свою собственную версию оптического потока, пользуясь OpenCVшным templateMatching. Работало примерно так: для любой точки строим вокруг нее небольшой (примерно 10×10) квадрат, и начинаем двигать его вокруг и искать максимальное совпадение (если известно направление движения, то «вокруг» можно ограничить). Получилось местами неплохо (хотя работало оно явно медленнее оригинальной версии):
Слева уже знакомый поток Фарнебака, справа вышеописаный велосипед
С точки зрения шума, увы, оказалось ничуть не лучше.
В общем, все было плохо, но очень логично. Потому что так оно и должно было быть.
Иллюстрация к проблеме. Движение здесь — по-прежнему шаг вправо
Давайте выберем какую-нибудь зеленую точку из картинки выше. Предположим, мы знаем направление движения, и собираемся искать «смещенного близнеца» нашей зеленой точки, двигаясь в заданном направлении. Когда мы решаем, что нашли искомого близнеца? Когда наткнемся на какой-нибудь «ориентир», характерный участок, который похож на окружение нашей начальной точки. Например, на угол. Углы в этом отношении легко отслеживать, потому что они сами по себе встречаются довольно редко. Поэтому если наша зеленая точка представляет собой угол, и мы находим похожий угол в заданной окрестности, то задача решена.
Чуть сложнее, но все еще легко обстоит ситуация с вертикальной линией (вторая левая зеленая точка). Учитывая, что мы двигаемся вправо, вертикальная линия встретится нам только один раз за весь период поиска. Представьте, что мы ползем своим поисковым окном по картинке и видим однотонный фон, фон, снова фон, вертикальный отрезок, опять фон, фон, и снова фон. Тоже несложно.
Проблема появляется, когда мы пытаемся отслеживать кусок линии, расположенной параллельно движению. У красной точки нет одного четко выраженного кандидата на роль смещенного близнеца. Их много, все они находятся рядом, и выбрать какого-то одного тем методом, что мы пользуемся, просто невозможно. Это функциональное ограничение оптического потока. Как нас любезно предупреждает википедия в соответствующей статье, «We cannot solve this one equation with two unknown variables», и тут уже ничего не сделаешь.
Совсем-совсем ничего?
Вообще, если честно, то это, наверное, не совсем правда. Вы ведь можете найти на правой картинке соответствие красной точке? Это тоже не очень сложно, но для этого мы мысленно пользуемся каким-то другим методом — находим рядом ближайшую «зеленую точку» (нижний угол), оцениваем расстояние до нее и откладываем соответствующее расстояние на второй грани куба. Алгоритмам оптического потока есть куда расти — этот способ можно было бы и взять на вооружение (если этого еще не успели сделать).
На самом деле, как подсказывает к этому моменту запоздавший здравый смысл, мы все еще пытаемся сделать лишнюю работу, которая не важна для нашей конечной цели — распознавания, классификации и прочего интеллекта. Зачем мы пытаемся запихать в трехмерный мир все точки картинки? Даже когда мы работаем с двумерными изображениями, мы обычно не пытаемся использовать для классификации каждый пиксель — большая их часть не несет никакой полезной информации. Почему бы не делать то же самое и здесь?
Собственно, все оказалось вот так просто. Мы будем рассчитывать тот же самый оптический поток, но только для «зеленых», устойчивых точек. И кстати, в OpenCV о нас уже позаботились. Нужная нам штука называется поток Лукаса-Канаде.
Приводить код и примеры для тех же самых случаев будет слегка скучно, потому что получится то же самое, но с гораздо меньшим числом точек. Давайте по дороге сделаем еще чего-нибудь: например, добавим нашему алгоритму возможность обрабатывать повороты камеры. До этого мы двигались исключительно вбок, что в реальном мире за пределами окон поездов встречается довольно редко.
С появлением поворотов координаты X и Z у нас смешиваются. Оставим старые формулы для расчета координат относительно камеры, и будем переводить их в абсолютные координаты следующим образом (здесь — координаты положения камеры, альфа — угол поворота):
(игрек — читер; это потому, что мы считаем, что камера не двигается вверх-вниз)
Где-то здесь же у нас появляются проблемы с фокусным расстоянием — помните, мы решили задать его произвольным? Так вот, теперь, когда у нас появилась возможность оценивать одну и ту же точку с разных углов, он начал иметь значение — именно за счет того, что координаты X и Z начали мешаться друг с другом. На самом деле, если мы запустим код, аналогичный предыдущему, с произвольным фокусом, мы увидим примерно вот что:
Неочевидно, но это попытка устроить обход камеры вокруг обычного кубика. Каждый кадр — оценка видимых точек после очередного поворота камеры. Вид сверху, как на миникарте.
К счастью, у нас все еще есть оптический поток. При повороте мы можем увидеть, какие точки переходят в какие, и рассчитать для них координаты с двух углов зрения. Отсюда несложно получить фокусное расстояние (просто возьмите две вышеприведенных формулы для разных значений альфа, приравняйте координаты и выразите f). Так гораздо лучше:
Не то что бы все точки легли идеально одна в другую, но можно хотя бы догадаться о том, что это кубик.
И, наконец, нам нужно как-то справляться с шумом, благодаря которому наши оценки положения точек не всегда совпадают (видите на гифке сверху аккуратные неровные колечки? вместо каждого из них, в идеале, должна быть одна точка). Тут уже простор для творчества, но наиболее адекватный способ мне показался таким:
— когда у нас есть подряд несколько сдвигов в сторону, объединяем информацию с них вместе — так для одной точки у нас будет сразу несколько оценок глубины;
— когда камера поворачивается, мы пытаемся совместить два набора точек (до поворота и после) и подогнать один к другому. Эта подгонка по-правильному называется «регистрацией точек» (о чем вы бы никогда не догадались, услышав термин в отрыве от контекста), и для нее я воспользовался алгоритмом Iterative closest point, нагуглив версию для питона + OpenCV;
— потом точки, которые лежат в пределах порогового радиуса (определяем методом ближайшего соседа), сливаются вместе. Для каждой точки мы еще отслеживаем что-то типа «интенсивности» — счетчик того, как часто она объединялась с другими точками. Чем больше интенсивность — тем больше шанс на то, что это честная и правильная точка.
Результат может и не такой цельный, как в случае с кубиками из Портала, но по крайней мере, точный. Вот пара воссозданных моделей, которые я сначала загрузил в Блендер, покрутил вокруг них камеру и сохранил полученные кадры:
Голова профессора Доуэля
Какая-то рандомная машина
Бинго! Дальше нужно их все запихать в распознающий алгоритм и посмотреть, что получится. Но это, пожалуй, оставим на следующую серию.
Слегка оглянемся назад и вспомним, зачем мы это все делали. Ход рассуждений был такой:
— нам нужно уметь распознавать вещи, изображенные на картинках
— но эти картинки каждый раз, когда мы меняем положение или смотрим на одну и ту же вещь с разных углов, меняются. Иногда до неузнаваемости
— это не баг, а фича: следствие того, что наши ограниченые сенсоры глаз видят только часть предмета, а не весь предмет целиком
— следовательно, нужно как-то объединить эти частичные данные от сенсоров и собрать из них представление о предмете в его полноценной форме.
Вообще говоря, это ведь наверняка проблема не только зрения. Это скорее правило, а не исключение — наши сенсоры не всемогущи, они постоянно воспринимают информацию об объекте частями — но любопытно, насколько все подобные случаи можно объединить в какой-то общий фреймворк? Скажем (возвращаясь к зрению), ваши глаза сейчас постоянно совершают мелкие и очень быстрые движения — саккады — перескакивая между предметами в поле зрения (а в промежутках между этими движениями ваше зрение вообще не работает — именно поэтому нельзя увидеть собственные саккады, даже уставившись в зеркало в упор). Мозг постоянно занимается упорной работой по «сшиванию» увиденных кусочков. Это — та же самая задача, которую мы только что пытались решить, или все-таки другая? Восприятие речи, когда мы можем соотнести десяток разных вариантов произношения слова с одним его «идеальным» написанием — это тоже похожая задача? А как насчет сведения синонимов к одному «образу» предмета?
Если да — то возможно, проблема несколько больше, чем просто местечковый алгоритм зрительной системы, заменяющий нашим недоэволюционировавшим глазам лазерную указку сканера.
Очевидные соображения говорят, что когда мы пытаемся воссоздать какую-то штуку, увиденную в природе, нет смысла слепо копировать все ее составные части. Чтобы летать по воздуху, не нужны машущие крылья и перья, достаточно жесткого крыла и подъемной силы; чтобы быстро бегать, не нужны механические ноги — колесо справится гораздо лучше. Вместо того, чтобы копировать увиденное, мы хотим найти принцип и повторить его своими силами (может быть, сделав это проще/эффективней). В чем состоит принцип интеллекта, аналог законов аэродинамики для полета, мы пока не знаем. Deep learning и Ян Лекун, пророк его (и вслед за ним много других людей) считают, что нужно смотреть в сторону способности строить «глубокие» иерархии фич из получаемых данных. Может быть, мы сможем добавить к этому еще одно уточнение — способность объединять вместе релевантные куски данных, воспринимая их как части одного объекта и размещая в новом измерении?
Рисование по точкам для 10 лет. Рисование по точкам
Большое значение для приобретения навыков письма ребенком имеют обводилки по точкам. Чтобы правильно рисовать, тоже нужен навык. Заниматься с малышом и обводить картинки можно уже с 2,5-3 лет.
Как можно заниматься?
Практиковать рисование по контуру, в основе которого лежат точки, можно и дома, и в детском саду. Проконтролировать это простое занятие могут не только воспитатели, но и родители. Достаточно усадить ребенка за столик, дать задание обвести картинку, показать, как это делается, и предоставить малышу полную свободу. Пусть пофантазирует, проявит творческую инициативу. Проследите, чтобы кроха правильно держал карандаш или ручку. Неправильная постановка изначально может испортить почерк в будущем.
Например, можно попросить малыша обвести контур, чтобы получился любимый герой мультфильма, персонаж, кукла. Обводилки должны быть интересными и соответствовать возрасту ребенка. Например, в 6-7 лет медвежата и котята становятся мало привлекательными. На первый план выходят рисунки любимых героев мультфильмов, которые можно обвести по точкам и затем раскрасить. Помните: дети очень любят рисовать, и задача взрослых – привить интерес к этому занятию.
Здесь Вы найдете простые и очень интересные задания для детей, в которых нужно будет соединить цифры. Такие игры развивают математические способности, тренируют его внимательность, память и ум, развивают мелкую моторику пальцев рук. Соедини по цифрам — игры раскраски, которые подойдут для малышей дошкольного и младшего школьного возраста, изучающих цифры для детей, а главное, для тех, кто учится считать, а именно порядковому счету.
Задания
Упражнения «Соедини по цифрам» подходят как для занятий дома, так и для занятий в школах раннего развития, детских садах, младших начальных классах школ.
Скачать все задания можно совершенно бесплатно. Нажимайте на картинки ниже, чтобы скачать и распечатать задания «соедини по цифрам». Всего здесь Вы можете скачать одиннадцать математических раскрасок «Соедини по цифрам». Математическая раскраска с симпатичной кошечкой — здесь нужно соединить точки от 1 до 18, а потом можно ее раскрасить.
Более сложная математическая раскраска — здесь нужно соединить цифры от 1 до 26 и получится камин.
Когда дети достигают возраста 4-5 лет, игры с игрушками начинают надоедать, малыш развивается, ему необходимо подготавливаться к школе. А чтобы подготовка была одновременно полезной и интересной можно использовать точечные рисунки для подготовки руки к письму, развития мелкой моторики. Рисование по точкам – интересное и полезное времяпрепровождение.
Взрослым кажется, что совсем не сложно обвести линии уже готового рисунка. Многие родители считают, что это просто развлечение для детей. Но малышам нужно потратить много сил, чтобы рисовать точечные фрукты, цифры или буквы.
Мозг и руки детей работают несколько иначе, чем у взрослых, поэтому им очень трудно сразу освоить обводилки и рисовать все точно. Но зато потом, в школе такая практика значительно облегчит освоение прописи, ребенку будет проще написать диктант. Ребенку будет проще писать диктант, потому что его рука уже будет натренирована.
Такое занятие как рисование по точкам называется графомоторикой. Обводилки развивают очень много навыков и умений. Ими наделены прописи. Там есть картинки, которые нужно рисовать и многое другое. Задание звучит как «соедини точки и получи рисунок» либо просто «соедини». Прописи – это печатные тетради. Обучение начинается с того, что ребенок обводит печатные прямые линии, буквы, учится рисовать простые рисунки.
Как развить мелкую моторику
Мелкая моторика – это правильные, скоординированные движения рук и ног. Мелкая моторика начинает развиваться с самого рождения. Сначала малыш начинает сжимать и разжимать кулачки, потом хватать и держать предметы, держать ложку и т.д. Чтобы правильно и красиво писать и рисовать, ребенку просто необходимо развивать мелкую моторику рук.
Это можно сделать с помощью самых разнообразных игр. Один из действенных способов – рисование по точкам. Сначала можно обводить просто линии, затем взяться за цифры и буквы. Научившись обводить линии, цифры и буквы, можно смело взяться за овощи и другие, более сложные фигуры. Таким образом вырабатывается техника письма и ребенок учится рисовать.
Веселые занятия для детей! Соединяем рисунок по точкам
Раскраска по точкам
Для того чтобы распечатать кликните по картинке, она откроется в специальном окне, далее нажимаете правой кнопкой мыши по картинке и выбираете «Печать»
Это вид раскраски, где на рисунке изображены фрукты, овощи, люди, цифры или буквы, но линии этих рисунков выполнены в виде точек. Ребенок должен обвести эти точки, чтобы получилась картинка, а потом можно ее раскрасить. Школьные прописи содержат такие рисунки, но там чаще представлены линии, цифры и буквы. Прописи не только учат правильно писать, но и помогают запомнить алфавит. Ведь алфавит это самое главное, что должен знать будущий ученик. Цифры предлагается обвести в клетках, а буквы по линиям.
Такие задания могут заинтересовать детей. Рисование по клеточкам тоже очень нравится детям. Зачастую в клеточках написаны цифры, а каждой цифре соответствует определенный цвет. Заполняя все клеточки, малыш получает рисунок. Также примером такого рисования являются японские кроссворды.
Соедини по точкам
Для детей в возрасте 4-5 лет соединение по точкам – интересное занятие. В 4-5 лет малышей трудно заинтересовать учебой, заставить читать или писать диктант. Но достаточно лишь распечатать прописи с точками, как у детей просыпается интерес. На первый раз лучше просто предложить обвести прямые линии, затем цифры, буквы и другие фигуры.
Такие картинки помогут выучить алфавит, кстати, ребенку будет проще писать печатные буквы т.к. их линии более прямые. После прохождения такой темы как алфавит, можно устроить небольшой диктант, чтобы посмотреть насколько хорошо он усвоил алфавит. Диктант можно провести и для проверки цифр.
Обведи по контуру и раскрась
Все рисунки по точкам для детей имеют одно и то же задание: соедини, обведи рисунок и раскрась. Прописи тоже наполнены такими заданиями как: соедини точки. Прописи – это печатные тетради для дошкольников (от 2 до 6 лет) и младших школьников (от 6 до 9 лет). В прописях можно только учиться писать отдельные буквы, а, например, диктант стоит писать в другой тетради. В них вырабатывается техника письма.
Детям в возрасте 3-5 лет можно распечатать картинки, которые они смогут соединить. Это будет интересным заданием для них. Зачастую такие картинки имеют два задания: соедини и раскрась. Если у родителей нет возможности распечатать картинки, можно их нарисовать самостоятельно, но мы рисуем не так точно как компьютер, особенно всякие фигуры, овощи и т.п.
Алфавит
Прописи предлагают ребенку, чтобы он мог выучить алфавит не только в устном, но и в письменном виде. Некоторые авторы прописей предлагают проводить с детьми диктант, чтобы проверять их знания. Диктант – это отличная проверка знаний, скорости письма.
Цифры
Цифры предлагается обводить в клетках, чтобы ребенок сразу привыкал к такой технике записи. Цифры писать проще, чем буквы, они содержат больше прямых линий. Хотя детям и не очень нравятся математические рисунки, они кажутся им скучными, потому что их нельзя раскрасить.
Животные
Животные вызывают больший интерес у детей. Такие картинки можно раскрасить, увидеть новое животное, соединив точки, выучить много видов животных, которые раньше были неизвестны ребенку.
Выбор остается всегда за родителями. Только они вправе решать готов ли их малыш к заданию «соедини», какие картинки лучше подобрать для соединения, что малыша больше заинтересует. Возраст 4-5 лет это очень важный этап в жизни маленького человека. Уже в 5 лет он знает, что ему интересно, решает, чем он будет заниматься.
В 5 лет ребенок уже активно готовится к школе. Помогайте своим детям во всем, если есть задание «соедини» – покажите как, «запомни» – подберите самый легкий способ. В 5 лет малыши очень нуждаются в вашей помощи и поддержке. Обводилки очень полезны для детей, они помогают в развитии мелкой моторики рук, усидчивости, внимательности и памяти.
Детские игры онлайн для детей. Рисунки по точкам Корабль онлайн
Рисование по точкам для детей линий, фигур и животных. Рисуем по точкам для развития навыка письма.
Красивый подчерк и успешное обучение письму зависит от правильного владения карандашом, умелого нажима и способности проводить линии всевозможной формы. Начните с обучения рисованию по точкам линий и фигур, а затем предложите ребёнку рисование по точкам животных и их раскрашивание.
Рисуем по точкам, развивая навыки постепенно
Проведение линий карандашом или ручкой — отличная практика, помогающая приучить руку к письму, развить мелкие мышцы, научить малыша что-то крепко удерживать.
Пунктирная линия служит в качестве руководства и помогает ребёнку, ведь в любой момент можно замедлить скорость рисования, усилить или ослабить нажатие на карандаш, не испортив картинку, а, следовательно, не потеряв интерес.
Как только ребёнок научится рисовать по точкам линии, прямые и всевозможные волны, переходите к фигурам, а затем к животным. Изгибы пунктирных линий разовьют навык рисования достаточно для того, чтобы начать изучение правописания букв и цифр.
Предлагая ребёнку распечатанный материал с картинкой, на которой требуется нарисовать что-нибудь по точкам, сначала попросите малыша обвести линии указательным пальцем его правой руки (или левой, если ребёнок — левша). Затем попросите его рисовать пальцем не по листу, а словно в воздухе над картинкой. Повторите упражнение несколько раз, а потом выполните задание карандашом.
Когда ребёнок научится рисованию по точкам карандашом, предложите ему ручку или маркер.
Уделите внимание рисованию по точкам животных, без отрыва руки от бумаги.
Как ещё развить мелкую моторику, кроме рисования по точкам?
Если ваш ребёнок по каким-либо причинам не заинтересовался материалами рисования по точкам, вы можете весело провести время, развивая мелкую моторику и другими способами.
- Нанизывайте вместе крупный бисер на ниточки или перебирайте бусы;
- Приклейте большой лист бумаги или старые обои на стену и пусть ваш ребёнок рисует свои картинки на этом листе. Рисование на вертикальной поверхности требует прикладывания больших усилий и ручки тренируются быстрее;
- Как только ваш ребёнок уже достаточно крепко умеет держать в руках мелкие вещи и не отпускает их, если слегка потянуть, начинайте его учить завязывать шнурки или плести косички из любых лент или верёвочек;
- Если вы читаете газеты или журналы, дайте ребёнку маркер и предложите ему обвести им все заголовки;
- Хорошее сцепление большого и указательного пальцев проще всего развить, перекладывая бобы или даже горошинки из одной миски в другую, используя только два пальца, а не всю ладошку.
- Морозные окна или запотевшие зеркала в ванной — отличное место для того, чтобы учиться рисовать указательным пальцем.
При желании, вы можете использовать в повседневной жизни каждый из способов развития мелкой моторики вашего ребёнка, этим вы поможете ему быстрее научиться писать в будущем.
Симметрия с ножницами: janemouse — LiveJournal
Симметрия с ножницами: janemouse — LiveJournal ?- Путешествия
- Архитектура
- Дети
- Cancel
И мы с детьми на математическом кружке в ЦДО в прошлый четверг из неё решали часть заданий.
Первому классу я предложила для начала нарисовать свои симметричные замки, домики и дворцы по клеточкам.
Идею, вроде, понимают, но многим очень сложно рисовать — особенно диагонали.
Если рисуют домик из прямоугольных деталей, то обычно всё правильно рисуют и клеточки отсчитывают, но крыши-диагонали рисуют как попало, в итоге левая часть домика часто не равна правой.
Порисовали, разобрались, потом я им на доску повесила всякие картинки-окошки: ёлочку, домик, девочку — и просила согнуть листок пополам и вырезать такое же окошко. Не одним разрезом, но симметрично.
Так вот, для многих этот переход от рисования по клеточкам к вырезанию совсем не очевиден. И где рисовать половинку ёлочки — тоже…
Пробуют рисовать ёлочку, но не попадают на сгиб.
Или режут как попало…
Нарисовать ось симметрии на фигурке, нарисованной по клеточкам — могут, а применить знания на практике — не очень. Мб надо было попробовать и вырезать по клеточкам
первый замок получился, второй — не очень
этот вышел
эти тоже
а у кого-то треугольные крыши не выходят (
А со вторым и третьим классом решали задачки
Всё вырезали и проверяли
попытки вырезать окошко в форме ёлочки
я понял!
ура, получилось!
столы завалены обрезками
нелёгкая это работа!
ёлка получается, а снеговик — не выходит
три ёлочки и солнышко!
две девочки и ёлочка!
получилось!
но видно, что практики с ножницами детям очень не хватает
а самые старшие по схеме смогли вырезать шестиугольные снежинки
но самим сложить под 60 градусов им пока сложно
хотя увлеклись все!
А у нас на сайте есть 2 большие ёлки-раскраски и шаблоны снежинок — в разделе для свободного скачивания
Tags: бумага, кружок, математика с ножницами, мышематика, симметрия, фото
Subscribe
Математика в первом классе: за рамками школьной программы
Что мы делаем со школьниками на Мышематике? Мы показываем им, что математика — это красиво. Если спросить учеников 1-2 класса, что они делают в…
Вы видели, как дети идут за дудочкой Крысолова?
А я вот это вижу регулярно, когда вижу занятия классных педагогов. У нас когда-то в лагере в Тарусе прекрасная Юля Мартемьянова вела для детей танцы…
Математика с ножницами
Господи, дай мне сил, чтобы изменить то, что в моих силах. Господи, дай мне терпения, чтобы принять то, что я не могу изменить. И дай мне мудрости…
Самодельные игрушки и открытки из того, что под рукой
Мы много раз делали для ёлочки игрушки-домики из молочных пакетов. А ещё я когда-то вела в школе 2 кружка — логику и изостудию. Мы как-то со всеми…
Семинар для родителей 11 декабря 2020
У нас будет 11 декабря в Зуме семинар для родителей — про то, как играть со школьниками в математику. Я думаю, семинар будет интересен и для…
Деревянная мозаика — мой любимый материал
У меня в детстве было много необычных игрушек, потому что моя мама прочитала много статей про семью Никитиных, и сама для нас сделала из картона…
Калейдоскоп из линеек
Я про это уже рассказывала, наверное, но мб кто-то пропустил. Нужно взять 3 линейки (чёрные лучше всего, или прозрачные — и чёрная бумага вокруг),…
Ура-ура! Вышла новая тетрадка «Математика с ножницами»
У меня вышла новая тетрадка МАТЕМАТИКА С НОЖНИЦАМИ, которую мы готовили больше двух лет. Мы рисовали, складывали, вырезали, придумывали серии…
Ожидание праздника
Когда снег выпадает, становится светлее и легче. Когда темнеет рано, снега нет, а везде слякоть, то настроение портится само. И надо как-то спасаться…
Photo
Hint http://pics.livejournal.com/igrick/pic/000r1edq
- 12 comments
Математика в первом классе: за рамками школьной программы
Что мы делаем со школьниками на Мышематике? Мы показываем им, что математика — это красиво. Если спросить учеников 1-2 класса, что они делают в…
Вы видели, как дети идут за дудочкой Крысолова?
А я вот это вижу регулярно, когда вижу занятия классных педагогов. У нас когда-то в лагере в Тарусе прекрасная Юля Мартемьянова вела для детей танцы…
Математика с ножницами
Господи, дай мне сил, чтобы изменить то, что в моих силах. Господи, дай мне терпения, чтобы принять то, что я не могу изменить. И дай мне мудрости…
Самодельные игрушки и открытки из того, что под рукой
Мы много раз делали для ёлочки игрушки-домики из молочных пакетов. А ещё я когда-то вела в школе 2 кружка — логику и изостудию. Мы как-то со всеми…
Семинар для родителей 11 декабря 2020
У нас будет 11 декабря в Зуме семинар для родителей — про то, как играть со школьниками в математику. Я думаю, семинар будет интересен и для…
Деревянная мозаика — мой любимый материал
У меня в детстве было много необычных игрушек, потому что моя мама прочитала много статей про семью Никитиных, и сама для нас сделала из картона…
Калейдоскоп из линеек
Я про это уже рассказывала, наверное, но мб кто-то пропустил. Нужно взять 3 линейки (чёрные лучше всего, или прозрачные — и чёрная бумага вокруг),…
Ура-ура! Вышла новая тетрадка «Математика с ножницами»
У меня вышла новая тетрадка МАТЕМАТИКА С НОЖНИЦАМИ, которую мы готовили больше двух лет. Мы рисовали, складывали, вырезали, придумывали серии…
Ожидание праздника
Когда снег выпадает, становится светлее и легче. Когда темнеет рано, снега нет, а везде слякоть, то настроение портится само. И надо как-то спасаться…
3 способа изменения или вставки изображений на основе значений ячеек
От запасных частей до дач, от сотрудников до логотипов — существует множество причин для вставки и автоматического изменения изображения на основе ячейки. Вы можете думать об этом как о функции поиска, которая возвращает изображение, а не значение. В конечном счете, цель состоит в том, чтобы связать изображение или картинку с ячейкой; измените значение ячейки, и изображение изменится.
В этом посте мы рассмотрим три различных метода выполнения этой задачи. У каждого решения есть свои сильные и слабые стороны; изучите их все и выберите тот, который лучше всего соответствует вашим требованиям.
Давайте рассмотрим каждый из этих методов по очереди.
Загрузите файл примера
Я рекомендую вам скачать файл примера для этого поста. Затем вы сможете работать с примерами и увидеть решение в действии, а файл будет полезен для дальнейшего использования.
Скачать файл: 0004 Изменить изображение на основе файла cell.zip
Содержание
Изменить изображение с именованным диапазоном + ИНДЕКС/ПОИСКПОЗ + связанное изображение
Если вы работаете с файлом примера, мы начнем с Связанное изображение вкладка.
В общих чертах, этот метод работает следующим образом:
- Создание динамического именованного диапазона с помощью комбинации формул ПОИСКПОЗ ИНДЕКС
- Использовать именованный диапазон в качестве источника связанного изображения
Теперь давайте рассмотрим каждый из этих шагов по очереди.
Пример данных содержит список стран в столбце A и соответствующие им флаги в столбце B.
Создайте динамический именованный диапазон с помощью INDEX MATCH
Начните с ввода одного из названий стран в ячейку (в нашем примере используйте ячейку D2).
Далее мы создадим именованный диапазон, выбрав Formulas -> Define Name на ленте .
В диалоговом окне New Name создайте новый именованный диапазон с именем CountryLookup .
Вместо диапазона в поле Относится к должна содержаться формула для вычисления диапазона. В нашем примере мы будем использовать ИНДЕКС/ПОИСКПОЗ.
Формула в поле Относится к:
=ИНДЕКС('Связанное изображение'!$B$2:$B$11, MATCH('Linked Picture'!$D$2,'Linked Picture'!$A$2:$A$11,0))
В этой формуле:
- Ячейки B2-B11 содержат флаги
- Ячейка D2 содержит название страны для сопоставления
- Ячейки A2-A11 содержат названия стран
Нажмите OK , чтобы закрыть диалоговое окно «Новое имя».
Использование именованного диапазона в качестве источника связанного изображения
Теперь, когда именованный диапазон создан, выполните следующие шаги, чтобы создать связанное изображение.
- Выберите любую ячейку, содержащую флаг.
- Щелкните Главная -> Копировать (или Ctrl + C), чтобы скопировать ячейку.
- Выберите другую ячейку (используйте E2 при работе с файлом примера).
- Щелкните Главная страница -> Вставить (раскрывающийся список) -> Связанное изображение (в качестве альтернативы можно использовать инструмент «Камера»).
- Появится вставленное изображение.
- Выберите вставленное изображение.
- Измените адрес в строке формул, чтобы он совпадал с именованным диапазоном, который мы создали ранее (CountryLookup в нашем примере).
Измените название страны в ячейке D2 и посмотрите, как изменится изображение. Для полноты измените ячейку D2 на раскрывающийся список проверки данных, содержащий все страны.
Ошибка «Ссылка недействительна»
Если вы получили Ссылка недействительна возможны две проблемы:
- Результат функции ИНДЕКС/ПОИСКПОЗ выдает ошибку. Обычно это происходит, когда название страны не совпадает ни с одной из стран в списке.
- Именованный диапазон, примененный к рисунку, не существует.
Другие варианты формулы
ИНДЕКС/ПОИСКПОЗ — это комбинация формул, с помощью которой можно добиться удивительных результатов; формулы изображений — лишь одна из тех удивительных вещей. Но любая формула, возвращающая диапазон, будет работать внутри именованного диапазона. Вот несколько простых альтернатив:
XLOOKUP (новая функция доступна в Excel 365)
=XLOOKUP('Связанное изображение'!$D$2,'Связанное изображение'!$A$2:$A$11, 'Linked Picture'!$B$2:$B$11)
Узнайте больше о функции XLOOKUP в этой статье: Функция XLOOKUP (support.office.com)
OFFSET / MATCH
=OFFSET('Linked Picture '!$A$1,MATCH('Связанное изображение'!$D$2, 'Linked Picture'!$A$2:$A$11,0),1)
Чтобы узнать о других формулах, возвращающих диапазоны, ознакомьтесь с этим постом.
Изменить изображение с заливкой диаграммы + #Н/Д
Если вы работаете с файлом примера, перейдите на вкладку Заливка диаграммы .
В общих чертах этот метод работает следующим образом:
- Создайте формулу, которая вычисляет 1 для выбранной страны или #Н/Д для других стран.
- Создайте столбчатую диаграмму с накоплением со списком стран и формулой, созданной в шаге 1 выше, в качестве источника
- Добавьте изображения в качестве заливки для каждой серии диаграмм
Вот эти шаги более подробно
Формула для расчета как 1 или #N/A
Введите название страны в ячейку (в нашем примере используйте ячейку D2).
Колонка A содержит названия стран.
Введите следующую формулу в ячейку B2:
=ЕСЛИ(ВПР(A2,$D$2,1,0)=A2,1,NA())
Целью формулы является вычисление 1, если ячейка D2 совпадает со страной в столбце A; в противном случае отображается #N/A. Скопируйте формулу до последнего названия страны в списке.
Создайте столбчатую диаграмму с накоплением
Теперь пришло время для трюков с диаграммой:
- Выберите список названий стран и результат формулы (в нашем примере ячейки от A2 до B11).
- На ленте щелкните Вставка -> Диаграммы -> Столбец с накоплением
- На рабочем листе появится новая диаграмма.
- Щелкните правой кнопкой мыши на серии, затем щелкните Выберите данные… в меню.
- Выберите источник данных Откроется диалоговое окно.
- Нажмите кнопку «Переключить строку/столбец». . В поле «Элементы легенды» слева теперь должен содержаться список стран в виде разных серий диаграмм.
- Нажмите OK , чтобы закрыть диалоговое окно «Выбор источника данных».
- Щелкните правой кнопкой мыши на панели данных и выберите в меню Формат ряда данных… .
- Изменить ширину зазора на 0%
- Щелкните правой кнопкой мыши по вертикальной оси и выберите в меню Format Axis… .
- Установить максимум оси равным 1.
- Выберите заголовок диаграммы, нажмите клавишу удаления.
- Далее выберите вертикальную ось и удалите ее.
- Затем выберите горизонтальную ось и удалите ее.
- Переместите и измените размер диаграммы в соответствии с вашими требованиями. Рабочий лист будет выглядеть примерно так:
- Сделать выбранную страну первой в списке.
- Щелкните правой кнопкой мыши на заполнении диаграммы и выберите в меню Формат ряда данных… .
- Измените заливку на Заливка изображением или текстурой и щелкните Вставить…
- Перейдите к изображению и нажмите Вставить .
- Повторите шаги с 16 по 19 для каждой страны в списке.
Полностью рабочая диаграмма дает такой же результат, как и в первом примере.
Вставка изображений по одному таким образом может занять много времени. Итак, я создал макрос, который может автоматизировать это для вас.
Автоматическое добавление заливки диаграммы с помощью макроса
Приведенный ниже макрос автоматически вставляет изображения в заливку диаграммы. Для работы названия стран должны точно совпадать с названиями картинок.
Чтобы запустить макрос для вашего сценария:
- Замените «Диаграмма 1» на название вашей диаграммы.
- Укажите путь к папке с изображениями и измените расширение файла.
- На листе выберите ячейки, содержащие названия стран, и запустите макрос. Диаграмма должна автоматически заполниться соответствующими изображениями.
Sub InsertPicturesIntoChart() Dim i как целое число Затемнить выбранные ячейки как диапазон Dim imageFullName As String 'Выделите ячейки с названиями стран перед запуском макроса Для каждой выбранной ячейки в выборе я = я + 1 'imageFullName — это путь к файлу изображения. 'Название страны в столбце A должно совпадать с названием изображения. imageFullName = "C:\Users\marks\Documents\Flags\" & Cells(i + 1, 1).Value & ".png" 'Изменить заливку диаграммы Series. Измените Chart 1 на название диаграммы. ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(i).Format.Fill.UserPicture imageFullName Следующие выбранные ячейки Конец суб
Изменение изображения с помощью пользовательской функции VBA
Если вы работаете с файлом примера, посмотрите на вкладку UDF . Наконец, мы рассмотрим определяемую пользователем функцию VBA. Это формула, созданная с использованием макросов VBA для вставки и изменения изображений. Узнайте больше о UDF здесь.
ВНИМАНИЕ! – Пользовательские функции, которые изменяют объекты, официально не поддерживаются в Excel. Хотя это работает в версии Excel для Windows, мне не удалось заставить ее работать в версии для Mac. Доступны и другие параметры VBA, но они не такие гибкие, как метод UDF, представленный здесь.
Код VBA
Скопируйте следующий код в стандартный модуль в редакторе Visual Basic.
Общедоступная функция PictureLookupUDF (FilePath как строка, местоположение как диапазон, индекс как целое число) Dim lookupPicture As Shape Dim имя листа как строка Dim pictureName As String pictureName = "PictureLookupUDF" имя_листа = Location.Parent.Name 'Удалить текущее изображение с таким же индексом, если оно существует Для каждого lookupPicture в Sheets(sheetName).Shapes Если lookupPicture.Name = pictureName & Index Тогда lookupPicture.Delete Конец, если Следующий поискКартинка 'Добавить картинку в нужное место Установите lookupPicture = Sheets(sheetName).Shapes.AddPicture _ (FilePath, msoFalse, msoTrue, Location.Left, Location.Top, -1, -1) 'Измените размер изображения, чтобы оно наилучшим образом соответствовало диапазону Если Location.Width / Location.Height > lookupPicture.Width / lookupPicture.Height, тогда lookupPicture.Height = Location. Height Еще lookupPicture.Width = Location.Width Конец, если 'изменить название картинки lookupPicture.Name = имя_изображения и индекс PictureLookupUDF = "Поиск изображения: " & lookupPicture.Name Завершить функцию
Использование пользовательской функции на рабочем листе
Определяемую пользователем функцию теперь можно использовать на рабочем листе, как обычную функцию.
PictureLookupUDF использует следующие аргументы:
=PictureLookupUDF(FilePath, Location, Index)
- FilePath = Полный путь к файлу изображения, включая расширение файла.
- Расположение = Диапазон ячеек, в которые должно быть помещено изображение.
- Индекс = уникальный идентификационный номер для идентификации изображения.
Формула используется в приведенном ниже примере.
В ячейке D6 используется следующая формула:
=PictureLookupUDF(D2&C6&D4,D6:D12,1)
- D2&C6&D4 – объединяет путь к папке, название страны и расширение файла
- D6:D12 – диапазон ячеек, в которые нужно поместить картинку
- 1 – уникальный идентификационный номер для идентификации изображения
ВНИМАНИЕ! – Убедитесь, что путь к папке содержит косую черту перед именем файла.
Изображения можно поместить на другой рабочий лист, используя стандартную ссылку на лист:
'Лист 1'!$D$6:$D$12
Посмотрите на эту функцию в действии. Он ведет себя так же, как и предыдущие примеры.
Аргумент Index может использоваться для вставки нескольких изображений. Например, чтобы включить второе изображение, увеличьте номер индекса на 1, как показано ниже.
=PictureLookupUDF(D2&C16&D4,D17:D23, 2 )
Если вы хотите изменить код VBA для дальнейшего изменения изображений, таких как размер, поворот и т. д., вы можете найти дополнительные инструкции здесь.
Преимущества и недостатки каждого варианта
Именованный диапазон + ИНДЕКС/ПОИСКПОЗ + связанное изображение
Преимущества:
- Все изображения содержатся на рабочем листе
Недостатки:
- Может случайно переместить изображения за пределы диапазона ячеек
- Требуется тщательная подготовка для использования нескольких изображений
Заполнение диаграммы + #Н/Д
Преимущества:
- Изображения, содержащиеся в диаграмме, так сложно изменить изображения из-за ошибки
Недостатки:
- Установка занимает много времени
- Требуется вспомогательный столбец для правильной работы
- Требуется тщательная подготовка для использования нескольких изображений
Пользовательская функция VBA
Преимущества:
- Дополнительные столбцы на листе не требуются
- Простота использования с несколькими изображениями
Недостатки:
- Техника не полностью поддерживается Microsoft
- Требуется, чтобы пользователи могли использовать VBA
- Имя изображения должно совпадать со значением на листе
- Трудно поделиться книгой с другими, у которых нет доступа к папке изображений
Заключение
Существует множество способов изменить изображение на основе значения ячейки. В этом посте был представлен только один вариант VBA, но есть много других возможных решений.
Какой метод следует использовать? Это действительно зависит от ваших обстоятельств. Мой совет — изучить их все и применять то, что, по вашему мнению, лучше всего работает в каждом сценарии.
Получите БЕСПЛАТНУЮ электронную книгу VBA с 30 наиболее полезными макросами Excel VBA. Автоматизируйте Excel, чтобы сэкономить время и перестать выполнять работу, которую могла бы выполнять обученная обезьяна.
Получите бесплатную электронную книгу
Не забудьте:
Если вы нашли этот пост полезным или у вас есть лучший подход, оставьте комментарий ниже.
Вам нужна помощь в адаптации этого к вашим потребностям?
Я предполагаю, что примеры в этом посте не совсем соответствуют вашей ситуации. Мы все используем Excel по-разному, поэтому невозможно написать пост, который удовлетворит потребности всех. Потратив время на то, чтобы понять методы и принципы, изложенные в этом посте (и в других местах на этом сайте), вы сможете адаптировать его к своим потребностям.
Но если вы все еще испытываете трудности, вам следует:
- Почитайте другие блоги или посмотрите видео на YouTube по той же теме. Вы получите гораздо больше пользы, открыв для себя собственные решения.
- Спросите «Excel Ninja» в вашем офисе. Удивительно, какие вещи знают другие люди.
- Задайте вопрос на форуме, таком как Mr Excel, или в сообществе Microsoft Answers. Помните, что люди на этих форумах обычно отдают свое время бесплатно. Поэтому постарайтесь сформулировать свой вопрос, убедитесь, что он четкий и лаконичный. Перечислите все, что вы пробовали, и предоставьте скриншоты, сегменты кода и примеры книг.
- Используйте Excel Rescue, моего партнера-консультанта. Они помогают, предоставляя решения небольших проблем Excel.
Что дальше?
Пока не уходите, в Excel Off The Grid есть чему поучиться. Check out the latest posts:
Human Cell Structure — Bilder und Stockfotos
65.157Bilder
- Bilder
- Fotos
- Grafiken
- Vektoren
- Videos
Durchstöbern Sie 65.157
human cell structure Stock-Fotografie и Билдер. Oder starten Sie eine neuesuche, um noch mehr Stock-Photografie und Bilder zu entdecken. клеточный список. Menschliche blutstruktur mikrotypen anatomie wissenschaft vector sammlung zellen gesetzt — структура клеток человека — графика, -клипарт, -мультфильмы и -символCells-Auflistung. Menschliche Blutstruktur Mikrotypen von…
zellen des immunsystems. — Структура клеток человека — стоковые графики, -клипарты, -мультфильмы и -символыZellen des Immunsystems.
Zellen des Immunsystems. Medizinischer Nutzen, das Studium der Immunologie. Вектор-Дизайн-Элементе.
zellstruktur — структура клеток человека стоковые графики, -клипарты, -мультфильмы и -символыZellstruktur
анатомические структуры einer tierischen zelle — структуры клеток человека стоковые фотографии и изображения Anmerkungen chemiemuster, polygonale molekülstruktur auf weißemhintergrund. medizin, wissenschaft — структура клеток человека сток-график, -клипарт, -мультфильмы и -символChemiemuster, polygonale Molekülstruktur auf weißem Hintergrund….
Chemisches Muster, polygonale Molekülstruktur auf weißem Hintergrund. Medizin, Wissenschaft, mikrobiologisches Konzept, Vektorillustration
zellstruktur — структура клеток человека стоковые графики, -клипарты, -мультфильмы и -символыZellstruktur
сотовая структура — структура клеток человека стоковые фотографии и изображениясотовая структура
menschliche zelle — структура клеток человека фото и изображенияMenschliche Zelle
3D-визуализация menschlicher Zellen
menschliche eizelle — структура клеток человека стоковые фотографии и изображенияMenschliche Eizelle
Innovationen in der medizin abstract molekulare struktur — структура клеток человека стоковые фотографии и изображенияInnovationen in der Medizin Abstract Molekulare Struktur 900 Hintergrund, der Innovation Technologien in Medizinsystemen, neuronalen Schnittstellen und Forschung in Genetik und Biologie darstellt
krebszellen unter dem mikroskop — структура клеток человека, фото и изображенияKrebszellen Unter Dem Mikroskop
Krebszellen Unter Dem Mikroskop Hintergrund 3D-Illustration
Bunte 3D Abbildung Eines Neurons und Zelle-Gebäude Mitschen BECHREIBUNGEN-EINER-FOTOS НЕВЕРНАЯ НЕРЕЗОНА. .. абстрактные 3d изображения на другом уровне. wissenschaft-konzept — Структура клеток человека стоковые фотографии и фотографииAbstrakt 3d Zellen von Mensch oder Tier. Wissenschaft-Konzept
3D-рендеринг von Zellen, Viren oder Genetischen Molekülen
antikörperbindung an menschliche zellrezeptoren — структура клеток человека стоковые фото и изображенияVerwendung von Farbverlauf und Transparentem Effekt.
геномдат. генетик-секвенс-штрих-визуализация, днк-тест и медицинская генетическая секвенция карт векторграфик-концепт — структура клеток человека сток-график, -клипарт, -мультфильмы и -символГеномдат. Genetik-Sequenz-Barcode-Visualisierung, DNA-Test и…
Molekül Hintergrund — структура клеток человека фондовая графика, -клипарт, -мультфильмы и -symboleMolekül Hintergrund
экстрацеллюлярная матрица содержит инфографику-векторную иллюстрацию-схему. — Структура клеток человека — стоковые графики, -клипарты, -мультфильмы и -символыЭкстрацеллюлярная матрица с информационными векторными иллюстрациями-
Экстрацеллюлярная матрица с графическими векторными иллюстрациями. Биологическая диаграмма с коллагеном, фибронектином, фосфолипидным двойником и цитоскелетфиламентом.
набор иконок, биология — структура клеток человека, стоковые графики, клипарты, карикатуры и символы дем микроскоп. — Структура клеток человека стоковые фотографии и фотографииMenschliches Knochenmark под микроскопом.
3D изображение вирен и бактерий в верхней части человеческого тела — структура клеток человека стоковые фотографии и изображения3D изображение вирен и бактерий в верхней части тела
LDL-partikelbindung an den LDL-rezeptor — структура клетки человека стоковые фото и изображения Он связывает апопротеин B100 с LDL-Partikeln и vermittelt deren Internalisierung (Endozytose) в Целле. Dies geschieht in fast allen Zellen, vor allem aber in der Leber, wo es etwa 70% des LDL aus dem Kreislauf entfernt. zelle — структура клеток человека стоковые фотографии и изображенияZelle
Hintergrund der Genetik. 3D-рендеринг.
Menschliche zelle — Структура клеток человека: фото и изображения клипарт, -мультфильмы и -символДНК-секвенирование Обработка данных Генетическая…
ДНК-секвенирование Gel Run Wissenschaft und Daten genomische Genetische Analyze Hintergrund abstraktes Muster.
stammzellen für веб-сайт, средства массовой информации и публикации. medizinisch-wissenschaftlicher hintergrund. — Структура клеток человека — стоковые графики, -клипарты, -мультфильмы и -символыStammzellen für Website, Medien und Publikationen. Medizinisch-wis
молекулы инсулина. инсулин является белковым гормоном, das den stoffwechsel von kohlenhydren reguliert — структура клеток человека, фото и изображенияInsulinmoleküle. Insulin ist ein Proteinhormon, das den…
Insulin ist ein Proteinhormon, das den Stoffwechsel von Kohlenhydren und Fetten durch die Aufnahme von Glukose aus dem Blut in den Skelettmuskeln und im Fettgewebe reguliert. Quelle; ПДБ-Эйнтраг 3И40.
weiße geometrische sechseckige abstraktehintergrund. 3D-рендеринг — структура клеток человека стоковые фотографии и изображенияГеометрическая абстрактная структура. 3D-рендеринг
точек, отражений с центральным изображением — структура клеток человека, фото и изображения — Структура клеток человека: стоковые фотографии и изображенияQuerschnitt Pflanzenstängel unter dem Mikroskop für…
krebszellen im menschlichen körper — структура клеток человека стоковые фотографии и фотографииKrebszellen im menschlichen Körper
голубая хромосома-ДНК и все блестящие блестящие вещества, химические вещества, камера которых не имеет значения. medizinisches und vererbunggenesisches gesundheitskonzept. Технологивиссеншафт. 3d-иллюстрации-рендеринг — Структура клеток человека стоковые фотографии и изображенияСиние хромосомы-ДНК и всесторонние блески Flimmerlicht Materie…
с функциональностью инсулина — Структура клеток человека стоковые графики, -клипарты, -мультфильмы и -символыWie funktioniert инсулин Arbeit
molekülstruktur — структура клеток человека фото и фотографииMolekülstruktur
Wissenschaftlicher Hintergrund. 3D-рендеринг.
мембраны и молекулы, 3D-рендеринг. — Структура клеток человека: фото и изображенияМембраны и молекулы, 3D-рендеринг.
hautzellen gewebe — структура клеток человека стоковые изображения, -клипарт, -мультфильмы и -символы0002 Mehrfarbige Antikörper oder Immunglobulinproteinstrukturen — 3D-Il Икосаэдр — Структура клеток человека стоковые графики, -клипарты, -мультфильмы и -символыИкосаэдр
Скалиербарер Вектор Эйнес Икосаэдерс. Ein vielseitiges Designelement, das ein verbundenes Netzwerk, globale Verbindungen oder als kühnes geometrisches Merkmal in Ihrem wissenschaftlichen oder mathematischen Designprojekt visuell darstellen kann.
auffrischungsimpfung — auffrischungsimpfung — структура клеток человека стоковые фотографии и изображенияAuffrischimpfung — Auffrischungsimpfung
инсулинрезептор-димер, активный в течение 3 молекул инсулина — структура клеток человека фото и изображения шампунь ph, schuppen, haarwachstum, кератин, кондиционер flasche vektor illustrationen. umrisszeichen für салон красоты. Идеальный пиксель 64×64. Bearbeitbare striche — Структура клеток человека сток-график, -клипарт, -мультфильмы и -символHaarausfall Behandlung flache Linie Symbole gesetzt. Шампунь ph,…
Haarausfallbehandlung flache Linie Symbole setzen. Шампунь ph, Schuppen, Haarwuchs, Кератин, Кондиционер Flasche Vektor Illustrationen. Umrissschilder für Schönheitssalon. Идеальный пиксель 64×64. Медвежья полоска.
affenpockenzellen — структура клеток человека стоковые фотографии и фотографииaffenpockenzellen
векторная диаграмма митохондрий. querschnittsansicht. Медицинская инфографика. — Структура клеток человека — графика, -клипарт, -мультфильмы и -символВекторная диаграмма митохондрий. Querschnittsansicht….
иллюстрация аффенпокенвируса — структура клеток человека стоковые фото и изображения — Структура клеток человека: стоковые фотографии и фотографииИллюстрация структуры Affenpockenvirus
, структура человеческого тела — Структура клеток человека: стоковые фотографии и фотографииStruktur der menschlichen Zelle
Abbildung der inneren Struktur der menschlichen Zelle mit der zytoplasmatischen Membran, dem Zellkern und den Organellen, die auf Weiß isoliert sind
signalübertragung нейрон или нервная клетка- 3d-иллюстрация — Структура клетки человека stock-fotos Neuron oder Nervenzelle- 3D-Illustration 3d abbildung einer draufsicht auf blue zelle muster mit roten zellkern — структура клеток человека стоковые фотографии и изображения3D Abbildung einer Draufsicht auf blauen Zelle Muster mit roten. ..
группа синего бунта zellen unter mikroskop — структура клеток человека фото и фотографии -fotos und bilderIllustration des Affenpockenvirus
ich habe meinen covid-19-impfstoff bekommen — структура клеток человека stock-grafiken, -clipart, -cartoons und -symboleIch habe meinen covid-19-impfstoff bekommen
Violetter Fleck mit Häkchen — Corona-Impfpass
impfumris iconset — структура клеток человека стоковые графики, -клипарты, -мультфильмы и -символы . Haar halten Haut — Human Cell Structure Stock Photos und BilderHaar halten Haut
«Mikroskopisches Foto eines Professional vorbereiteten Objektträgers, der die zellläre Struktur des Objekts demonstriert. , und was als Staub erscheint, ist tatsächlich in der Probe. Sehen Sie alle meine»
bambus-stöcke — структура клеток человека стоковые фото и изображенияBambus-Stöcke
3d illustration белок с лимфоцитами, т. целлен или кребцеллен — структура клеток человека сток-фото и изображения3d illustration белок с лимфоцитами, т. н.
Nervenzelle von Antikörpern angegriffen — структура клеток человека, фото и изображения0003Иммунглобулин. Glykoproteinmoleküle, die von Plasmazellen (weißen Blutkörperchen) produziert werden
neuronzelle von antikörpern angegriffen — структура клеток человека стоковые фотографии и изображенияNervenzelle von Antikörpern angeggriffen
von 100Что на картинке? Соблазн манипулирования изображениями | Журнал клеточной биологии
Skip Nav DestinationОсобенность| 06 июля 2004 г.
Майк Росснер,
Кеннет М. Ямада
Информация об авторе и статье
Адресная переписка с Майком Росснером, Journal of Cell Biology, Rockefeller University Press, 1114 1st Ave. , 3rd fl., New York, NY 10021. Тел.: (212) 327-8881. Факс: (212) 327-8576. электронная почта: [email protected]
Перепечатано с разрешения The NIH Catalyst.
1
Представленные здесь общие принципы применимы к обработке изображений с использованием любого мощного программного обеспечения для обработки изображений; однако из-за популярности Photoshop мы ссылаемся на несколько конкретных функций в этом приложении.
Номер в сети: 1540-8140
Номер для печати: 0021-9525
J Cell Biol (2004) 166 (1): 11–15.
https://doi.org/10.1083/jcb.200406019
- Стандартный вид
- Просмотры
- Содержание артикула
- Рисунки и таблицы
- Видео
- Аудио
- Дополнительные данные
- Экспертная оценка
- Делиться
- MailTo
- Твиттер
- Инструменты
Получить разрешения
Иконка Цитировать Цитировать
- Поиск по сайту
Citation
Майк Росснер, Кеннет М. Ямада; Что на картинке? Соблазн манипулирования изображениями. J Cell Biol 5 июля 2004 г.; 166 (1): 11–15. doi: https://doi.org/10.1083/jcb.200406019
Скачать файл цитаты:
- Рис (Зотеро)
- Менеджер ссылок
- EasyBib
- Подставки для книг
- Менделей
- Бумаги
- Конечная примечание
- РефВоркс
- Бибтекс
Расширенный поиск
С Photoshop все так просто 1 . За несколько дней до того, как программное обеспечение для обработки изображений стало настолько широко доступным, корректировка данных изображения в фотолаборатории требовала значительных усилий и/или опыта. Теперь очень просто и, следовательно, заманчиво настроить или изменить файлы цифровых изображений. Однако многие такие манипуляции представляют собой неуместные изменения ваших исходных данных, и внесение таких изменений может быть классифицировано как научное нарушение. Квалифицированный редакторский персонал может обнаружить такие манипуляции с помощью функций программного обеспечения для обработки изображений, поэтому манипулирование также является рискованным делом.
Хорошая наука требует надежных данных. Следовательно, чтобы защитить честность исследований, научное сообщество принимает решительные меры против предполагаемых научных недобросовестных действий. В текущем определении, предоставленном правительством США: «Неправомерное проведение исследований определяется как фабрикация, фальсификация или плагиат при предложении, проведении или обзоре исследований или при сообщении результатов исследований». Например, показ рисунка, на котором часть изображения была либо выборочно изменена, либо реконструирована, чтобы показать что-то, чего изначально не существовало (например, добавление или изменение полосы на изображении в полиакриламидном геле), может представлять собой фальсификацию или подделку.
Обвинение в неправомерном поведении инициирует болезненный процесс, который может подорвать исследования и карьеру. Чтобы избежать такой ситуации, важно понимать, где проходят этические границы между приемлемой и неприемлемой настройкой изображения.
Здесь мы представляем некоторые общие рекомендации по правильному обращению с данными цифровых изображений и приводим некоторые конкретные примеры, иллюстрирующие ловушки и неправильные действия. Существуют разные степени серьезности манипуляции в зависимости от того, намеренно ли изменение меняет интерпретацию данных. То есть создать результат хуже, чем сделать так, чтобы слабые данные выглядели лучше. Тем не менее, любые манипуляции, нарушающие эти правила, являются искажением исходных данных и формой неправомерного поведения. Все примеры, которые мы покажем здесь, были созданы нами с помощью Photoshop; хотя они могут показаться странными, примечательно, что они на самом деле основаны на реальных случаях цифровых манипуляций, обнаруженных путем тщательного изучения цифровых изображений в выборке статей, представленных (или даже принятых) для публикации в журнале.
Если вы искажаете свои данные, вы обманываете своих коллег, которые ожидают и предполагают элементарную научную честность, то есть то, что каждое изображение, которое вы представляете, является точным представлением того, что вы действительно наблюдали. Кроме того, изображение обычно несет информацию за пределами конкретной точки зрения. Качество изображения влияет на тщательность, с которой оно было получено, и частым предположением (хотя и не обязательно верным) является то, что для получения изображения презентационного качества вам нужно тщательно повторить эксперимент несколько раз.
Манипуляции с изображениями для упрощения и убедительности цифр также могут лишить вас и ваших коллег возможности видеть другую информацию, которая часто скрыта на картинке или других первичных данных. Хорошо известные примеры включают свидетельство низкого количества других молекул, вариаций в характере локализации и взаимодействий или кооперативности.
Удивительно, что многие журналы почти ничего не говорят в своих «Инструкциях для авторов» о том, какие виды цифровых манипуляций допустимы, а какие нет. Следующие журналы содержат некоторые рекомендации, но они сильно различаются по полноте.
Молекулярная и клеточная биология .«Поскольку содержимое компьютерных изображений можно манипулировать для большей ясности, Совет по публикациям на своем заседании в мае 1992 г. постановил, что описание используемого программного/аппаратного обеспечения должно быть помещено в подписи к рисункам».
Журнал клеточных наук .«Улучшение изображения с помощью компьютерного программного обеспечения является приемлемой практикой, но существует опасность того, что это может привести к представлению совершенно нерепрезентативных данных, а также к потере реальных и значимых сигналов. Во время манипуляций с изображениями должна поддерживаться положительная связь между исходными данными и результирующим электронным изображением. Если фигура подверглась значительным электронным манипуляциям, конкретный характер улучшений должен быть отмечен в легенде или в материалах и методах».
Журнал клеточной биологии .«Никакая определенная функция изображения не может быть улучшена, скрыта, перемещена, удалена или введена. Группировка изображений из разных частей одного и того же геля или из разных гелей, полей или экспозиций должна быть явно выражена в расположении рисунка (например, с помощью разделительных линий) и в тексте подписи к рисунку. Корректировки яркости, контрастности или цветового баланса допустимы, если они применяются ко всему изображению и не затеняют и не удаляют какую-либо информацию, присутствующую в оригинале. Нелинейные корректировки (например, изменения настроек гаммы) должны быть указаны в подписи к рисунку».
Поскольку последний набор рекомендаций, безусловно, является наиболее полным, который мы нашли на сегодняшний день (полное раскрытие: мы написали их), мы будем постоянно обращаться к ним в следующих обсуждениях использования и неправильного использования цифровых манипуляций.
Грубое искажение фактов
Простейшие примеры неуместных манипуляций показаны на рис. 1. Удаление полосы из блота, даже если вы считаете, что это нерелевантная фоновая полоса, является искажением ваших данных (рис. 1 A) . Точно так же добавление полосы к блоту, даже если вы только скрываете тот факт, что вы загрузили не тот образец, и вы точно знаете, что такой белок, фрагмент ДНК или РНК присутствует в вашем образце, является искажением ваших данных. . В примере, показанном на рис. 1В, дополнительная полоса на дорожке 3 была создана путем простого дублирования полосы на дорожке 2.
Другой пример ненадлежащего использования Photoshop для создания данных показан на рис. 2, на котором была воспроизведена целая панель (стрелки) и представлена в качестве элементов управления загрузкой для двух отдельных экспериментов.
Регулировка яркости/контрастности.
Регулировка интенсивности одной полосы в кляксе является нарушением общепринятого правила, согласно которому «Никакая определенная функция в изображении не может быть улучшена, затемнена, перемещена, удалена или введена». На обработанном изображении на рис. 3А стрелка указывает на единственную полосу, интенсивность которой была уменьшена, чтобы создать впечатление более регулярного фракционирования. Хотя эта манипуляция может не изменить общую интерпретацию данных, она все равно представляет собой неправомерное поведение.
Хотя корректировка общей яркости и контрастности всего изображения является приемлемой практикой, такие корректировки не должны «затенять или устранять какую-либо информацию, присутствующую в оригинале» (рис. 3 B). Когда вы сканируете пятно, независимо от того, насколько сильны полосы, всегда будет какой-то серый фон. Несмотря на то, что технически регулировка яркости и контрастности всего изображения соответствует рекомендациям, если вы перенастроите контрастность так, что фон полностью исчезнет (рис. 3 B, часть 2 по сравнению с частью 3), это должно вызвать подозрения у обозревателей. и редакторы, что другая информация (особенно слабые полосы) также могла быть выброшена.
Можно возразить, что это правило более строгое, чем во времена, предшествовавшие Photoshop, когда для улучшения представления данных можно было использовать несколько экспозиций. Возможно, так оно и есть, но это лишь одно из преимуществ цифрового века для рецензента и редактора, которые теперь могут заметить эти манипуляции, тогда как в прошлом автор потратил бы время на еще одну экспозицию. Подумайте об этом, когда проводите эксперимент и выполняете многократную экспозицию, чтобы получить полосы нужной плотности, без необходимости чрезмерной цифровой регулировки яркости и контрастности отсканированного изображения.
Очистка фона.
Очень заманчиво использовать инструмент, известный как «Резиновый штамп» или «Штамп» в Photoshop, для очистки нежелательного фона на изображении (рис. 4). Не делай этого. Такого рода манипуляции обычно можно обнаружить, если кто-то внимательно посмотрит на файл изображения, потому что он оставляет характерные признаки. Более того, то, что может показаться фоновой полосой или загрязнением, на самом деле может быть реальным и биологически важным и может быть признано таковым другим ученым.
Соединение дорожек вместе.
Совершенно недопустимо брать ленту из одной части геля и перемещать ее в другую часть, даже если вы не меняете ее размер. Но в рамках обычных рекомендаций можно удалить полную дорожку из геля и соединить оставшиеся дорожки вместе. Однако это изменение следует четко указать, оставив тонкую белую или черную линию между наложенными друг на друга кусочками геля. Опять же, можно утверждать, что это правило является более строгим, чем во времена до Photoshop, когда бумажные фотографии геля разрезались и кусочки склеивались рядом друг с другом. Эта практика, однако, обычно оставляла черную линию, указывающую читателю, что было сделано.
Как и в случае с гелевыми фотографиями, недопустимо сопоставлять кусочки разных гелей для сравнения уровней белков или нуклеиновых кислот. Повторите анализ всех образцов на одном и том же геле!
Улучшение определенной функции.
Пример манипуляции с улучшением показан на рис. 5, на котором интенсивность золотых частиц была увеличена путем ручной заливки их черным цветом с помощью Photoshop. Этот тип манипуляции искажает ваши исходные данные и, таким образом, является неправомерным поведением. Существуют приемлемые способы выделения такого элемента, как частицы золота, с помощью стрелок или псевдоокраски. Если псевдоокрашивание выполняется с помощью функции Photoshop «Раскрасить», она не изменяет яркость отдельных пикселей, но псевдоокрашивание всегда должно быть раскрыто в легенде рисунка.
Другие примеры неправомерных действий включают регулировку яркости только определенной части изображения или стирание пятен. Использование корректировки «Яркость» в Photoshop считается линейным изменением (см. ниже), которое необходимо применить ко всему изображению.
Линейные и нелинейные корректировки.
Линейные корректировки, такие как «Яркость» или «Контрастность» в Photoshop, — это те, при которых одинаковые изменения вносятся в каждый пиксель в соответствии с линейной функцией. Допустимо (в пределах, указанных выше) применять линейные корректировки ко всему изображению. В Photoshop есть и другие настройки, которые можно применить ко всему изображению, но такое же изменение не применяется к каждому пикселю. Например, настройки выходной гаммы («Настройки цвета» в Photoshop) изменяют интенсивность каждого пикселя в соответствии с нелинейной функцией. Настройки «Кривых» или «Уровней» в Photoshop изменяют тональный диапазон и цветовой баланс изображения, регулируя яркость только тех пикселей с определенной интенсивностью и цветом. Такие нелинейные изменения иногда требуются для выявления важных особенностей изображения; однако тот факт, что они использовались, должен быть указан в легенде к рисунку.
Цифровое изменение уровней яркости или контрастности может ввести в заблуждение при использовании флуоресцентных микрофотографий. Некоторые авторы ошибочно изменяют контрастность экспериментальной фотографии по сравнению с контрольной, или изменяют отдельные панели во времени, или используют разные уровни контрастности при создании объединенных изображений по сравнению с исходными изображениями. Все эти изменения отдельных изображений, используемых для сравнения, могут быть искажены. С другой стороны, для точного извлечения информации из сложных изображений могут потребоваться определенные корректировки, такие как вычитание фона или использование фильтра или цифровой маски. Сообщение о деталях и логике таких манипуляций, которые применяются к изображениям в целом, должно снять опасения по поводу их использования. Стандарты и руководящие принципы в этой области будут продолжать развиваться, но полное раскрытие информации всегда будет самым безопасным курсом.
Искажение поля микроскопа.
Читатель предполагает, что одна микрофотография, представленная на рисунке, представляет одно поле микроскопа. Объединение изображений из разных полей микроскопа в одну микрофотографию представляет собой искажение ваших исходных данных. На обработанном изображении на рис. 6 (верхняя панель) клетки из нескольких полей микроскопа объединены в одну микрофотографию. Эта манипуляция становится видимой, когда контраст изображения регулируется так, чтобы вставленные изображения становились видимыми (нижняя панель). Вы можете объединить изображения из нескольких полей в одну микрофотографию, чтобы сэкономить место, но эта сборка должна быть четко обозначена тонкими линиями между различными частями.
Пиксель — это квадрат (или точка) однородного цвета на изображении. Размер пикселя может варьироваться, а разрешение изображения — это количество пикселей на единицу площади. Хотя разрешение определяется площадью, оно часто описывается линейным измерением — количество точек на дюйм (dpi). Таким образом, 300 dpi указывает на разрешение 300 пикселей на дюйм на 300 пикселей на дюйм, что равно 90 000 пикселей на квадратный дюйм (1).
Цифровые камеры высокого разрешения (2004 г.) могут получать изображение размером 6 мегапикселей. Это может создать изображение размером примерно 2400 × 2400 пикселей или 8 дюймов × 8 дюймов с разрешением 300 точек на дюйм. Обратите внимание, что при правильных настройках в Photoshop физический размер и разрешение можно компенсировать друг другом без увеличения или потери объема информации, то есть вы можете изменять размер изображения без изменения общего количества пикселей.
Вы должны знать разрешение, с которым изображение было получено цифровой камерой вашего микроскопа. Когда этот файл открывается в Photoshop, у вас есть возможность установить размер и разрешение изображения. Вы не должны устанавливать общее количество пикселей больше, чем в исходном изображении; в противном случае компьютер должен создать для вас данные, которых не было в оригинале, а полученное изображение является искажением исходных данных, то есть разрешение изображения в dpi может быть увеличено только в том случае, если размер изображения уменьшен пропорционально .
Допустимо уменьшение количества пикселей в изображении, что может быть необходимо, если у вас есть большое изображение с высоким разрешением и вы хотите создать из него маленькую фигурку. Уменьшение разрешения изображения выполняется в Photoshop путем выборки пикселей в области и создания нового пикселя, который представляет собой среднее значение цвета и яркости выбранных пикселей. Хотя это изменяет ваши исходные данные, вы не создаете что-то, чего изначально не было; Вы представляете среднее значение.
Крайне важно сохранить исходные цифровые или аналоговые данные в том виде, в каком они были получены, и записать настройки прибора. Это основное правило хорошей научной практики позволит вам или другим людям вернуться к своим исходным данным, чтобы увидеть, не была ли потеряна какая-либо информация в результате корректировок, внесенных в изображения. Фактически, некоторые рецензенты или редакторы журналов запрашивают доступ к таким первичным данным для обеспечения точности.
Есть и другие важные проблемы, связанные с обработкой данных, которые мы не рассмотрели, сосредоточившись на манипулировании существующими данными. Примеры включают в себя выборочное получение данных путем настройки параметров вашего микроскопа или имидж-сканера, выбор и сообщение очень необычного результата как репрезентативного для данных или сокрытие отрицательных результатов, которые могут противоречить вашим выводам. Любое искажение экспериментальных данных подрывает научные исследования, и его следует избегать.
Данные должны сообщаться напрямую, а не через фильтр, основанный на том, что, по вашему мнению, они «должны» проиллюстрировать вашей аудитории. При каждой корректировке цифрового изображения важно задать себе вопрос: «Является ли изображение, полученное в результате этой корректировки, точным представлением исходных данных?» Если ответ на этот вопрос «нет», ваши действия могут быть истолкованы как проступок.
Некоторые корректировки в настоящее время считаются приемлемыми (например, псевдоокрашивание или изменение настроек гаммы), но о них следует сообщить вашей аудитории. Однако вы всегда должны быть в состоянии обосновать эти корректировки, если они необходимы для выявления функции, уже присутствующей в исходных данных.
Мы надеемся, что, составив список рекомендаций и опубликовав примеры нарушений, мы все сможем стать более бдительными, особенно в том, чтобы уберечь младших коллег и студентов от заманчивых опасностей цифровых манипуляций. Тот факт, что существуют инструменты для очистки небрежной работы в цифровом виде, не является оправданием для небрежной работы.
Если бы вы переделали эксперимент по созданию изображения презентационного качества в дни, предшествовавшие цифровой эпохе, вам, вероятно, следует повторить его сейчас.
Перепечатано с разрешения The NIH Catalyst.
1
Представленные здесь общие принципы применимы к обработке изображений с использованием любого мощного программного обеспечения для обработки изображений; однако из-за популярности Photoshop мы ссылаемся на несколько конкретных функций в этом приложении.
1. Росснер М. и Р. О’Доннелл.
2004
. JCB позволит вашим данным сиять в RGB.
Дж. Сотовый. биол.
164
:
11
.
2. 2004. Нарезка и нарезка геля кубиками: путь к катастрофе. Нац. Клеточная биол. 6:275.
данные и цифрыДанные и цифры
содержаниеСодержимое
добавкиДополнения
ссылокСсылки
Рисунок 1.
Грубые манипуляции с пятнами. (A) Пример полосы, удаленной из исходных данных (дорожка 3). (B) Пример полосы, добавленной к исходным данным (дорожка 3).
Рисунок 1.
Грубые манипуляции с пятнами. (A) Пример полосы, удаленной из исходных данных (дорожка 3). (B) Пример полосы, добавленной к исходным данным (дорожка 3).
Закрыть модальное окно
Рисунок 2.
Грубые манипуляции с пятнами. Пример дублированной панели (стрелки).
Рисунок 2.
Грубые манипуляции с пятнами. Пример дублированной панели (стрелки).
Закрыть модальное окно
Рисунок 3.
Манипуляции с пятнами: регулировка яркости и контрастности. (A) Регулировка интенсивности одной полосы (стрелка). Б) Регулировка контрастности. На изображениях 1, 2 и 3 показаны последовательно более жесткие настройки контрастности. Хотя регулировка от 1 до 2 приемлема, поскольку она не затеняет ни одну из полос, регулировка от 2 до 3 неприемлема, поскольку исключается несколько полос. Вырезание полосы пятна с отрегулированным контрастом создает ложное впечатление очень чистого результата (изображение 4 было получено из сильно отрегулированной версии левой полосы изображения 1). Для более подробного обсуждения «нарезки и нарезки геля» см. 9.0048 Nature Cell Biology редакционная статья (2).
Рисунок 3.
Манипуляции с пятнами: регулировка яркости и контрастности. (A) Регулировка интенсивности одной полосы (стрелка). Б) Регулировка контрастности. На изображениях 1, 2 и 3 показаны последовательно более жесткие настройки контрастности. Хотя регулировка от 1 до 2 приемлема, поскольку она не затеняет ни одну из полос, регулировка от 2 до 3 неприемлема, поскольку исключается несколько полос. Вырезание полосы пятна с отрегулированным контрастом создает ложное впечатление очень чистого результата (изображение 4 было получено из сильно отрегулированной версии левой полосы изображения 1). Для более подробного обсуждения «нарезки и нарезки геля» см. 9.0048 Nature Cell Biology редакционная статья (2).
Закрыть модальное окно
Рисунок 4.
Манипуляции с кляксами: очистка фона. Инструмент Photoshop «Резиновый штамп» использовался в обработанном изображении для очистки фона в исходных данных. Тщательный осмотр изображения показывает повторяющийся узор в левой полосе обработанного изображения, что указывает на то, что такой инструмент использовался.
Рисунок 4.
Манипуляции с кляксами: очистка фона. Инструмент Photoshop «Резиновый штамп» использовался в обработанном изображении для очистки фона в исходных данных. Тщательный осмотр изображения показывает повторяющийся узор в левой полосе обработанного изображения, что указывает на то, что такой инструмент использовался.
Закрыть модальное окно
Рисунок 5.
Неверное представление данных иммунозолота. Золотые частицы, которые действительно присутствовали в оригинале (слева), были усилены на обработанном изображении (справа). Также обратите внимание, что фоновая точка в исходных данных была удалена в обработанном изображении.
Рисунок 5.
Неверное представление данных иммунозолота. Золотые частицы, которые действительно присутствовали в оригинале (слева), были усилены на обработанном изображении (справа).