Это действительно намного менее просто, чем это кажется:-), предложение Nick's является хорошим.
Для начала работы имейте в виду, что любой стоящий метод сравнения будет по существу работать путем преобразования изображений в другую форму - форма, которая облегчает выбирать подобные функции. Обычно, этот материал не делает для очень легкого чтения...
Один из самых простых примеров, о которых я могу думать, просто использует цветовое пространство каждого изображения. Если два изображения имеют дистрибутивы очень схожего цвета, то можно быть довольно уверены, что они показывают то же самое. По крайней мере, у Вас может быть достаточно уверенности отметить его или сделать больше тестирования. Сравнение изображений в цветовом пространстве будет также сопротивляться вещам, таким как вращение, масштабирование и некоторая обрезка. Это не будет, конечно, сопротивляться тяжелой модификации изображения или тяжелой переокраске (и даже простой сдвиг оттенка будет несколько хитер).
http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subsection=tutorials/colorspace
Другой пример включает что-то позвонившее, которое Преобразовывает Hough. Это преобразование по существу разлагает изображение на ряд строк. Можно тогда проводить некоторые 'самые сильные' строки в каждом изображении и видеть, выстраиваются ли они в линию. Можно сделать, некоторая дополнительная работа, чтобы попытаться компенсировать вращение и масштабирующийся также - и в этом случае, начиная со сравнения нескольких строк является НАМНОГО меньшим количеством вычислительной работы, чем выполнение того же ко всем изображениям - это не будет настолько плохо.
http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/Hough_transform
Решение, если элементы вашего списка могут быть display: inline
, довольно просто:
#footer { text-align: center; }
#footer ul { list-style: none; }
#footer ul li { display: inline; }
Однако часто вы должны использовать display: block
на вашем
s. В этом случае будет работать следующий CSS:
#footer { width: 100%; overflow: hidden; }
#footer ul { list-style: none; position: relative; float: left; display: block; left: 50%; }
#footer ul li { position: relative; float: left; display: block; right: 50%; }
Это зависит от того, имеете ли вы в виду, что элементы списка находятся ниже предыдущего или справа от предыдущего, например:
Home
About
Contact
или
Home | About | Contact
Первый, который вы можете сделать просто с помощью:
#wrapper { width:600px; background: yellow; margin: 0 auto; }
#footer ul { text-align: center; list-style-type: none; }
Вторую можно сделать так:
#wrapper { width:600px; background: yellow; margin: 0 auto; }
#footer ul { text-align: center; list-style-type: none; }
#footer li { display: inline; }
#footer a { padding: 2px 12px; background: orange; text-decoration: none; }
#footer a:hover { background: green; color: yellow; }
Попробуйте обернуть список в div и дать этому div свойство inline вместо вашего списка.