SlideShare a Scribd company logo
1 of 19
Download to read offline
Franz Buchinger, fbuchinger@gmail.com

https://github.com/fbuchinger/pictagger.js
Why tagging matters (not only) for photos
●   photo collections usually live in a file/folder system with a
    one-dimensional index
Why tagging matters (not only) for photos
●   ... but a multi-dimensional index is needed for better
    retrieveability
●   keyword tags are the simplest and most portable approach
    to implement this (-> IPTC Keyword Tag)
Tagging Pitfalls
●   ignoring it (95% of all flickr images are probably untagged)
●   aspect inconsistency
●   term inconsistency/synonyms
Aspect Inconsistency
Aspect Inconsistency




(perspective, country, datecode) ↔ (continent)
Term Inconsistency
Term Inconsistency




 („mountains“) ↔ („mountain“)
Tagging conveniences
●   face detection (automatic, but only considers
    faces)
●   drag'n drop tag lists (consistent terms, still
    requires manual assignment)
●   --> wanted: automatic tagging system with
    aspect/term consistency
pictagger.js
●   Uses existing photo metadata as „seed“ for keyword
    generation
●   Frees the user from automatable tagging tasks
●   100% Javascript
●   Tag generation happens in configurable plugin scripts
    ("taggers")
●   works with local and (soon) flickr/picasa-hosted photos
taggers
●   request certain metadata/or image data, calculate tags and
    emit them
●   taggers only run if the required metadata can be retrieved
●   configurable: whole tagger or generation of individual tags
    can be turned on/off
DateTime tagger
{'Photo.Exif.DateTime': "2010:12:21 18:43:00"}




           DateTime Tagger



           [
               'year:2010',
                'season:winter',
                'calweek:50',
                'yearday:345',
                'month:december',
                'day:tuesday',
                'daytime:evening'
           ]
The hello world dayofmylife tagger
PicTagger.App.addTagger({
    namespace: 'doml',
    requires : ['Photo.Exif.Datetime', 'User.Profile.Birthdate'],
    desires : [],
    emits: [
       {predicate: "dayofmylife", label:"day of my life",
        description:"the day of your life the picture was taken",
        active: true}
    ],
    run: function (required, desired){
       var photo_taken = required[0].get('value');
       var user_birthdate = required[1].get('value');
       var ms2Day = 1000*3600*24;
       var doml = Math.ceil((photo_taken - user_birthdate)/ms2Day);
       this.setTag("doml.dayofmylife",doml);
    },
    isActive: true
});
… testing it
domlRequired = [
        new PicTagger.SourceTag({key: 'Photo.Exif.Datetime',
        value: new Date(2011, 1, 1, 13, 49)}),
        new PicTagger.SourceTag({key: 'User.Profile.Birthdate',
        value: new Date(1979, 6, 27)})
    ];
domlTagger.run(domlRequired);
var taggerResult = domlTagger.getTag("doml.dayofmylife").toString();
same(taggerResult, 'dayofmylife:11513');
Tagger Parade I – Time Based
Example Input               Tagger           Example Output
{Photo.Exif.DateTime':      Holiday          ['holiday:easter',
"2010:04:02 18:43:00"}                       'holiday:goodfriday']
{Photo.Exif.DateTime':      Day of my life   ['dayofmylife:11843']
"2010:04:02 18:43:00",
'User.Profile.Birthdate':
"1979:03:23" }
 {'Photo.Exif.DateTime':    DateTime         [
"2010:12:21 18:43:00"}                           'year:2010',
                                                 'season:winter',
                                                 'calweek:50',
                                                 'yearday:345',
                                                 'month:december',
                                                 'day:tuesday',
                                                 'daytime:evening'
                                             ]
Tagger Parade II – Location
Example Input               Tagger     Example Output
{'Photo.Exif.Location':     FromHome   ['kmfromhome:00150',
  {lon: 48.0191752,                     'homebearing:east']
   lat:16.2949365},
'User.Profile.Location':
  {lon: 48.3069400,
   lat: 14.2858300}}
}
{Photo.Exif.Location':      Geohash    ['geohash:u2e94v9egx1']
{lon: 48.0191752
lat:16.2949365}}
   {Photo.Exif.Location':   GeoCode    ['city:vienna',
{lon: 48.0191752                       'province: vienna',
lat:16.2949365}}                       'district:margarethen',
                                       'street:margarethenstra
                                       sse']
Tagger Parade III – Shooting Properties
Example Input                Tagger        Example Output
{'Photo.Exif.Make':          CamType       ['camtype:mobile',
'Apple',                                   'make':'apple','model':
'Photo.Exif.Model':                        'iphone3gs']
'iPhone 3GS'
}
{Photo.Exif.Orientation':    Orientation   ['orientation:portrait'
7}                                         ]
                             Exposure      ['exposure:long']
{Photo.Exif.ExposureTime':
0.4}
Innerds of pictagger.js
●   Javascript EXIF Parser (Seidelin 2008), enhanced for HTML 5
    File API
●   Backbone.js/underscore.js
●   jQuery
Outlook & Questions

More Related Content

Similar to Pictagger

Integrating Angular js & three.js
Integrating Angular js & three.jsIntegrating Angular js & three.js
Integrating Angular js & three.jsJosh Staples
 
ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945Kitware Kitware
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreRemy Sharp
 
OSCON 2005: Build Your Own Chandler Parcel
OSCON 2005: Build Your Own Chandler ParcelOSCON 2005: Build Your Own Chandler Parcel
OSCON 2005: Build Your Own Chandler ParcelTed Leung
 
MySQL User Conference 2009: Python and MySQL
MySQL User Conference 2009: Python and MySQLMySQL User Conference 2009: Python and MySQL
MySQL User Conference 2009: Python and MySQLTed Leung
 
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...Sencha
 
Marker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadMarker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadEnrico Micco
 
API Jones and the Wireframes of Doom
API Jones and the Wireframes of DoomAPI Jones and the Wireframes of Doom
API Jones and the Wireframes of DoomMichele Titolo
 
Implement angular calendar component how to drag & create events
Implement angular calendar component how to drag & create eventsImplement angular calendar component how to drag & create events
Implement angular calendar component how to drag & create eventsKaty Slemon
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraDataStax Academy
 
Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)Jorge Maroto
 
iOS 2D Gamedev @ CocoaHeads
iOS 2D Gamedev @ CocoaHeadsiOS 2D Gamedev @ CocoaHeads
iOS 2D Gamedev @ CocoaHeadsAlain Hufkens
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScriptersgerbille
 
Observational Science With Python and a Webcam
Observational Science With Python and a WebcamObservational Science With Python and a Webcam
Observational Science With Python and a WebcamIntellovations, LLC
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsIgnacio Martín
 
Introduction to threejs
Introduction to threejsIntroduction to threejs
Introduction to threejsGareth Marland
 

Similar to Pictagger (20)

Integrating Angular js & three.js
Integrating Angular js & three.jsIntegrating Angular js & three.js
Integrating Angular js & three.js
 
ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945ITK Tutorial Presentation Slides-945
ITK Tutorial Presentation Slides-945
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 
OSCON 2005: Build Your Own Chandler Parcel
OSCON 2005: Build Your Own Chandler ParcelOSCON 2005: Build Your Own Chandler Parcel
OSCON 2005: Build Your Own Chandler Parcel
 
MySQL User Conference 2009: Python and MySQL
MySQL User Conference 2009: Python and MySQLMySQL User Conference 2009: Python and MySQL
MySQL User Conference 2009: Python and MySQL
 
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
 
Marker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPadMarker-based Augmented Monuments on iPhone and iPad
Marker-based Augmented Monuments on iPhone and iPad
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
 
API Jones and the Wireframes of Doom
API Jones and the Wireframes of DoomAPI Jones and the Wireframes of Doom
API Jones and the Wireframes of Doom
 
Implement angular calendar component how to drag & create events
Implement angular calendar component how to drag & create eventsImplement angular calendar component how to drag & create events
Implement angular calendar component how to drag & create events
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache Cassandra
 
Seti 09
Seti 09Seti 09
Seti 09
 
Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)
 
Image Processing in R
Image Processing in R Image Processing in R
Image Processing in R
 
iOS 2D Gamedev @ CocoaHeads
iOS 2D Gamedev @ CocoaHeadsiOS 2D Gamedev @ CocoaHeads
iOS 2D Gamedev @ CocoaHeads
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScripters
 
Tabledown
TabledownTabledown
Tabledown
 
Observational Science With Python and a Webcam
Observational Science With Python and a WebcamObservational Science With Python and a Webcam
Observational Science With Python and a Webcam
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
 
Introduction to threejs
Introduction to threejsIntroduction to threejs
Introduction to threejs
 

Recently uploaded

FULL ENJOY - 9953040155 Call Girls in Burari | Delhi
FULL ENJOY - 9953040155 Call Girls in Burari | DelhiFULL ENJOY - 9953040155 Call Girls in Burari | Delhi
FULL ENJOY - 9953040155 Call Girls in Burari | DelhiMalviyaNagarCallGirl
 
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...anilsa9823
 
Editorial sephora annual report design project
Editorial sephora annual report design projectEditorial sephora annual report design project
Editorial sephora annual report design projecttbatkhuu1
 
Jeremy Casson - An Architectural and Historical Journey Around Europe
Jeremy Casson - An Architectural and Historical Journey Around EuropeJeremy Casson - An Architectural and Historical Journey Around Europe
Jeremy Casson - An Architectural and Historical Journey Around EuropeJeremy Casson
 
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...gurkirankumar98700
 
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...anilsa9823
 
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...anilsa9823
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhisoniya singh
 
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | Delhi
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | DelhiFULL ENJOY - 9953040155 Call Girls in Sangam Vihar | Delhi
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | DelhiMalviyaNagarCallGirl
 
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...anilsa9823
 
Patrakarpuram ) Cheap Call Girls In Lucknow (Adult Only) 🧈 8923113531 𓀓 Esco...
Patrakarpuram ) Cheap Call Girls In Lucknow  (Adult Only) 🧈 8923113531 𓀓 Esco...Patrakarpuram ) Cheap Call Girls In Lucknow  (Adult Only) 🧈 8923113531 𓀓 Esco...
Patrakarpuram ) Cheap Call Girls In Lucknow (Adult Only) 🧈 8923113531 𓀓 Esco...akbard9823
 
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...home
 
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...anilsa9823
 
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | Delhi
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | DelhiFULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | Delhi
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | DelhiMalviyaNagarCallGirl
 
Deira Call Girls # 0522916705 # Call Girls In Deira Dubai || (UAE)
Deira Call Girls # 0522916705 #  Call Girls In Deira Dubai || (UAE)Deira Call Girls # 0522916705 #  Call Girls In Deira Dubai || (UAE)
Deira Call Girls # 0522916705 # Call Girls In Deira Dubai || (UAE)wdefrd
 
Roadrunner Lodge, Motel/Residence, Tucumcari NM
Roadrunner Lodge, Motel/Residence, Tucumcari NMRoadrunner Lodge, Motel/Residence, Tucumcari NM
Roadrunner Lodge, Motel/Residence, Tucumcari NMroute66connected
 
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escorts
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad EscortsIslamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escorts
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escortswdefrd
 
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call Girls
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call GirlsCall Girl Service In Dubai #$# O56521286O #$# Dubai Call Girls
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call Girlsparisharma5056
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noida
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | NoidaFULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noida
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noidasoniya singh
 
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | Delhi
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | DelhiFULL ENJOY - 9953040155 Call Girls in Uttam Nagar | Delhi
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | DelhiMalviyaNagarCallGirl
 

Recently uploaded (20)

FULL ENJOY - 9953040155 Call Girls in Burari | Delhi
FULL ENJOY - 9953040155 Call Girls in Burari | DelhiFULL ENJOY - 9953040155 Call Girls in Burari | Delhi
FULL ENJOY - 9953040155 Call Girls in Burari | Delhi
 
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...
Lucknow 💋 Escorts Service Lucknow Phone No 8923113531 Elite Escort Service Av...
 
Editorial sephora annual report design project
Editorial sephora annual report design projectEditorial sephora annual report design project
Editorial sephora annual report design project
 
Jeremy Casson - An Architectural and Historical Journey Around Europe
Jeremy Casson - An Architectural and Historical Journey Around EuropeJeremy Casson - An Architectural and Historical Journey Around Europe
Jeremy Casson - An Architectural and Historical Journey Around Europe
 
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...
Charbagh / best call girls in Lucknow - Book 🥤 8923113531 🪗 Call Girls Availa...
 
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...
Lucknow 💋 Call Girl in Lucknow Phone No 8923113531 Elite Escort Service Avail...
 
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...
Lucknow 💋 Call Girls in Lucknow | Service-oriented sexy call girls 8923113531...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Vasant Kunj | Delhi
 
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | Delhi
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | DelhiFULL ENJOY - 9953040155 Call Girls in Sangam Vihar | Delhi
FULL ENJOY - 9953040155 Call Girls in Sangam Vihar | Delhi
 
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...
Lucknow 💋 Call Girls in Lucknow ₹7.5k Pick Up & Drop With Cash Payment 892311...
 
Patrakarpuram ) Cheap Call Girls In Lucknow (Adult Only) 🧈 8923113531 𓀓 Esco...
Patrakarpuram ) Cheap Call Girls In Lucknow  (Adult Only) 🧈 8923113531 𓀓 Esco...Patrakarpuram ) Cheap Call Girls In Lucknow  (Adult Only) 🧈 8923113531 𓀓 Esco...
Patrakarpuram ) Cheap Call Girls In Lucknow (Adult Only) 🧈 8923113531 𓀓 Esco...
 
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...
Authentic # 00971556872006 # Hot Call Girls Service in Dubai By International...
 
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...
Lucknow 💋 Cheap Call Girls In Lucknow Finest Escorts Service 8923113531 Avail...
 
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | Delhi
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | DelhiFULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | Delhi
FULL ENJOY - 9953040155 Call Girls in Kotla Mubarakpur | Delhi
 
Deira Call Girls # 0522916705 # Call Girls In Deira Dubai || (UAE)
Deira Call Girls # 0522916705 #  Call Girls In Deira Dubai || (UAE)Deira Call Girls # 0522916705 #  Call Girls In Deira Dubai || (UAE)
Deira Call Girls # 0522916705 # Call Girls In Deira Dubai || (UAE)
 
Roadrunner Lodge, Motel/Residence, Tucumcari NM
Roadrunner Lodge, Motel/Residence, Tucumcari NMRoadrunner Lodge, Motel/Residence, Tucumcari NM
Roadrunner Lodge, Motel/Residence, Tucumcari NM
 
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escorts
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad EscortsIslamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escorts
Islamabad Call Girls # 03091665556 # Call Girls in Islamabad | Islamabad Escorts
 
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call Girls
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call GirlsCall Girl Service In Dubai #$# O56521286O #$# Dubai Call Girls
Call Girl Service In Dubai #$# O56521286O #$# Dubai Call Girls
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noida
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | NoidaFULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noida
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Pari Chowk | Noida
 
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | Delhi
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | DelhiFULL ENJOY - 9953040155 Call Girls in Uttam Nagar | Delhi
FULL ENJOY - 9953040155 Call Girls in Uttam Nagar | Delhi
 

Pictagger

  • 2. Why tagging matters (not only) for photos ● photo collections usually live in a file/folder system with a one-dimensional index
  • 3. Why tagging matters (not only) for photos ● ... but a multi-dimensional index is needed for better retrieveability ● keyword tags are the simplest and most portable approach to implement this (-> IPTC Keyword Tag)
  • 4. Tagging Pitfalls ● ignoring it (95% of all flickr images are probably untagged) ● aspect inconsistency ● term inconsistency/synonyms
  • 9. Tagging conveniences ● face detection (automatic, but only considers faces) ● drag'n drop tag lists (consistent terms, still requires manual assignment) ● --> wanted: automatic tagging system with aspect/term consistency
  • 10. pictagger.js ● Uses existing photo metadata as „seed“ for keyword generation ● Frees the user from automatable tagging tasks ● 100% Javascript ● Tag generation happens in configurable plugin scripts ("taggers") ● works with local and (soon) flickr/picasa-hosted photos
  • 11. taggers ● request certain metadata/or image data, calculate tags and emit them ● taggers only run if the required metadata can be retrieved ● configurable: whole tagger or generation of individual tags can be turned on/off
  • 12. DateTime tagger {'Photo.Exif.DateTime': "2010:12:21 18:43:00"} DateTime Tagger [ 'year:2010', 'season:winter', 'calweek:50', 'yearday:345', 'month:december', 'day:tuesday', 'daytime:evening' ]
  • 13. The hello world dayofmylife tagger PicTagger.App.addTagger({ namespace: 'doml', requires : ['Photo.Exif.Datetime', 'User.Profile.Birthdate'], desires : [], emits: [ {predicate: "dayofmylife", label:"day of my life", description:"the day of your life the picture was taken", active: true} ], run: function (required, desired){ var photo_taken = required[0].get('value'); var user_birthdate = required[1].get('value'); var ms2Day = 1000*3600*24; var doml = Math.ceil((photo_taken - user_birthdate)/ms2Day); this.setTag("doml.dayofmylife",doml); }, isActive: true });
  • 14. … testing it domlRequired = [ new PicTagger.SourceTag({key: 'Photo.Exif.Datetime', value: new Date(2011, 1, 1, 13, 49)}), new PicTagger.SourceTag({key: 'User.Profile.Birthdate', value: new Date(1979, 6, 27)}) ]; domlTagger.run(domlRequired); var taggerResult = domlTagger.getTag("doml.dayofmylife").toString(); same(taggerResult, 'dayofmylife:11513');
  • 15. Tagger Parade I – Time Based Example Input Tagger Example Output {Photo.Exif.DateTime': Holiday ['holiday:easter', "2010:04:02 18:43:00"} 'holiday:goodfriday'] {Photo.Exif.DateTime': Day of my life ['dayofmylife:11843'] "2010:04:02 18:43:00", 'User.Profile.Birthdate': "1979:03:23" } {'Photo.Exif.DateTime': DateTime [ "2010:12:21 18:43:00"} 'year:2010', 'season:winter', 'calweek:50', 'yearday:345', 'month:december', 'day:tuesday', 'daytime:evening' ]
  • 16. Tagger Parade II – Location Example Input Tagger Example Output {'Photo.Exif.Location': FromHome ['kmfromhome:00150', {lon: 48.0191752, 'homebearing:east'] lat:16.2949365}, 'User.Profile.Location': {lon: 48.3069400, lat: 14.2858300}} } {Photo.Exif.Location': Geohash ['geohash:u2e94v9egx1'] {lon: 48.0191752 lat:16.2949365}} {Photo.Exif.Location': GeoCode ['city:vienna', {lon: 48.0191752 'province: vienna', lat:16.2949365}} 'district:margarethen', 'street:margarethenstra sse']
  • 17. Tagger Parade III – Shooting Properties Example Input Tagger Example Output {'Photo.Exif.Make': CamType ['camtype:mobile', 'Apple', 'make':'apple','model': 'Photo.Exif.Model': 'iphone3gs'] 'iPhone 3GS' } {Photo.Exif.Orientation': Orientation ['orientation:portrait' 7} ] Exposure ['exposure:long'] {Photo.Exif.ExposureTime': 0.4}
  • 18. Innerds of pictagger.js ● Javascript EXIF Parser (Seidelin 2008), enhanced for HTML 5 File API ● Backbone.js/underscore.js ● jQuery