Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
|''Type:''|file|
|''URL:''|http://mptw.tiddlyspot.com|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
G. Azzopardi and N. Petkov, "A CORF computational model of a simple cell outperforms the Gabor function model", //Biological Cybernetics//, in print, 2012, DOI: 10.1007/s00422-012-0486-6.
[[[abstract]|A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model]], <html><a href="http://www.springerlink.com/content/428721k4l2816m43/fulltext.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 1]], [[[matlab script]|A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model]].
!Abstract
Simple cells in primary visual cortex are believed to extract local contour information from a visual scene. The 2D Gabor function (GF) model has gained particular popularity as a computational model of a simple cell. However, it short-cuts the LGN, it cannot reproduce a number of properties of real simple cells, and its effectiveness in contour detection tasks has never been compared with the effectiveness of alternative models. We propose a computational model that uses as afferent inputs the responses of model LGN cells with center–surround receptive fields <html>(RFs)</html> and we refer to it as a Combination of Receptive Fields (CORF) model. We use shifted gratings as test stimuli and simulated reverse correlation to explore the nature of the proposed model. We study its behavior regarding the effect of contrast on its response and orientation bandwidth as well as the effect of an orthogonal mask on the response to an optimally oriented stimulus. We also evaluate and compare the performances of the CORF and GF models regarding contour detection, using two public data sets of images of natural scenes with associated contour ground truths. The RF map of the proposed CORF model, determined with simulated reverse correlation, can be divided in elongated excitatory and inhibitory regions typical of simple cells. The modulated response to shifted gratings that this model shows is also characteristic of a simple cell. Furthermore, the CORF model exhibits cross orientation suppression, contrast invariant orientation tuning and response saturation. These properties are observed in real simple cells, but are not possessed by the GF model. The proposed CORF model outperforms the GF model in contour detection with high statistical confidence (<html>RuG</html> data set: //p// < <html>10<sup>−4</sup></html>, and Berkeley data set: //p// < <html>10<sup>−4</sup></html>). The proposed CORF model is more realistic than the GF model and is more effective in contour detection, which is assumed to be the primary biological role of simple cells.
!Matlab script of the CORF operator
You are kindly invited to use the <html><a href="CORF.zip">Matlab script</a></html> of the CORF contour operator for academic purposes.
The following is an example of an input image, which is processed by the Matlab script of the CORF contour operator. The input image is taken from the publicly available [[RuG|http://www.cs.rug.nl/~imaging/databases/contour_database/contour_database.html]] data set
{{centeredTable{
| <html><a href="elephant_2.png" target="_blank"><img src="elephant_2.png" width=200></a></html> | <html><a href="CORFoutput.png" target="_blank"><img src="CORFoutput.png" width=200></a></html> | <html><a href="CORFContour.png" target="_blank"><img src="CORFContour.png" width=200></a></html> |
| Input image | CORF output | Resulting contour |
|borderless|k
}}}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
*//March 2007// - <html>BSc</html> (Hons) Computing & Information Systems, [[Goldsmiths, University of London|http://www.gold.ac.uk/]]
**''First Class'' and ''Academic Award'' for overall performance
*//August 2007// - Awarded a postgraduate scholarship from the Maltese Government [[(MGSS)|http://www.education.gov.mt/mgss.htm]] for <html>MSc</html> studies
*//May 2008// - Awarded a <html>PhD</html> scholarship by [[Prof. Dr. Nicolai Petkov|http://www.cs.rug.nl/~petkov/]] from University of Groningen for <html>PhD</html> studies
*//January 2009// - <html>MSc</html> Advanced Methods in Computer Science, [[Queen Mary, University of London|http://www.qmul.ac.uk/]]
**''Distinction'' and ''Ranked First'' in the Computer Science Masters degrees
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html>@article{AzzopardiPetkovCORF2012,</html>
|author|=|{Azzopardi, George and Petkov, Nicolai},|
|affiliation|=|{Johann Bernoulli Institute for Mathematics and Computer Science, University of Groningen, Groningen, The Netherlands},|
|title|=|{A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model},|
|journal|=|{Biological Cybernetics},|
|publisher|=|{Springer Berlin / Heidelberg},|
|issn|=|{0340-1200},|
|keyword|=|{Biomedical and Life Sciences},|
|pages|=|{177-189},|
|volume|=|{106},|
|issue|=|{3},|
|url|=|{http://dx.doi.org/10.1007/s00422-012-0486-6},|
|note|=|{10.1007/s00422-012-0486-6},|
|year|=|{2012}|
|borderless|k
}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html>@article{@article{AzzopardiCamilleri2008,</html>
|Author |=|{Azzopardi, George and Camilleri, Kenneth},|
|Title |=|{Offline handwritten signature verification using radial basis function neural networks},|
|booktitle|=|{WICT},|
|Year |=|{2008},|
|borderless|k
}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html>@article{@article{AzzopardiSmeraldi2009,</html>
|Author |=|{Azzopardi, George and Smeraldi, Fabrizio},|
|Title |=|{Variance Ranklets: orientation–selective rank features for contrast modulations},|
|booktitle|=|{BMVC},|
|Year |=|{2009},|
|borderless|k
}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html>@article{AzzopardiPetkov2011,</html>
|Author |=|{Azzopardi, George and Petkov, Nicolai},|
|Affiliation |=|{Johann Bernoulli Institute for Mathematics and Computer Science, University of Groningen, The Netherlands},|
|Title |=|{Detection of Retinal Vascular Bifurcations by Trainable <html>V4-Like</html> Filters},|
|Booktitle |=|{Computer Analysis of Images and Patterns},|
|Series |=|{Lecture Notes in Computer Science},|
|Editor |=|{Real, Pedro and <html>Diaz-Pernil</html>, Daniel and <html>Molina-Abril</html>, Helena and Berciano, Ainhoa and Kropatsch, Walter},|
|Publisher |=|{Springer Berlin / Heidelberg},|
|Isbn |=|{978-3-642-23671-6},|
|Keyword |=|{Computer Science},|
|Pages |=|{451-459},|
|Volume |=|{6854},|
|Url |=|{http://dx.doi.org/10.1007/978-3-642-23672-3_55},|
|Note |=|{10.1007/978-3-642-23672-3_55},|
|Year |=|{2011},|
|borderless|k
}
<html>
*G. Azzopardi and N. Petkov, [["Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters"|http://www.springerlink.com/content/a10k8564232m3215/]], [[CAIP|http://congreso.us.es/caip2011/]], Seville, Spain, Aug 2011
<html>
<center>
<iframe width="420" height="345" src="http://www.youtube.com/embed/_DQEZGF9d-8" frameborder="0" allowfullscreen></iframe>
</center>
</html>
{{floatleft small borderright{
Sunshine: #ff0
Grass: #360
Sky: LightBlue
Dirt: #633
Apple: #C00
Banana: #FF0
Lime: #3C6
Orange: #F93
Peach: #F99
Pear: #CF6
Raspberry: #606
Background: #fff
Foreground: #000
PrimaryPale: #9cf
PrimaryLight: #09f
PrimaryMid: #03c
PrimaryDark: #003
SecondaryPale: #ffc
SecondaryLight: #fc9
SecondaryMid: #cc6
SecondaryDark: #630
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #C33
}}}PaletteMaker:<hr><<tiddler PaletteMaker>>{{clear block{}}}
Type the text for 'Conferences'
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
|''Address:''|<html>University of Groningen<br>Institute of Mathematics and Computing Science<br>P.O. Box 800, 9700 AV Groningen<br>The Netherlands<br></html>|
|''Email:''|[[g.azzopardi@rug.nl|mailto:g.azzopardi@rug.nl]]|
|''Tel:''|+31 (0)50 363 7126|
|''Fax:''|+31 (0)50 363 3800|
|borderless|k
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>G. Azzopardi and N. Petkov, "Detection of Retinal Vascular Bifurcations by Trainable <html>V4-Like</html> Filters", [[CAIP|http://congreso.us.es/caip2011/]], Seville, Spain, Aug 2011.
[[[abstract]|Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters]], <html><a href="http://www.cs.rug.nl/~imaging/databases/retina_database/CAIP2011.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 4]], <html><a href="BMVA_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, [[[presentation]|Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters]], <html><a href="http://www.cs.rug.nl/~imaging/databases/retina_database" title="Ground truth data of vascular bifurcations" target="_blank"><b>[ground truth data]</b></a></html>, <html><a href="http://matlabserver.cs.rug.nl:8080/RetinalVascularBifurcations/index.html" title="Interactive web application" target="_blank"><b>[web application]</b></a></html>, [[[Photos]|Photo Albums]].<html><br><br></html>
!Abstract
The detection of vascular bifurcations in retinal fundus images is important for finding signs of various cardiovascular diseases. We propose a novel method to detect such bifurcations. Our method is implemented in trainable filters that mimic the properties of shape-selective neurons in area V4 of visual cortex. Such a filter is configured by combining given channels of a bank of Gabor filters in an <html>AND-gate-like</html> operation. Their selection is determined by the automatic analysis of a bifurcation feature that is specified by the user from a training image. Consequently, the filter responds to the same and similar bifurcations. With only 25 filters we achieved a correct detection rate of 98.52% at a precision rate of 95.19% on a set of 40 binary fundus images, containing more than 5000 bifurcations. In principle, all vascular bifurcations can be detected if a sufficient number of filters are configured and used.
!Overview
{{centeredTable{
|<html><center><a title="Retinal fundus image" href="Retina_Color_large.png" target="_blank"><img src="Retina_Color.png" border="1"></a></center></html>|<html><center><a title="Binary segmentation of the vessel tree" href="Retina_Segmented_large.png" target="_blank"><img src="Retina_Segmented.png" border="1"></a></center></html>|<html><center><a title="Detection of vascular bifurcations" href="Retina_Bifurcations_large.png" target="_blank"><img src="Retina_Bifurcations.png" border="1"></a></center></html>|
|<html><center><font face="arial" size="2">(a)</font></center></html>|<html><center><font face="arial" size="2">(b)</font></center></html>|<html><center><font face="arial" size="2">(c)</font></center></html>|
|borderless|k
}}}
Figure 1. (a) Retinal fundus image and (b) the corresponding binary segmentation of its vessel tree. (c) The output of our method. The encircled features show the detected vascular bifurcations.
!Presentation
The below presentation was given at the CAIP conference, 2011.
<html>
<center>
<iframe width="420" height="345" src="http://www.youtube.com/embed/_DQEZGF9d-8" frameborder="0" allowfullscreen></iframe>
</center>
</html>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html><h1>BSc Project</h1></html>
*[[Offline Handwritten Signature Verification using Radial Basis Function Neural Networks|BSCProject.pdf]]
<html><h1>MSc Project</h1></html>
*[[Rank-Based Filter with Frequency- and Orientation-Selective Response|MSCProject.pdf]]
*[[MSc Project Presentation|MScProject.pps]]
/***
|Name|EditTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#EditTiddlerPlugin|
|Version|1.3.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|embed an 'edit' link in tiddler content to invoke edit on any specified tiddler title|
!!!!!Usage
<<<
{{{
<<editTiddler TiddlerName label>>
}}}
*''~TiddlerName''<br>the title of the tiddler to edit (omit or use the keyword 'here' for current //containing// tiddler)
*''label''<br>command link text (default="edit")
The plugin also adds ''ctrl-enter'' as a ''keyboard shortcut to start editing'' the current //selected// tiddler (the one with an active toolbar menu)
<<<
!!!!!Revisions
<<<
2009.08.15 1.3.1 in shortcut, invoke editTiddler command handler (sets focus and custom fields)
2009.08.14 1.3.0 added CTRL-ENTER keyboard shortcut to invoke edit for 'selected' tiddlers
2007.03.22 1.2.0 added 'here' keyword and optional 2nd param to specify label text
2007.03.15 1.1.1 fixed 'get tiddler ID' logic so it actually works! D'oh!
2007.03.11 1.1.0 changed 'get tiddler ID' logic so that macro can be used outside a tiddler (i.e., in mainMenu) by specifying the ID
2006.10.04 1.0.1 invoke findContainingTiddler() as fallback when 'tiddler' param is null
2006.04.28 1.0.0 Initial release
<<<
!!!Code
***/
//{{{
version.extensions.EditTiddlerPlugin={major:1, minor:3, revision:1, date: new Date(2009,8,15)};
config.macros.editTiddler={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tid=params.shift(); // use specified tiddler ID (or "here")
if (!tid || tid=="here") {
var here=story.findContainingTiddler(place);
if (!here) return; // not in a tiddler, do nothing
tid=here.getAttribute('tiddler'); // get ID from tiddler element
}
var label="edit"; if (params[0]) label=params.shift();
createTiddlyButton(place,label,'edit tiddler: '+tid,this.onclick).setAttribute('which',tid);
},
onclick: function(e) {
story.displayTiddler(null,this.getAttribute('which'),DEFAULT_EDIT_TEMPLATE);
}
}
//}}}
//{{{
addEvent(document,'keypress', function(ev) { var ev=ev||window.event;
if (!ev.ctrlKey || ev.keyCode!=13) return; // CTRL-ENTER = edit tiddler
story.forEachTiddler(function(title,tiddler){
if (hasClass(tiddler,'selected') && !story.isDirty(title))
config.commands.editTiddler.handler(ev,null,title);
});
return false;
});
//}}}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
*[[Computer Vision Online|http://www.computervisiononline.com]]
*[[Ground truth|http://www.cs.rug.nl/~imaging/databases/retina_database]] data of vascular bifurcations in retinal fundus images of the DRIVE data set.
<script>
window.sec=1000; // global abbreviation - default multiplier for speed control
window.step=10; // global abbreviation - time between items
var here=story.findContainingTiddler(place); if (!here) return;
var tid=here.getAttribute("tiddler");
setTimeout("story.closeAllTiddlers('"+tid+"')",1);
</script>/%
%/{{hidden{
!!!Show
/%
Usage: <<tiddler FeaturedTiddlers##Show with: TiddlerName Description Delay Duration Direction>>
%/{{span{[[$1]]:
{{smaller{$2}}}/%
%/<<animate = "$5" %0% 100 0 {{"$3"*1000}} 1500 2 {{"$4"*1000-3000}}>>/%
%/<<animate = +fontSize %0% 0 100 {{"$3"*1000}} 500 2 {{"$4"*1000-1000}}>>/%
%/}}}/%
%/{{hidden{<<tiddler SlideshowTimer with: [[$1]] {{"$3"*1+1}}>>}}}
!!!end Show
}}}/%
<<tiddler MoveTiddlerToTop>>/%
%/<<tiddler HideTiddlerTags>>/%
%/<<tiddler HideTiddlerBackground>>/%
%/<<tiddler HideTiddlerSubtitle>>/%
%/{{selected{{{toolbar fine{
{{fine{<<tiddler SlideshowTimer with: Welcome {{6+step*13}}>> }}}/%
%/<<tiddler ToggleFullScreen with: fullscreen restore>>/%
%/<<tiddler RefreshTiddler with: replay>>/%
%/<script label="stop">
var here=story.findContainingTiddler(place); if (!here) return;
story.closeTiddler(here.getAttribute("tiddler"));
story.displayTiddler(null,"Welcome"); story.refreshTiddler("Welcome",null,true);
return false;
</script>/%
%/}}}}}}/%
%/<html><hide linebreaks><embed src='midi/marslove.mid'
width=100 height=16 autostart='true' autoplay='true'>
</embed></html>/%
BANNER MESSAGE [0:00-0:10]
%/{{big center italic{
{{gray{<<animate div "TiddlyTools presents...<br><br>" fontSize %0% 0 70 0 {{.1*step*sec}} 2 {{.7*step*sec}}>>}}}/%
%/{{blue{<<animate div "Small Tools" fontSize %0% 0 100 {{.1*step*sec}} {{.1*step*sec}} 2 {{.8*step*sec}}>>}}}/%
%/{{gray{<<animate div "for" fontSize %0% 0 50 {{.2*step*sec}} {{.05*step*sec}} 2 {{.6*step*sec}}>>}}}/%
%/{{green{<<animate div "''BIG Ideas!''" fontSize %0% 0 300 {{.3*step*sec}} {{.1*step*sec}} 2 {{.7*step*sec}}>>}}}/%
%/{{span italic normal bold{
//You can install these tools -- and many other TiddlyTools plugins,
scripts, packages, template, themes, etc. -- to customize //YOUR// TiddlyWiki documents!!///%
%/<<animate = fontSize %0% 0 100 {{.5*step*sec}} {{.15*step*sec}} 2 {{.4*step*sec}}>>/%
%/}}}/%
%/<<tiddler FeaturedTiddlers##Show Tiddler with: MiniBrowser
"Browser-in-browser with favorites list<br>transparently supports embedded media players<br>for Windows, Real, Quicktime and Flash"
{{2+step*1}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: FAQViewer
"Helpful articles with TiddlyWiki tips, tricks, tech notes, etc.<br>select by tag keyword or full text search..."
{{2+step*2}} {{step}} right>>/%
%/<<tiddler FeaturedTiddlers##Show with: RecentChanges
"View a droplist of recently changed tiddlers,<br>select a tiddler to goto, edit, or preview it's content"
{{2+step*3}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: TicketTracker
"Check trac.tiddlywiki.org for the latest TiddlyWiki development status<br>Submit bug reports and feature requests.<br>Review the 'roadmap' for future releases."
{{2+step*4}} {{step}} right>>/%
%/<<tiddler FeaturedTiddlers##Show with: MatchTags
"Use Boolean tag expressions<br>(AND, OR, NOT, with parentheses)<br>to find tiddlers with specific tag combinations"
{{2+step*5}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: CompareTiddlers
"word-by-word comparison of any two tiddlers<br>with side-by-side, color-coded display of differences"
{{2+step*6}} {{step}} right>>/%
%/<<tiddler FeaturedTiddlers##Show with: SplitTiddler
"Separate large blocks of text into separate tiddlers"
{{2+step*7}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: CookieManager
"View and modify your TiddlyWiki personal settings<br>Update or reset checkbox and text options<br>'bake' cookies for 'sticky' settings"
{{2+step*8}} {{step}} right>>/%
%/<<tiddler FeaturedTiddlers##Show with: QuickEditToolbar
"Quickly insert links, files, etc.<br>Add common TiddlyWiki formatting syntax with one click<br>Interactive controls for incremental FIND/REPLACE<br>"
{{2+step*9}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: TiddlerTweaker
"Select/modify internal tiddler values for multiple tiddlers at one time!<br>Change tiddler title, author, dates, etc.<br>Add, remove, replace tags on selected tiddlers with just one click!"
{{2+step*10}} {{step}} right>>/%
%/<<tiddler FeaturedTiddlers##Show with: SystemInfo
"Examine TiddlyWiki system internals<br>View shadows, stylesheets, toolbars, macros, formatters, and more!"
{{2+step*11}} {{step}} left>>/%
%/<<tiddler FeaturedTiddlers##Show with: RollText
"Display horizontally scrolling messages<br>using 'zoom in/zoom out' text animation effects"
{{2+step*12}} {{step}} right>>/%
%/}}}
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<html>
<center>
<iframe src="result.html" frameborder=no scrolling=no width="100%" height="50"></iframe>
</center>
</html>
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'geazzo'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place);
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place);
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place);
}}
});
//}}}
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // there is script code
if (show) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place){"+fixup+"\n};_out(this);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run inline script code
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place){"+fixup+"\n};_out(w.output);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for InlineJavascriptPlugin|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.
<script show>
/* javascript code goes here... */
</script>Every time the tiddler content is rendered, the javascript code is automatically evaluated, allowing you to invoke 'side-effect' processing and/or produce dynamically-generated content that is then inserted into the tiddler content, immediately following the script (see below). By including the optional ''show'' keyword as the final parameter in a {{{<script>}}} marker, the plugin will also include the script source code in the output that it displays in the tiddler. This is helpful when creating examples for documentation purposes (such as used in this tiddler!)
__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
/* javascript code goes here... */
alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).
__''Loading scripts from external source files''__
<script src="URL" show>
/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers. This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu. For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines.
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu. However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//. In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.
''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax. To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script. If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered. You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.'' This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script. To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.'' This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!! To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).
Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script. As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,'' and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
document.write("The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).getAttribute("tiddler");
var size=store.getTiddlerText(title).length;
return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
document.write("<br>The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
if (!window.story) window.story=window;
var txt=place.firstChild.data;
var tid=story.findContainingTiddler(place).getAttribute('tiddler');
alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
2008.06.11 [1.9.3] added $(...) function as 'shorthand' for document.getElementById()
2008.03.03 [1.9.2] corrected fallback declaration of wikifyPlainText() (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' (fixes IE errors)
2008.02.21 [1.9.0] output from 'onclick' scripts (return value or document.write() calls) are now buffered and rendered into into a span following the script. Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed). Thanks to Xavier Verges for suggestion and preliminary code.
2008.02.14 [1.8.1] added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 [1.8.0] added support for key="X" syntax to specify custom access key definitions
2007.12.15 [1.7.0] autogenerate URI encoded HREF on links for onclick scripts. Drag links to browser toolbar to create bookmarklets. IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets. In addition, double-quotes will cause syntax errors. Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 [1.6.2] when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 [1.6.1] when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 [1.6.0] added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 [1.5.2] add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
2006.06.01 [1.5.1] when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 [1.5.0] added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 [1.4.0] added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
2005.12.13 [1.3.1] when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
2005.11.09 [1.3.0] for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
2005.11.08 [1.2.0] handle loading of javascript from an external URL via src="..." syntax
2005.11.08 [1.1.0] pass 'place' param into scripts to provide direct DOM access
2005.11.08 [1.0.0] initial release
<<<
<html>
<img src="george.jpg" alt="George Azzopardi" width="100%"/>
</html>
[[Home|Welcome]]
[[Personal]]
[[Awards]]
[[Research Activities]]
[[Student Projects]]
[[Downloads]]
[[External Links]]
[[Photo Albums]]
[[My Campus]]
[[Contact]]
<html>
<a href="http://nl.linkedin.com/in/georgeazzopardi" >
<img src="http://www.linkedin.com/img/webpromo/btn_viewmy_120x33.png" width="120" height="33" border="0" alt="View George Azzopardi's profile on LinkedIn">
</a>
<p>
<a href="http://www.facebook.com/group.php?gid=42491699789&ref=ts" target="_blank">
<img src="facebook.jpg" alt="Join Computer Vision PhD Students Group on Facebook" width="130"/>
</a>
</html>
<!--{{{-->
<script> // See StorySaverPlugin for more info
if (window.coreTweaks_getParameters==undefined) {
window.coreTweaks_getParameters=window.getParameters;
window.getParameters=function() {
var p=window.coreTweaks_getParameters.apply(this,arguments);
if (!p) {
var cookies = document.cookie.split("; ");
for (var c=0; c<cookies.length; c++) {
var name=cookies[c].split("=")[0]; var value=cookies[c].split("=")[1];
if (name=="txtSavedStory" && value.length) p=unescape(value);
}
}
return p;
}
}
</script>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
<!--}}}-->
You are kindly invited to use the <html><a href="CORF.zip">Matlab script</a></html> of the CORF contour operator for academic purposes.
The following is an example of an input image, which is processed by the Matlab script of the CORF contour operator. The input image is taken from the publicly available [[RuG|http://www.cs.rug.nl/~imaging/databases/contour_database/contour_database.html]] data set
{{centeredTable{
| <html><a href="elephant_2.png" target="_blank"><img src="elephant_2.png" width=150></a></html> | <html><a href="CORFoutput.png" target="_blank"><img src="CORFoutput.png" width=150></a></html> | <html><a href="CORFContour.png" target="_blank"><img src="CORFContour.png" width=150></a></html> |
| Input image | CORF output | Resulting contour |
|borderless|k
}}}
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>This movie clip gives a nice overview of Bernoulliborg Building part of Zernike Complex at University of Groningen.
<html>
<div id="movie" align="center">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/sSYFEG8wHJE&color1=0xb1b1b1&color2=0xcfcfcf&hl=nl&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/sSYFEG8wHJE&color1=0xb1b1b1&color2=0xcfcfcf&hl=nl&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></div>
</html>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>G. Azzopardi and K. P. Camilleri, "Offline Handwritten Signature Verification using Radial Basis Function Neural Networks", in //WICT//, Malta, 2008.
[[[abstract]|Offline Handwritten Signature Verification using Radial Basis Function Neural Networks]], <html><a href="https://www.um.edu.mt/__data/assets/pdf_file/0006/51756/wict08_submission_24.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 2]], <html><a href="WICT_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, <html><a href="WICT Presentation.ppt" target="_blank"><b>[presentation]</b></a></html>, [[[Photos]|Photo Albums]].
!Abstract
This study investigates the e®ectiveness of Radial Basis Function Neural Networks <html>(RBFNNs)</html> for Offine Handwritten Signature Verification (OHSV). A signature database is collected using intrapersonal variations for evaluation. Global, grid and texture features are used as feature sets. A number of experiments were carried out to compare the effectiveness of each separate set and their combination. The system is extensively tested with random signature forgeries and the high recognition rates obtained demonstrate the e®ectiveness of the architecture. The best results are obtained when global and grid features are combined producing a feature vector of 592 elements. In this case a Mean Error Rate (MER) of 2.04% with a False Rejection Rate (FRR) of 1.58% and a False Acceptance Rate (FAR) of 2.5% are achieved, which are generally better than those reported in the literature.
<html><p><img src="http://c.statcounter.com/4581442/0/f59e4051/0/"></p></html>
<script src="./swfobject.js"></script>
<html>
<div id="flashcontent" align="center">SimpleViewer requires Macromedia Flash. <a href="http://www.macromedia.com/go/getflashplayer/">Get Macromedia Flash.</a> If you have Flash installed, <a href="index.html?detectflash=false">click to view gallery</a></div>
</html>
<script src="./swfobject.js">
var fo = new SWFObject("./viewer.swf", "viewer", "700", "500", "6", "#181818");
fo.addVariable("xmlDataPath", "./photos/chowchow/gallery.xml");
fo.addParam("quality", "best");
fo.write("flashcontent");
</script>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
|''Nationality:''|[[Malta|http://en.wikipedia.org/wiki/Malta]] >> view [[Photos|Photo Albums]]|
|''Town where I grew up:''|[[Qormi|http://en.wikipedia.org/wiki/Qormi]]|
|''Status:''|Married to [[Charmaine Borg|http://www.gmw.rug.nl/~charmaine]]|
|''Responsible For:''|Okker, a [[Chow Chow|http://en.wikipedia.org/wiki/Chow_chow]] ginger smooth hair male dog. [[[Photos]|Photo Albums]]|
|borderless|k
<html>
<center>
<b>Cities that I have visited</b>
<div id="tamap_init" style="font: 14px arial, sans; color: #2B2B2B">
<img id="tamap_img" src="http://www.tripadvisor.com/CommunityMapImage?id=D9E0AB2501AA7FCDB19D14BA46069CF6&type=GUID&size=LARGE">
</div>
<script src="http://www.tripadvisor.com/MemberTravelMap?a=EMBED&mode=js&id=gD9E0AB2501AA7FCDB19D14BA46069CF6&want=map,favorites"></script>
</center>
</html>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script><html>
<center>
<iframe src="picasaViewer.html" frameborder=no scrolling=yes width="100%" height="600"></iframe>
</center>
<!--
*[[The Beauty of Malta]]
*[[Our Chow Chow dog]]
*[[Wedding]]
<script src="./swfobject.js"></script>
-->
</html>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
!Journal Papers
*G. Azzopardi and N. Petkov, "Trainable COSFIRE filters for keypoint detection and pattern recognition", //IEEE Transactions on Pattern Analysis and Machine Intelligence//, in print, 2012, DOI:10.1109/TPAMI.2012.106. <html><a href="http://www.computer.org/csdl/trans/tp/preprint/ttp2012990070-abs.html" target="_blank"><b>[abstract]</b></a></html><html><br><br></html>
*G. Azzopardi and N. Petkov, "A CORF computational model of a simple cell outperforms the Gabor function model", //Biological Cybernetics//, vol. 106(3), pp. 177-189, 2012, DOI: 10.1007/s00422-012-0486-6. [[[abstract]|A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model]], <html><a href="http://www.springerlink.com/content/428721k4l2816m43/fulltext.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 1]], [[[matlab script]|A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model]]
!Conferences
*G. Azzopardi and N. Petkov, "Detection of Retinal Vascular Bifurcations by Trainable <html>V4-Like</html> Filters", [[CAIP|http://congreso.us.es/caip2011/]], Seville, Spain, Aug 2011. [[[abstract]|Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters]], <html><a href="http://www.cs.rug.nl/~imaging/databases/retina_database/CAIP2011.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 4]], <html><a href="BMVA_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, [[[presentation]|Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters]], <html><a href="http://www.cs.rug.nl/~imaging/databases/retina_database" title="Ground truth data of vascular bifurcations" target="_blank"><b>[ground truth data]</b></a></html>, <html><a href="http://matlabserver.cs.rug.nl:8080/RetinalVascularBifurcations/index.html" title="Interactive web application" target="_blank"><b>[web application]</b></a></html>, [[[photos]|Photo Albums]].<html><br><br></html>
*G. Azzopardi and N. Petkov, "V4-like filters applied to the detection of retinal vascular bifurcations", [[AVA/BMVA Meeting on Biological and Computer Vision|http://psych.cf.ac.uk/ava_bmva/]], School of Psychology, Cardiff University, Wales, May 2011. [[[abstract]|V4-like filters applied to the detection of retinal vascular bifurcations]], <html><a href="BMVA_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, [[[photos]|Photo Albums]].<html><br><br></html>
*G. Azzopardi and F. Smeraldi, "Variance Ranklets: orientation-selective rank features for contrast modulations", in //BMVC// Queen Mary, London UK, 2009. [[[abstract]|Variance Ranklets: orientation-selective rank features for contrast modulations]], <html><a href="BMVC2009.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 3]], <html><a href="posterBMVC.bmp" target="_blank"><b>[poster]</b></a></html>, <html><a href="WICT Presentation.ppt" target="_blank"><b>[presentation]</b></a></html>, <html><a href="http://en.wikipedia.org/wiki/Ranklet" target="_blank" title="Wikipedia article on Ranklets"><b>[Wikipedia]</b></a></html>, [[[matlab script]|Variance Ranklets: orientation-selective rank features for contrast modulations]], [[[photos]|Photo Albums]].<html><br><br></html>
*G. Azzopardi and K. P. Camilleri, "Offline Handwritten Signature Verification using Radial Basis Function Neural Networks", in //WICT//, Malta, 2008. [[[abstract]|Offline Handwritten Signature Verification using Radial Basis Function Neural Networks]], <html><a href="https://www.um.edu.mt/__data/assets/pdf_file/0006/51756/wict08_submission_24.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 2]], <html><a href="WICT_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, <html><a href="WICT Presentation.ppt" target="_blank"><b>[presentation]</b></a></html>, [[[photos]|Photo Albums]].<html><br><br></html><html><br><br></html>
!Organized Seminars
*<html><b>Supercomputers and Brain-Inspired Machine Vision</b></html>, [[St. Martin's Institute|http://www.stmartins.edu/]], Malta: 10th April 2012. <html><a href="http://www.stmartins.edu/newsitem.jsp?k=334" target="_blank"><b>[advert]</b></a></html>, [[[video]|Supercomputers and Brain-Inspired Machine Vision]], [[[photos]|Photo Albums]]
**"Computational models of the visual system", [[Prof. Dr. Nicolai Petkov|http://www.cs.rug.nl/~petkov]]
**"Brain-inspired algorithms for computer vision", George Azzopardi
**"Supercomputers: the road to exascale computing", [[Prof. Dr. Dr. Thomas Lippert|http://www2.fz-juelich.de/jsc/JSCPeople/lippert/vita]]<html><br><br></html>
*''Robot Intelligence: How do robots //learn// and //see//?'', [[St. Martin's Institute|http://www.stmartins.edu/]], Malta: 14th April 2011. [[[photos]|Photo Albums]]
**"Contour detection by surround suppression of texture", [[Prof. Dr. Nicolai Petkov|http://www.cs.rug.nl/~petkov]]
**"Matrix Relevance Learning: basic concepts and applications in medicine", [[Prof. Dr. Michael Biehl|http://www.cs.rug.nl/~biehl/]]
**"Trainable V4-like filters for the detection of vascular bifurcations in retinal images", George Azzopardi
!Talks
*A Lecture called "Brain-inspired computer vision: what comes beyond V2 in visual cortex?" as part of the [[ASCI course a8: Front-End Vision and Multi-Scale Image Analysis|http://bmia.bmt.tue.nl/Education/Courses/FEV/course/index2011-a8.html]], [[Technische Universiteit Eindhoven (TU/e)|http://www.tue.nl]], Autumn 2011. <html><a href="http://videocollege.tue.nl/mediasite/SilverlightPlayer/Default.aspx?peid=6db22732e8a14c298ddeb93314fffb711d" title="online streamed lecture" target="_blank"><b>[lecture]</b></a><br><br></html>
*[["Automatic detection of retinal vascular bifurcations by trainable V4-like filters"|NVPHBV2011.pdf]], Spring 2011 Meeting of the [[NVPHBV|http://www.nvphbv.nl/]], Utrecht, The Netherlands, April 2011.<html><br><br></html>
*Invited Talk by the [[British Computer Science|http://www.bcs.org]] (BCS Essex branch), at [[Anglia Ruskin University|http://www.anglia.ac.uk/ruskin/en/home.html]] in Chelmsford, Essex UK. Title: [[Biologically Motivated Pattern Recognition|http://www.bcs.org/content/conWebDoc/38693]], 15<html><sup>th</sup></html> March 2011. [[[photos]|Photo Albums]]
!Summer Schools
*[[ICVSS - International Computer Vision Summer School|http://svg.dmi.unict.it/icvss2011/]], Siracusa, Sicily: 11-16<html><sup>th</sup></html> July 2011. <html><a href="ICVSS2011_Poster.pdf" title="Download Poster" target="_blank"><b>[poster]</b></a></html>, [[[photos]|Photo Albums]]<html><br><br></html>
*[[AERFAI Summer School on Pattern Recognition and Machine Learning in Multimedia Systems|http://www.aerfaiss2010.uji.es/index.html]], Benicassim, Spain: 7-11<html><sup>th</sup></html> June 2010. [[[photos]|Photo Albums]]
/***
|Name|RunTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#RunTiddlerPlugin|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|command to invoke tiddler content as if tagged with systemConfig (i.e., a plugin)|
!!!!!Usage/Example
<<<
Toolbar command:
>{{{<<toolbar runTiddler>>}}} (in tiddler content)
>{{{<span class='toolbar' macro='toolbar runTiddler'></span>}}} (in ViewTemplate definition)
><<toolbar runTiddler>>
>when clicked, invokes the current tiddler as javascript code
Macro function:
>{{{<<runTiddler TiddlerName>>}}} or {{{<<runTiddler TiddlerName label tip>>}}}
>if only a TiddlerName is provided, the specified tiddler is automatically invoked as javascript code as soon as the macro is rendered. If //optional// ''label'' and ''tip'' parameters are present, a command link is created that, when clicked, invokes the specified tiddler as javascript code.
<<<
!!!!!Revisions
<<<
2008.09.01 [1.2.1] fixed return value from command handler to prevent IE from attempt to leave the page
2008.08.26 [1.2.0] added optional label and tooltip params to macro (creates 'onclick' button to invoke specified tiddler)
2008.08.26 [1.1.0] added {{{<<runTiddler TiddlerName>>}}} macro to invoke specified tiddler
2007.09.27 [1.0.0] toolbar command based on run button functionality from TidIDEPlugin
<<<
!!!!!Code
***/
//{{{
version.extensions.RunTiddlerPlugin= {major: 1, minor: 2, revision: 1, date: new Date(2008,9,1)};
//}}}
//{{{
config.commands.runTiddler = {
text: 'run',
tooltip: 'evaluate tiddler content as systemConfig (plugin) javascript code',
warning: "Warning!! Processing '%0' as a systemConfig (plugin) tiddler may produce unexpected results! Are you sure you want to proceed?",
completed: "%0: Processing completed",
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
return this.invoke(here.getAttribute("tiddler"),true,false);
},
invoke: function(tid,ask,quiet) {
if (ask && !confirm(this.warning.format([tid]))) return false;
var text=store.getTiddlerText(tid); if (!text) return false;
try { window.eval(text); if (!quiet) displayMessage(config.commands.runTiddler.completed.format([tid])); }
catch(ex) { displayMessage(config.messages.pluginError.format([exceptionText(ex)])); }
return false;
}
};
//}}}
//{{{
config.macros.runTiddler = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tid=params[0];
var label=params[1];
var tip=params[2]||config.commands.runTiddler.tooltip;
if (!label) config.commands.runTiddler.invoke(tid,false,true);
else createTiddlyButton(place,label,tip,function(){
return config.commands.runTiddler.invoke(this.getAttribute("tid"),true,false);
},"button").setAttribute("tid",tid);
}
}
//}}}
/%
!info
|Name|SetTiddlerBackground|
|Source|http://www.TiddlyTools.com/#SetTiddlerBackground|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|transclusion|
|Description|set tiddler background and font color CSS attributes|
Usage
<<<
{{{
<<tiddler SetTiddlerBackground with: bgstyle fgstyle matchtag class>>
}}}
*''bgstyle'' and ''fgstyle'' (optional, but specify at least one)<br>are CSS background style attributes (most often color values, e.g., #rgb or #rrggbb)
*''matchtag'' (optional)<br>is a tag value that allows selective control of tiddler background/foreground colors
*''class'' (optional)<br>is the class of the tiddler element to which the fgstyle/bgstyle will be applied Default is 'viewer'. Use 'title' to set the background of the tiddler's 'title' area instead of its 'viewer' area.
The bgstyle and fgstyle assignments are only performed if the tiddler has the matching tag (or if no matchtag value is specified). Also, to set either bgstyle or fgstyle (but not both), you can use a dash ('-') as a placeholder for the value you do NOT want to set. For example:
{{{
<<tiddler SetTiddlerBackground with: #F00 - urgent>>
}}}
sets the bgstyle (but NOT the fgstyle) to RED for only those tiddlers tagged with 'urgent'. Also, note that in that instead of using #RGB color definitions, you can also use CSS color keywords (i.e., 'red', 'yellow', 'green') or *any* other valid CSS value that can be applied to the 'background' style attribute. For example, to use a background image for any tiddler tagged with 'wallpaper', you can write:
{{{
<<tiddler SetTiddlerBackground with: url("images/bg.jpg") - wallpaper>>
}}}
You can use this script several times in a row to define a set of tag-to-color mappings, stored in a *single* convenient tiddler (e.g, [[BackgroundColors]]), containing something like this:
{{{
<<tiddler SetTiddlerBackground with: red - urgent>>
<<tiddler SetTiddlerBackground with: yellow - active>>
<<tiddler SetTiddlerBackground with: green - done>>
}}}
To apply the set of tag-based color mappings, embed:
{{{
<<tiddler BackgroundColors>> (in tiddler content) OR
<span macro='tiddler BackgroundColors' style='display:none'></span> (in ViewTemplate, for all tiddlers)
}}}
and then set the desired tag value(s) onto specific tiddlers. To add more color mappings, just edit the [[BackgroundColors]] tiddler and then start tagging tiddlers accordingly.
<<<
!end
!show
<<tiddler {{
if ('$1'!='$'+'1' && '$1'!='-') var bg='$1';
if ('$2'!='$'+'2' && '$2'!='-') var fg='$2';
if ('$3'!='$'+'3' && '$3'!='-') var tag='$3';
if ('$4'!='$'+'4' && '$4'!='-') var c='$4'; else var c='viewer';
var here=story.findContainingTiddler(place);
var t=store.getTiddler(here?here.getAttribute('tiddler'):'');
if (!tag||t&&t.isTagged(tag)) {
var e=here;
if (c!='tiddler') {
var elems=e.getElementsByTagName('*');
for (var i=0; i<elems.length; i++)
if (hasClass(elems[i],c)) { var e=elems[i]; break; }
}
if (e&&bg) { e.style.backgroundImage='none'; e.style.background=bg; }
if (e&&fg) { e.style.color=fg; }
}
'';}}>>
!end
%/<<tiddler {{var src='SetTiddlerBackground'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: [[$1]] [[$2]] [[$3]] [[$4]]>>
/%
!info
|Name|ShowTiddlerStatistics|
|Source|http://www.TiddlyTools.com/#ShowTiddlerStatistics|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion |
|Description|display document summary / tiddler stats (newest, oldest, largest, smallest, etc.)|
Usage
<<<
{{{
<<tiddler ShowTiddlerStatistics>>
}}}
!end
!show
{{nowrap{
$1
}}}
!end
!summary
{{fine{There are ''%0 tiddlers'', including:''<<tag systemConfig [[%1 plugins]]>>''+''<<tag transclusion [[%2 transclusions]]>>''(%3 total bytes)}}}
!end
!table
|borderless|k
| last change: |[[%0]] {{fine{(updated %1)}}}|
| newest: |[[%2]] {{fine{(created %3)}}}|
| oldest: |[[%4]] {{fine{(created %5)}}}|
| smallest: |[[%6]] {{fine{(%7 bytes)}}}|
| largest: |[[%8]] {{fine{(%9 bytes)}}}|
!end
%/<<tiddler ShowTiddlerStatistics##show with: {{
var tiddlers=store.getTiddlers("modified","excludeLists");
var last=tiddlers[tiddlers.length-1];
var total=oldest=newest=smallest=largest=0;
for (var i=0; i<tiddlers.length; i++) {
total+=tiddlers[i].text.length;
if (!oldest || tiddlers[i].created<oldest)
{ var oldest=tiddlers[i].created; var oldtid=tiddlers[i]; }
if (!newest || tiddlers[i].created>newest)
{ var newest=tiddlers[i].created; var newtid=tiddlers[i]; }
if (!smallest || tiddlers[i].text.length<smallest)
{ var smallest=tiddlers[i].text.length; var smalltid=tiddlers[i]; }
if (!largest || tiddlers[i].text.length>largest)
{ var largest=tiddlers[i].text.length; var largetid=tiddlers[i]; }
}
var out=store.getTiddlerText("ShowTiddlerStatistics##summary").format([
tiddlers.length,
store.getTaggedTiddlers("systemConfig").length,
store.getTaggedTiddlers("transclusion").length,
total]);
out+='\n'+store.getTiddlerText("ShowTiddlerStatistics##table").format([
last.title, last.modified.formatString("MMM DDth YYYY, 0hh:0mm"),
newtid.title, newtid.created.formatString("MMM DDth YYYY, 0hh:0mm"),
oldtid.title, oldtid.created.formatString("MMM DDth YYYY, 0hh:0mm"),
smalltid.title, smalltid.text.length,
largetid.title, largetid.text.length]);
out;
}}>>
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release. Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
//}}}
//{{{
config.options.chkSinglePageMode=true;
config.options.chkSinglePagePermalink=true;
config.paramifiers.SPM = { onstart: function(v) {
config.options.chkSinglePageMode=eval(v);
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
config.lastURL = window.location.hash;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash) return; // no change in hash
var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
if (tids.length==1) // permalink (single tiddler in URL)
story.displayTiddler(null,tids[0]);
else { // restore permaview or default view
config.lastURL = window.location.hash;
if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
story.closeAllTiddlers();
story.displayTiddlers(null,tids);
}
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
var opt=config.options;
var single=opt.chkSinglePageMode && !startingUp;
var top=opt.chkTopOfPageMode && !startingUp;
var bottom=opt.chkBottomOfPageMode && !startingUp;
if (single) {
story.forEachTiddler(function(tid,elem) {
// skip current tiddler and, optionally, tiddlers that are folded.
if ( tid==title
|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
return;
// if a tiddler is being edited, ask before closing
if (elem.getAttribute("dirty")=="true") {
if (opt.chkSinglePageKeepEditedTiddlers) return;
// if tiddler to be displayed is already shown, then leave active tiddler editor as is
// (occurs when switching between view and edit modes)
if (tiddlerElem) return;
// otherwise, ask for permission
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (!confirm(msg)) return; else story.saveTiddler(tid);
}
story.closeTiddler(tid);
});
}
else if (top)
arguments[0]=null;
else if (bottom)
arguments[0]="bottom";
if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
var isTopTiddler=(tiddlerElem.previousSibling==null);
if (!isTopTiddler && (single || top))
tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
else if (bottom)
tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
} else
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=story.getTiddler(title);
if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
// scroll to top of page or top of tiddler
var isTopTiddler=(tiddlerElem.previousSibling==null);
var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
// if animating, defer scroll until after animation completes
var delay=opt.chkAnimate?config.animDuration+10:0;
setTimeout("window.scrollTo(0,"+yPos+")",delay);
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
// suspend single/top/bottom modes when showing multiple tiddlers
var opt=config.options;
var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
opt.chkBottomOfPageMode=saveBPM;
opt.chkTopOfPageMode=saveTPM;
opt.chkSinglePageMode=saveSPM;
}
//}}}
/***
|Name|SinglePageModePluginInfo|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing. SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title. The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler. Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false. This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
{{{#SPM:config.options.txtUserName!="SomeName"}}}
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
2008.06.12 2.9.5 corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 2.9.4 added chkSinglePageKeepEditedTiddlers option
2008.06.05 2.9.3 in displayTiddler(), bypass single/top/bottom mode handling if startingUp. Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 2.9.2 in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 2.9.1 don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 2.9.0 in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 2.8.3 in displayTiddler(), get title from tiddler object (if needed). Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.14 2.8.2 in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 2.8.1 in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 2.8.0 added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode. Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 2.7.0 added support for "SPM:" URL paramifier
2008.03.01 2.6.0 in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed. Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 2.5.3 in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 2.5.2 documentation cleanup
2007.10.08 2.5.1 in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 2.5.0 for TPM/BPM modes, don't force tiddler to redisplay if already shown. Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 2.4.0 added option to disable automatic permalink feature. Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 2.3.1 fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 2.3.0 added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 2.2.3 in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 2.2.2 use apply() to invoke hijacked core functions
2006.07.04 2.2.1 in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 2.2.0 added chkTopOfPageMode (TPM) handling
2006.02.04 2.1.1 moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.27 2.1.0 hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list). Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 2.0.0 Update for TW2.0
2005.11.24 1.1.2 When the back and forward buttons are used, the page now changes to match the URL. Based on code added by Clint Checketts
2005.10.14 1.1.1 permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 1.1.0 added automatic setting of window title and location bar ('auto-permalink'). feature suggestion by David Dickens.
2005.10.09 1.0.1 combined documentation and code in a single tiddler
2005.08.15 1.0.0 Initial Release
<<<
Home Page<<tiddler ToggleRightSidebar with: ".">>
Johann Bernoulli Institute for Mathematics and Computer Science, ''University of Groningen''
<html>
<a href="http://www.rug.nl" target="_blank">
<img src="rug.gif" alt="University of Groningen"/>
</a>
</html> George Azzopardi
http://www.TiddlyTools.com/
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>We have two interesting projects for Master's students. They are excellent opportunities for the selected candidates to get acquainted with an important medical application and some advanced image processing techniques, and also to gain some experience in the implementation of a web application.
You can find more detail by clicking on the following link: [[Computer Vision Projects|http://www.cs.rug.nl/is/Research/Students]]
.viewer table.borderless,.viewer table.borderless * {border: 0;vertical-align:top;}
.viewer div.centeredTable {
text-align: center;
}
.viewer div.centeredTable table {
margin: 0 auto;
text-align: left;
}
.viewer {
background:#D9ECFF;
padding: 1em;
text-align: justify;
}
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}
h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
.tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}
#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}
#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.tiddler .defaultCommand {font-weight:bold;}
.shadow .title {color:[[ColorPalette::TertiaryDark]];}
.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}
.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}
.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}
.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}
.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}
.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
.imageLink, #displayArea .imageLink {background:transparent;}
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:1em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:1em 0em 1em 1em; left:0px; top:0px;}
.siteTitle {font-size:3em;text-align:right;}
.siteSubtitle {font-size:1.2em; text-align:right;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:1px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0em 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0em 1em;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}
.sparkline {line-height:1em;}
.sparktick {outline:0;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>
*<html>Seminar: <b>Supercomputers and Brain-Inspired Machine Vision</b></html>, [[St. Martin's Institute|http://www.stmartins.edu/]], Malta: 10th April 2012. <html><a href="http://www.stmartins.edu/newsitem.jsp?k=334" target="_blank"><b>[advert]</b></a></html>, [[[video]|Supercomputers and Brain-Inspired Machine Vision]], [[[photos]|Photo Albums]]
**"Computational models of the visual system", [[Prof. Dr. Nicolai Petkov|http://www.cs.rug.nl/~petkov]]
**"Brain-inspired algorithms for computer vision", George Azzopardi
**"Supercomputers: the road to exascale computing", [[Prof. Dr. Dr. Thomas Lippert|http://www2.fz-juelich.de/jsc/JSCPeople/lippert/vita]]
<html>
<center>
<iframe width="420" height="315" src="http://www.youtube.com/embed/jpnmo9nQlmk" frameborder="0" allowfullscreen></iframe>
</center>
</html>
<script src="./swfobject.js"></script>
<html>
<div id="flashcontent" align="center">SimpleViewer requires Macromedia Flash. <a href="http://www.macromedia.com/go/getflashplayer/">Get Macromedia Flash.</a> If you have Flash installed, <a href="index.html?detectflash=false">click to view gallery</a></div>
</html>
<script>
var fo = new SWFObject("./viewer.swf", "viewer", "700", "500", "6", "#181818");
fo.addVariable("xmlDataPath", "./photos/malta/gallery.xml");
fo.addParam("quality", "best");
fo.write("flashcontent");
</script>
/%
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (MainMenu)|
Usage: <<tiddler ToggleRightSidebar with: "label">>
Config settings:
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
%/<script label="$1" title="show/hide right sidebar content">
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
co.chkShowRightSidebar=!co.chkShowRightSidebar;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
saveOptionCookie('chkShowRightSidebar');
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (typeof(place)!='undefined' && '$1'=='$'+'1') {
place.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
if ('$1'=='$'+'1') {
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
place.lastChild.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
</script>
|~ViewToolbar|closeTiddler closeOthers editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
|~ReadOnlyToolbar|closeTiddler closeOthers|
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>G. Azzopardi and N. Petkov, "V4-like filters applied to the detection of retinal vascular bifurcations", [[AVA/BMVA Meeting on Biological and Computer Vision|http://psych.cf.ac.uk/ava_bmva/]], School of Psychology, Cardiff University, Wales, May 2011.
[[[abstract]|V4-like filters applied to the detection of retinal vascular bifurcations]], <html><a href="http://www.theava.net/conf/index.php?conference=Meeting&schedConf=S2011&page=paper&op=view&path[]=228" target="_blank"><b>[abstract online]</b></a></html>, <html><a href="BMVA_Poster.pdf" target="_blank"><b>[poster]</b></a></html>, [[[Photos]|Photo Albums]].
!Abstract
We propose a computational model for shape-selective neurons in area V4 of visual cortex. Such neurons are known to respond to moderately complex stimuli that are local combinations of single-orientation stimuli. We implemented this model in filters that detect features which are composed of several lines of different orientations. The proposed filters are trainable, in that the specific feature to which such a filter responds is used to determine the structure of the filter. To configure such a filter we select given channels of a bank of Gabor filters and combine them using an <html>AND-gate-like</html> operation. Their selection is determined by the automatic analysis of a user-specified feature. Consequently, the configured filter responds to the same and similar patterns. We demonstrate the effectiveness of such filters by applying them on retinal fundus images to automatically detect the vascular bifurcations. The detection of such bifurcations is important for finding signs of various cardiovascular diseases. With only 25 filters we achieved a correct detection rate of 98.52% at a precision rate of 95.19% on 40 binary fundus images, containing above 5000 bifurcations manually annotated by the authors. Other authors (Bhuiyan et al, 2007, IEEE Conf. on <html>Signal-Image Technologies and Internet-Based Systems</html>, 711-718) report a detection rate of 95.82% on a smaller dataset of five retinal images. The novel automatic configuration gives an edge to our approach over other models regarding generalization ability. In principle, all vascular bifurcations can be detected if a sufficient number of filters are configured and used.
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>G. Azzopardi and F. Smeraldi, "Variance Ranklets: orientation-selective rank features for contrast modulations", in //BMVC// Queen Mary, London UK, 2009.
[[[abstract]|Variance Ranklets: orientation-selective rank features for contrast modulations]], <html><a href="BMVC2009.pdf" target="_blank"><b>[pdf]</b></a></html>, [[[bib]|Bibtex entry 3]], <html><a href="posterBMVC.bmp" target="_blank"><b>[poster]</b></a></html>, <html><a href="WICT Presentation.ppt" target="_blank"><b>[presentation]</b></a></html>, <html><a href="http://en.wikipedia.org/wiki/Ranklet" target="_blank" title="Wikipedia article on Ranklets"><b>[Wikipedia]</b></a></html>, [[[matlab script]|Variance Ranklets: orientation-selective rank features for contrast modulations]], [[[photos]|Photo Albums]].
!Abstract
We introduce a novel type of orientation–selective rank features that are sensitive to contrast modulations (second–order stimuli). Variance Ranklets are designed in close analogy with the standard Ranklets, but use the Siegel–Tukey statistics for dispersion instead of the Wilcoxon statistics. Their response shows the same orientation selectivity pattern of Haar wavelets on second–order signals that are not detectable by linear filters. To the best of our knowledge, this is the first family of rank filters designed to detect orientation in variance modulations. We validate our descriptors with an application to texture classification over a subset of the <html>VisTex</html> and Brodatz databases. The combination of standard (intensity) Ranklets with Variance Ranklets greatly improves on the performance of Ranklets alone. Comparison with other published results shows that state–of–the–art recognition rates can be achieved with a simple Nearest Neighbour classifier.
!Matlab script of the Ranklet operator
You are kindly invited to use the <html><a href="RankletFilter.m" target="_blank">Matlab script</a></html> of the Ranklet operator for academic purposes.
<!--{{{-->
<div macro="showWhen readOnly">
<!-- cut-down toolbar for web users -->
<!-- <div class='toolbar' macro='toolbar [[ToolbarCommands::ReadOnlyToolbar]]'></div>-->
<!--<div macro='toolbar |~ViewToolbar|closeTiddler permalink jump|'></div>-->
</div>
<div macro="hideWhen readOnly">
<!-- regular toolbar for me -->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
</div>
<!--<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>-->
<div class='title' macro='view title'></div>
<!--<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>-->
<div class='tagging' macro='tagging'></div>
<!--<div class='tagged' macro='tags'></div>-->
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<script>
var sc_project=4581442;
var sc_invisible=1;
var sc_security="f59e4051";
</script>
<script src="http://www.statcounter.com/counter/counter.js"></script>
<div class="statcounter"><a title="web stats"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/4581442/0/f59e4051/1/"
alt="web stats"></a></div>
<script src="./swfobject.js"></script>
<html>
<div id="flashcontent" align="center">SimpleViewer requires Macromedia Flash. <a href="http://www.macromedia.com/go/getflashplayer/">Get Macromedia Flash.</a> If you have Flash installed, <a href="index.html?detectflash=false">click to view gallery</a></div>
</html>
<script src="./swfobject.js">
var fo = new SWFObject("./viewer.swf", "viewer", "700", "500", "6", "#181818");
fo.addVariable("xmlDataPath", "./photos/wedding/gallery.xml");
fo.addParam("quality", "best");
fo.write("flashcontent");
</script>
<script>var sc_project=4581442;var sc_invisible=1;var sc_security="f59e4051";</script><script src="http://www.statcounter.com/counter/counter.js"></script>I am a <html>PhD</html> candidate at the [[Johann Bernoulli Institute for Mathematics and Computer Science|http://www.cs.rug.nl/jbi/]], University of Groningen, the Netherlands. I started my <html>PhD</html> studies in October 2008 under the supervision of [[Prof. Dr. Nicolai Petkov|http://www.cs.rug.nl/~petkov/]] within the [[Intelligent Systems|http://www.rug.nl/informatica/onderzoek/programmas/hpci/index]] group. My research interests are in the field of [[Pattern Recognition|http://en.wikipedia.org/wiki/Pattern_recognition]] including [[computational modelling|http://en.wikipedia.org/wiki/Computational_model]] of the visual system of the brain. In my studies, I am proposing brain-inspired algorithms for machine vision applications, which among others, include contour detection, segmentation, feature detection, shape recognition and retinal image analysis.
<html>
<center>
<b>"Do not go where the path may lead, go instead where there is no path and leave a trail."</b><br><i>Ralph Waldo Emerson</i>
</center>
</html>
!Research
''1. Detection of vascular bifurcations in retinal fundus images''
An algorithm inspired by the function of a specific type of shape-selective neuron in area [[V4|http://en.wikipedia.org/wiki/Visual_area_V4#V4]] of [[visual cortex|http://en.wikipedia.org/wiki/Visual_cortex]] is very effective in the detection of vascular bifurcations in [[retinal fundus images|http://en.wikipedia.org/wiki/Fundus_(eye)]]. [[more... |Detection of Retinal Vascular Bifurcations by Trainable V4-Like Filters]]
{{centeredTable{
|<html><center><a title="Retinal fundus image" href="Retina_Color_large.png" target="_blank"><img src="Retina_Color.png" border="1"></a></center></html>|<html><center><a title="Binary segmentation of the vessel tree" href="Retina_Segmented_large.png" target="_blank"><img src="Retina_Segmented.png" border="1"></a></center></html>|<html><center><a title="Detection of vascular bifurcations" href="Retina_Bifurcations_large.png" target="_blank"><img src="Retina_Bifurcations.png" border="1"></a></center></html>|
|<html><center><font face="arial" size="2">(a)</font></center></html>|<html><center><font face="arial" size="2">(b)</font></center></html>|<html><center><font face="arial" size="2">(c)</font></center></html>|
|borderless|k
}}}
Figure 1. (a) Retinal fundus image (taken from [[DRIVE|http://www.isi.uu.nl/Research/Databases/DRIVE/]] data set) and (b) the corresponding binary segmentation of its vessel tree. (c) The output of our method. The encircled features show the detected vascular bifurcations.
''2. Contour detection by the CORF operator''
An algorithm inspired by the function of [[simple cells|http://en.wikipedia.org/wiki/Simple_cell]] in area [[V1|http://en.wikipedia.org/wiki/Visual_cortex#Primary_visual_cortex_.28V1.29]] of [[visual cortex|http://en.wikipedia.org/wiki/Visual_cortex]] is very effective in [[contour detection|http://en.wikipedia.org/wiki/Edge_detection]]. [[more... |A CORF computational model of a simple cell that relies on LGN input outperforms the Gabor function model]]
{{centeredTable{
| <html><a href="elephant_2.png" target="_blank"><img src="elephant_2.png" width=205></a></html> | <html><a href="CORFoutput.png" target="_blank"><img src="CORFoutput.png" width=205></a></html> | <html><a href="CORFContour.png" target="_blank"><img src="CORFContour.png" width=205></a></html> |
| Input image | CORF output | Resulting contour |
|borderless|k
}}}
!Academic Studies
*In September 2008, I received the <html>MSc</html> degree in Advanced Methods of Computer Science at [[Queen Mary University of London|www.dcs.qmul.ac.uk]]. My <html>MSc</html> thesis is titled [[Rank-Based Filter with a Frequency- and Orientation-Selective Response|MSCProject.pdf]] and was conducted under the supervision of [[Dr. Fabrizio Smeraldi|http://www.dcs.qmul.ac.uk/~fabri/]].<html><br><br></html>
*In September 2006, I received the <html>BSc</html> (Hons) degree in Computing and Information Systems at [[Goldsmiths University of London|http://www.gold.ac.uk/]]. I read for this degree in parallel to my full-time job (see below), and I used to attend for lectures at [[St. Martin's Institute of Information Technology|http://www.stmartins.edu/]]. I completed the <html>BSc</html> thesis under the supervision of [[Prof. Kenneth P. Camilleri|http://www.um.edu.mt/eng/sce/staff/kennethcamilleri]]. During this time, I understood that I would like to broaden my knowledge in the field of pattern recognition. In my <html>BSc</html> thesis I investigated [[How Effective are Radial Basis Function Neural Networks (RBFNNs) for Handwritten Signature Verification?|BSCProject.pdf]].
!Experience in the Industry
*In 2001, I joined the Department of Information Technology and Systems Development in [[Bank of Valletta|http://www.bov.com]], which is one of the major Banks in Malta. I spent more than 6 years as a Software Developer where I had the opportunity to use cutting edge technology to implement banking applications that involve financial transactions. In August 2007, the Bank has granted me long study leave in order to pursue my <html>MSc</html> and <html>PhD</html> studies.<html><br><br></html>
*In 2004, I started a part-time job as a scientific developer in the SAP industry with [[Iteanova|http://www.iteanova.com]]. This job helped me to strengthen my analytical skills with the implementation of various scientific algorithms, such as genetic algorithm to optimize scheduling. I stopped doing this part-time job as soon as I started my <html>PhD</html> studies.
<script>
var googleSearchIframeName = "cse-search-results";
var googleSearchFormName = "cse-search-box";
var googleSearchFrameWidth = 800;
var googleSearchDomain = "www.google.com";
var googleSearchPath = "/cse";
</script>
<script src="http://www.google.com/afsonline/show_afs_search.js"></script>
if(config.options.txtUserName != "geazzo") {
config.options.chkShowRightSidebar=false;
readOnly = true;
showBackstage = false;
}