-
Recent Posts
Recent Comments
Archives
- April 2021
- January 2021
- December 2020
- November 2020
- October 2020
- November 2014
- October 2014
- September 2014
- August 2014
- May 2014
- April 2014
- March 2014
- October 2013
- September 2013
- August 2013
- June 2013
- April 2013
- March 2013
- September 2012
- July 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
Categories
Meta
Automatic Season Detection
It’s not very difficult for a human to know when a season starts or ends from seeing an image series. It becomes very tedious to do it when you have millions of images to go through. This is where automatic season detection can aid efforts in academic (e.g. research on global warming) and industrial (e.g. Agriculture) contexts.
Posted in Uncategorized
Tagged Automatic season detection, Computer vision, image series, phenology
Leave a comment
Image Recognition and Machine Learning are Cool/Scary :)
Check this link out. Cool because emotions (smile == happy), age, identity and lots more can now all be gathered automatically but its scary because emotions, age, identity and lots more can all be gathered automatically.
Check out the Smart Me Up company web page. It shows a really cool way of presenting all these concepts as well as how far these fields have come.
Posted in Uncategorized
1 Comment
Pan, Zoom with Qt
This is a followup post for my previous pan/zoom post. It is so difficult to find a proper widget that implements Zoom with mouse wheel and pan with CTRL+LeftClick. IMO, it is something that is necessary when viewing an image. I finally found a QT implementation that was fast and simple to understand. Here is the link to the Stack Overflow discussion. Hopefully this post will increase the likelihood of ppl finding a good solution in QT for this issue.
Posted in Uncategorized
Leave a comment
Sound from image
What will they think of next? This awesome MIT project recovers sound from a high-speed video feed. It’s awesome, scary and interesting all at the same time :)
Posted in Uncategorized
Leave a comment
Awesome Segmentation for Arabidopsis Thaliana
In the past months I have been working with a project which has the purpose of addressing high throughput phenotyping. We recently had a very successful test that I want to share as a video. What we are trying to do is extract plant data automatically from individual images. Here is the video :)
Day to Day Danish Resident
In Denmark, it’s probably intuitive to say:
- We consume less energy on warm days between 0100 and 0300 hours.
- We consume more energy cold days between 1800 and 2000 hours.
- As temperature drops, the consumption increases. This increase is marked at 5 to 10 degrees.
But it’s really cool to watch it in 3D. Click on the image to get a 3D figure that you can play with :)
Posted in Uncategorized
Tagged data anlysis, data visualization, energy consumption in denmark, webGL
Leave a comment
Getting Reliable Temperature Readings
I wanted to correlate temperature to household energy usage in Denmark. To do this, I needed to acquire reliable temperature measurements from Zealand but it has turned out to be a very hard thing to do.
- I logically began my journey at the Danish Meteorological Institute (DMI) but I could not find raw data that I could use. There was a lot of very useful information everywhere, but no historical data that I could download in CSV file (or in any other format).
- European Climate Assessment and Dataset (ECA&D): This was my first successful hit where I was able to acquire daily temperature means from a station called LANDBOHOJSKOLEN. This was a good beginning, but I’m looking for measurements that are taken every hour.
- Weather Underground (WU): In my search for a finer granularity (hours means instead of day means), my search has taken me to Weather Underground. They seem to have the temperature data measured at 30 minutes intervals, which was really good for my purposes. But they round the temperature values to the nearest degree which might introduce some in the correlation. In any case, I used the “comma separated file” functionality (Here is map of stations) to download temperature data by automating the process with a python script (I might have made it a bit too complicated, but it works).
import urllib2 import os.path import datetime import random import time WEATHER_PLACE="http://www.wunderground.com/history/airport/EKRK/%s/%s/%s/" \ + "/DailyHistory.html?format=1" WEATHER_PLACE="http://www.wunderground.com/history/airport/EKRK/%s/%s/%s/" \ + "DailyHistory.html?req_city=NA&req_state=NA&req_statename=NA&format=1" WEATHER_UNITS="http://www.wunderground.com/cgi-bin/findweather/getForecast?setunits=english" MAX_WAIT_TIME=1 #in seconds. def dwGenerateDateDict( D1, D2 ): # Initialize dateDict numdays = abs(D1 - D2).days dateList = [ D2 - datetime.timedelta(days=x) for x in range(0,3) ] dateDict = dict(zip(dateList, [""]*len(dateList))) while ( len(dateList) > 0 ): print("Days left: " + str(len(dateList))) # Wait for a random amount of seconds secs = random.randint(0,MAX_WAIT_TIME) print("Waiting for " + str(secs) + " seconds.") time.sleep(secs) # Select a random date ranInd = random.randint(0,len(dateList)-1) rd = dateList[ranInd] del(dateList[ranInd]) # Get the csv weather for the date urllib2.urlopen(WEATHER_UNITS) urlRes = urllib2.urlopen(WEATHER_PLACE%(rd.year, rd.month, rd.day)) # Read rest into dictionary. dateDict[rd] = urlRes.read() print("Date : " + rd.strftime("%Y%m%d") \ + ". Read : " + str(len(dateDict[rd])) + " Bytes") return (dateDict) def dwGenerateCSVFile ( dateDict, filename ): fd = open(filename, 'a') keys = dateDict.keys() keys.sort() for date in keys: datestr = str(date) datedata = dateDict[date] timetype = datedata[1:datedata.find(",")] # CET or CEST # Remove first list of header datedata = datedata[datedata.find(" \n") + 7:] # Last separator to front datedata = datedata[-7:] + datedata[:-7]; datedata = datedata.replace("<br />\n", "\n"+datestr+","+timetype+",") fd.write(datedata) fd.close() if __name__ == "__main__": D1 = datetime.date(2011,9,27) D2 = datetime.date(2013,9,23) DD = dwGenerateDateDict(D1,D2) dwGenerateCSVFile(DD, "UnderGroundWeatherRoskildeAirport.csv")
I’m going to start trying different weather APIs and see if any of them can give me the historical information that I need with the granularity level that I want. More to come…
Matlab: Putting labels on plot axis
I can’t just plot the X-axis with strings and expect the Matlab plot function to do what it is supposed to do (Which is label each X point with the string). The work around for this inconvenience is to use the XTick and XTickLabel. Found this useful stack overflow article that explains it all :)
x = 1:5; y = rand(size(x)); plot(x, y, 'b') set(gca, 'XTick',1:5, 'XTickLabel',{'A' 'B' 'C' 'D' 'E'})
Use the XTick to signal how many X axis elements there are. And use XTickLabel to signal the labels for each X axis element. In my case I only used XTickLabel.
EcoIS is out!!!!
Checkout our new publication here. It’s all about how to normalize image taken of field plots. This is not only interesting because it can normalize hand-held photography, but it also has the potential to influence how images taken from Areal Unmanned Vehicles are processed.
Posted in Uncategorized
Tagged Arctic, Areal Unmanned Vehicles, Computer vision, field plots, image series, Monitoring, phenology, photo plot
Leave a comment