Hi guys, Im working on this...
basically its an imaging server (or a plugin on top of ES), called imagenii
the abilities are:
image replication
Image transformations on the fly (crop, resize, fill, filters etc...)
actually like 150 filters available
json, jpg, png and gif suppported
and of course the search
from this sent
{"url":"http://myimage.jpg"}
inflated to this and much more not seen like dominant colors extraction,
scene identification...
http://localhost:9200/_imagenii/imagenii/4.json?pretty=true
{
_index: "imagenii",
_type: "data",
_id: "4",
_version: 3,
exists: true,
_source: {
type: "photo",
date: "2010:03:28 22:22:22",
width: 1600,
format: "jpeg",
height: 1200,
orientation: "landscape",
hash: "1101000001111010011100000111100001100000111111100010011001111100",
metadata: {
Exif Thumbnail: {
Orientation: "Top, left side (Horizontal / normal)",
X Resolution: "72 dots per inch",
Thumbnail Offset: "702 bytes",
Thumbnail Length: "6738 bytes",
Resolution Unit: "Inch",
Thumbnail Compression: "JPEG (old-style)",
Y Resolution: "72 dots per inch"
},
Exif SubIFD: {
F-Number: "F2,8",
Aperture Value: "F2,8",
Date/Time Original: "2010:03:28 22:22:22",
Metering Mode: "Average",
Color Space: "sRGB",
Exposure Mode: "Auto exposure",
Exif Version: "2.21",
Exif Image Width: "1600 pixels",
Components Configuration: "YCbCr",
Sensing Method: "One-chip color area sensor",
FlashPix Version: "1.00",
Flash: "Flash did not fire",
Date/Time Digitized: "2010:03:28 22:22:22",
Exif Image Height: "1200 pixels",
Exposure Program: "Program normal",
White Balance Mode: "Auto white balance"
},
Jpeg: {
Component 3: "Cr component: Quantization table 1, Sampling factors 1
horiz/1 vert",
Number of Components: "3",
Image Height: "1200 pixels",
Data Precision: "8 bits",
Compression Type: "Baseline",
Image Width: "1600 pixels",
Component 1: "Y component: Quantization table 0, Sampling factors 2 horiz/2
vert",
Component 2: "Cb component: Quantization table 1, Sampling factors 1
horiz/1 vert"
},
GPS: {
GPS Latitude Ref: "S",
GPS Time-Stamp: "22:22:16 UTC",
GPS Longitude: "151.0° 12.0' 9.599999999970805"",
GPS Longitude Ref: "E",
GPS Latitude: "-33.0° 52.0' 38.999999999991815""
},
Exif IFD0: {
Software: "3.1.2",
Date/Time: "2010:03:28 22:22:22",
Orientation: "Top, left side (Horizontal / normal)",
Model: "iPhone 3G",
X Resolution: "72 dots per inch",
YCbCr Positioning: "Center of pixel array",
Resolution Unit: "Inch",
Y Resolution: "72 dots per inch",
Make: "Apple"
}
},
binary: @binary@,
url: "",
geos: [
{
lng: "151,2026666667",
lat: "-33,8775000000"
}
]
}
}
I have writen the transformations in a js chainable way ie:
http://localhost:9200/_imagenii/imagenii/4.jpg?chain=crop(w=150).grayscale()http://localhost:9200/_imagenii/imagenii/4.jpg?chain=crop().grayscale()
http://localhost:9200/_imagenii/imagenii/4.png?chain=crop(w=150, h=100,
pos=center).blur()http://localhost:9200/_imagenii/imagenii/4.jpg?chain=crop().grayscale()
.solarize()
clever stuff using NLP, machine learning and computer vision.
To name a few scene identification, extract geolocations using GPS and/or
NLP NER in contained metadata, extract relevant metadata, extract dominant
colors, visual search based on several descriptors CEDD, CCEDD... duplicate
reduction using a dhash as id... Maybe SIFT in the future if I have proper
ROI
Basically I think you can do anything... A new tineye, the new instagram, a
search engine by shape, colors or texture for e-commerce, a CDN of images
with imaging and search capabilities...
I have done a lot. As David has said a few things has been to be done to
support all the things that I have in the todo list. For me discovering the
missing headers in the rest response has been a heartbreaker ;). Im waiting
the next release to continue with the proper headers
About perfomance? Well, ES is quite slow when hitting big files, dealing
with the binary is not a piece of cake and Im dealing with a lot of
permagen glitches.
When dealing with small images (under 600px) perfomance is under 10ms in
very heavy stress 500 users in a rampage of 1s per 30 secs but basically
just because Im using ES aswell as a cache so the transformations only
occur once... Dealing with big files is another story... same stress is
giving me a median of 8/9 secs maybe thats pretty normal with much more
conventional servers like apache I have to compare it but at the minute I
was tighting everything a bit...
Lets see, Im finishing the project in between this month and the next one
and planning the ROI so I presume that at the end of the month I will have
something live to be tested and tasted
Best
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.