portaldacalheta.pt
  • Главни
  • Остало
  • Финансијски Процеси
  • Агиле Талент
  • Алати И Упутства
Бацк-Енд

Изградња претраживача слика у боји у боји у Руби-у



Каже се да слика вреди хиљаду речи. И на много начина речи на сликама су боје. Боје су саставни део нашег живота и не можемо порећи њихову важност.

Док смо гледали слику, често смо покушавали да препознамо боју на њеном делу. Сви смо то покушали, али никада нисмо детаљно. Када нас питају да идентификујемо боје са слике, обично их означавамо помоћу одређених назива боја, као што су црвена, плава и зелена. Међутим, ако се од нас затражи да на слици издвојимо 30 најистакнутијих боја, наше око их не може тако лако открити или идентификовати. Цамалиан је све ово. Помаже вам да из слика извучете боје, а затим се поиграте њима.



Камалијски: Ултиамте бирач боја за руби



У овом чланку ћемо завирити у то који су то простори боја, шта Руби гем Цамалиан нуди и како се од њега може направити једноставан претраживач слика који помоћу боја препознаје и разликује их.



Цолоурс Спаце

Пре него што започнемо, прво да разумемо неке основне концепте о бојама. Слике представљене на нашим екранима представљене су помоћу дводимензионалног низа пиксела. Иако се сликовне датотеке могу кодирати на различите начине, сирови приказ након декомпресије и декодирања података је исти. У овом представљању заснованом на 2д низу, сваки пиксел на слици у боји има три компоненте: црвену, зелену и плаву. Иако су слике одштампане на папиру такође дводимензионална површина тачака, саме тачке су обично мешавина четири компонентне боје: цијан, магента, жута и црна. Ове се, међу неким другим различитим техникама које се користе за представљање боја, називају просторима боја. Неки од најпопуларнијих простора боја су РГБ, ЦМИК, ХСЛ и ХСВ. ЦМИК се углавном користи у штампарској индустрији, док се сви остали користе у дигиталним медијима.

РГБ простор у боји

Било који физички електронски медиј попут ЦРТ екрана, ЛЦД-а или телефона који преносе светлост производе боју помоћу три компоненте: црвене, зелене, плаве. Људско око може открити милионе боја стимулисањем три врсте рецептора за боје у оку. Те рецепторе можете повезати са Р, Г и Б.



У идеалном случају, свака компонента боје чува се у бајту чије се вредности могу кретати између 0 и 255.

ХСЛ и ХСВ простор у боји

Уређивање простора РГБ боја на коцки прилично је изазовно. Резултати покушаја да се то прикаже на коцки или у точкићу у боји су лоши. Док радите са милионима или бојама, свака нијанса боје не може се правилно поравнати на РГБ простору боја.



подешавање перформанси у скл серверу 2008 корак по корак

претраживач рубин слика

Да би превазишли овај проблем, истраживачи су 1970-их увели просторе боја ХСВ (нијанса, засићеност, вредност) и ХСЛ (нијанса, засићеност, светлост). Оба ова простора боја могу се правилно поравнати на колу за боје и олакшати препознавање различитих нијанси боја на њему.



Руби Гем за боје

Цамалиан је све око боја. Једна од најједноставнијих ствари које можете учинити са Цамалиан-ом је идентификација сваке нијансе боје која се користи на слици.

Рецимо да имамо слику са 15 различитих боја.



Идентификовање боја из узорка је сигурно лакше него њихово препознавање на самој слици. Штавише, ово је једноставна слика, а стварне фотографије су често много разноврсније када је у питању њихова палета боја. Издвајање вредности боја са слике захтева неке прилично незгодне комадиће кода и ту Цамалиан улази. Ради те незгодне ствари за вас тако да са лакоћом можете да извучете информације у вези са бојом.



Почетак

Ако је извлачење боја помоћу Цамалиан-а једноставно, његово инсталирање је још лакше. Можете инсталирати Руби драгуљ извршавањем:

gem install camalian

А да бисте користили овај драгуљ, можете га захтевати директно у своју Руби скрипту:

require 'camalian'

Издвајање боја

Да бисмо извукли боје са слике, прво је морамо учитати у меморију и користити методе на објекту слике:

шта можете да урадите са ноде.јс
image = Camalian::load( File.join( File.dirname(__FILE__), 'colormap.png') ) colors = image.prominent_colors(15) puts colors.map(&:to_hex)

Овај исечак кода учитава слику под називом „цолормап.пнг“ из директоријума у ​​коме се налази скрипта и из ње издваја 15 најистакнутијих боја.

Да бисте га покренули, сачувајте датотеку као „цолор_тест1.рб“ и покрените је у љусци до ruby color_test1.rb. Требало би да произведе излаз сличан следећем:

['#318578', '#41b53f', '#2560a3', '#359169', '#2154b1', '#4dda15', '#1d48bf', '#1530dc', '#296d94', '#193dcd', '#3da94d', '#45c131', '#3da84e', '#2d7986', '#193cce']

И то је тако лако! Управо смо издвојили 15 боја коришћених на горњој слици. Можете ли да замислите да то покушате да користите помоћу петљивог кода или још горе, својим очима? Подесимо ствари за тренутак. Овог пута ћемо покушати да користимо Цамалиан на слици са више детаља:

Покретањем исте скрипте на овој слици добијамо следеће:

[“#210b03”, “#723209”, “#974d09”, “#ae5d08”, “#c77414”, “#d77f15”, “#ffea54”, “#94651f”, “#b66a15”, “#c25f06”, “#fdd94d”, “#d39a39”, “#efa540”, “#fffffe”, “#fff655”]

Покушај визуелизације низа вредности боја произведених горе даје нам отприлике следеће:

Палета је добра, али у издвојеним бојама нема специфичног узорка. Хајде да сортирамо вредности боја по сличности и видимо да ли то помаже. Све што треба да урадимо је да позовемо још једну функцију пре него што уствари одштампамо низ на конзолу:

colors = image.prominent_colors(15).sort_similar_colors

Ноде јс у односу на перформансе питхон-а

Али шта ако бисмо желели да издвојимо боје које су релативно светлије? Можда желимо да боје које су само 40% тамне или, другим речима, имају вредност светлости (у ХСЛ простору боја) између 0 и 40. Све што треба да урадимо је:

colors = image.prominent_colors(15).light_colors(0, 40)

Израда претраживача слика

Сада када знамо како је лако бавити се бојама помоћу Цамалиан-а, направимо једноставну веб апликацију која вам омогућава да отпремате слике и индексујете их по бојама. Ради краткоће прескочићемо разне појединости о којима је реч градећи Руби апликација. Уместо тога, фокусираћемо се на детаље који се баве бојама и употребом Камалија.

Што се тиче домета ове Руби апликације, ми ћемо је ограничити на руковање отпремањем слика, издвајањем боја са слике пре него што их сачувамо и тражењем отпремљене слике на основу одабране боје и прага.

Испод је дијаграм модела који објашњава структуру наше апликације:

нагласак на принципима дизајна

Свака отпремљена слика представљена је помоћу објекта ПортфолиоИтем. Сваки објекат у боји представља јединствене боје откривене помоћу отпремљених слика, и на крају ПортфолиоЦолор представља однос између сваке слике и боја које се у њој налазе.

Већина битова апликације је прилично стандардна, посебно када је реч о руковању отпремањем слика, креирању ентитета модела и њиховом упорном раду у бази података итд. Руби програмер , то би требало бити мало паметно. Испод је метода која се користи за издвајање боје из отпремљене слике:

after_save :extract_colors private def extract_colors image = Camalian::load(self.image.path) colors = image.prominent_colors(self.color_count.to_i).sort_similar_colors colors.each do |color| unless c = Color.where(r: color.r, g: color.g, b: color.b).first c = Color.create(r: color.r, g: color.g, b: color.b, h: color.h, s: color.s, l: color.l) end self.colors << c end end

Ово помаже издвајањем палете боја и чувањем у бази података. Приметите како издвајамо само одређени број истакнутих боја (нешто што корисник може дефинисати приликом отпремања слике).

Када корисник пошаље слику путем обрасца на веб корисничком интерфејсу, слика се прима преко обрађивача постова и нова ПортфолиоИтем је створена за то. Ова метода, екстракт_боје , позива се сваки пут када се ставка портфолија настави у бази података.

Да бисмо могли да прикажемо палету боја на страницама, користимо једноставног помоћника:

module PortfolioItemsHelper def print_color_palette(colors) color_string = '' colors.each do |c| color_string += content_tag :span, ' ', style: 'display: block; float: left; width: 35px; height: 35px; background: #{c.to_hex}' end content_tag :div, color_string.html_safe, style: 'display: inline-block;' end end

У суштини ствара а див са малим квадратом обухвата , свака чија је боја позадине подешена на једну од издвојених истакнутих боја.

Коначно, да бисмо применили претрагу, морамо користити мало математике и логике:

class PortfolioSearchForm include ActiveModel::Model attr_accessor :color, :similarity validates_presence_of :color, :similarity def color_object @color_object ||= Camalian::Color.new(self.color) end def color_range(color, level) (color_object.send(color) - level)..(color_object.send(color) + level) end def colors_by_rgb level = self.similarity.to_i * 255 / 100.0 Color.where(r: color_range(:r, level), g: color_range(:g, level), b: color_range(:b, level)) end def colors_by_hsl level = self.similarity.to_i Color.where(h: color_range(:h, (self.similarity.to_i * 30 / 100.0) ), s: color_range(:s, level), l: color_range(:l, level)) end end

Са цолорс_би_хсл методу, можемо да дохватимо све Боја ентитети који се подударају са нашим упитом. А помоћу њих можемо идентификовати све отпремљене слике и приказати нашу страницу резултата претраживања. Сам упит је прилично једноставан. С обзиром на одређену боју и вредност сличности, опсег вредности израчунава се за сваку компоненту боје.

руби он раилс рест апи туториал

И то су углавном сви најтежи делови.

Испробавам

Комплетни код можете пронаћи на ГитХуб . Можете инсталирати инстанцу ове апликације на Хероку или је испробати локално:

git clone https://github.com/nazarhussain/camalian-sample-app.git cd camalian-sample-app bundle install rake db:migrate rails s

Коначна пријава изгледа отприлике овако:

Када се апликација покрене, усмерите веб прегледач на хттп: // лоцалхост: 3000. Користите образац на екрану, отпремите неколико слика различитих палета боја. Затим, за претрагу слика по боји, користите поље за претрагу у горњем десном углу. Падајући праг вам омогућава да одредите толеранцију несличности за подударање боја слика.

Шта је следеће?

Демо апликација коју смо изградили у овом чланку прилично је једноставна, али могућности је безброј! Неке друге практичне употребе ове библиотеке могу да укључују:

  • Ограничавање корисника у постављању тамних слика профила
  • Прилагодите тему боје странице некој слици коју је корисник отпремио
  • За такмичења у дизајну, аутоматски потврдите пријаве према захтевима палете боја

Можете даље истраживати библиотеку на ГитХуб и проверите његов изворни код. Слободно пријављујте грешке стварањем проблема или доприносите слањем захтева за повлачењем.

УКС и значај веб приступачности

Дизајн Бренда

УКС и значај веб приступачности
Истраживање мултимодалног дизајна - Водич за Адобе КСД

Истраживање мултимодалног дизајна - Водич за Адобе КСД

Укс Дизајн

Популар Постс
Развој за облак у облаку: БигДата развој са Доцкером у АВС-у
Развој за облак у облаку: БигДата развој са Доцкером у АВС-у
Направите КР скенер: Водич за реактивну камеру
Направите КР скенер: Водич за реактивну камеру
10 најчешћих грешака на Ц ++-у које програмери праве
10 најчешћих грешака на Ц ++-у које програмери праве
Да ли ће отворени код бити отворен и за жене?
Да ли ће отворени код бити отворен и за жене?
Свеобухватна листа конференција о управљању производима
Свеобухватна листа конференција о управљању производима
 
Го програмски језик: Уводни водич за Голанг
Го програмски језик: Уводни водич за Голанг
Водич за Азуре: Предвиђање цена бензина помоћу Азуре Студио за машинско учење
Водич за Азуре: Предвиђање цена бензина помоћу Азуре Студио за машинско учење
Како процеси отворене петље ремете проток информација у послу
Како процеси отворене петље ремете проток информација у послу
Брзе победе у предузећу помоћу Салесфорце АппЕкцханге
Брзе победе у предузећу помоћу Салесфорце АппЕкцханге
Дефинитиван водич за изградњу апликација за децу
Дефинитиван водич за изградњу апликација за децу
Популар Постс
  • разлика између ан с цорп и ц цорп
  • користећи поверпивот у Екцел-у 2013
  • __________ је распоред и изглед слова у графичком дизајну.
  • ноде јс оквир веб сервера
  • који је један од најчешћих начина на који компанија може смањити снагу добављача?
  • када ће се активирати лигхтнинг мрежа на биткоину
  • писање тест случајева у Јави
Категорије
  • Остало
  • Финансијски Процеси
  • Агиле Талент
  • Алати И Упутства
  • © 2022 | Сва Права Задржана

    portaldacalheta.pt