Signal and Image Processing

Figure : Multiview people detection (ISPGroup)

ICTEAM researchers use and develop signal processing techniques to solve a problems ranging from physical layer problems, localisation or channel coding to image processing and recognition and networked media.

Principal Investigators :

Pierre-Antoine Absil, Christophe De Vleeschouwer, Laurent Jacques, Jérôme Louveaux, Benoit Macq, Paul Van Dooren, Luc Vandendorpe

Research Labs :

Image and Signal Processing Group (ISPGroup), INMA

Research Areas :

The research focuses on estimation and detection techniques for wired and wireless environments. Transmitters and receivers are designed and optimized for OFDM (multicarrier) transmission schemes, filter-bank based multicarrier modulation schemes, OFDMA systems, multiuser multiantenna systems (MIMO) and multicell/interference limited systems.
Particular attention is paid to iterative/soft information/turbo receivers both for detection and estimation (carrier phase, carrier frequency, channel state information) or synchronization. Optimization of modulation, coding and resource allocation are also investigated.

This research focuses on security achieved at the PHY layer. Particular attention is paid to scenarios where a transmitter wants to communicate to a legitimate receiver over parallel channels (for instance OFDM over frequency selective channels). An eavesdropper is able to capture information from some of the links. Along the work of cooperative techniques (relays) emphasis is put on transmission schemes helped by a relay. The objectives are to obtain bounds on secure transmission rates, investigate situations where non perfect CSI is available, and to design coding schemes to exploit the potential for secure communications.

This researches focuses on ultra wide band (UWB) based localisation or positioning. Methods considered are time of arrival (TOA), time difference of arrival (TDOA) and angle of arrival (AOA). Bounds have been derived to assess the potential of UWB, understand the impact of multipath propagation and investigate the ambiguities. Practical estimators are proposed and their performance is investigated. A practical testbed has been developed and is being upgraded. An accuracy of a few millimeters has been achieved for indoor positioning over distances of about ten meters and with obstacles.

Source coding and channel coding (or decoding) and transmission are often designed independently. This research track investigates scenarios where there is advantage or potential in jointly designing the encoders or decoders. The research focuses on bounds for some techniques, and practical schemes applying this philosophy, in particular for sensor networks.

Compression & streaming

Image and video compression algorithms are investigated, including for stereo and multi-view contents. Visually pleasant and fluent video streaming or image browsing are implemented by adapting compression and forwarding mechanisms to network and terminal resources. This implies the rate-distortion optimization of image/video packet schedules, but also adaptive switching between multiple versions of the content. For low bandwidth wireless accesses, interactive streaming architectures are investigated to allow the end-user to control the trade-offs involved when reducing the spatial and temporal resolution of the streamed content.

Content-based retrieval

Coarse-to-fine JPEG2000 image classification, active learning for surveillance scene retrieval.

Watermarking

Fingerprinting of mono and stereo images for Digital Cinema; 3D meshes watermarking.

Object & people detection and tracking algorithms are developed to understand behaviors in natural scenes. Application domains include autonomous production of visual reports (e.g. for team sport events), but also video-surveillance. Resource constrained allocation solutions are also proposed to build automatically personalized summaries of edited video feeds.

Another field of research is the solving of inverse problems from generalized sparsity prior (with applications in optics and X-ray CT), Compressed Sensing (theory and application), theoretical questions linked to the design of new sensors (for computer vision), applied mathematics for astronomical and biomedical signal processing questions, and representation of data on strange spaces (e.g., sphere, manifolds, or graphs).

This project aims at detecting segments or contours of objects in a given picture by means of graph-based techniques that unfold the community structures in a large graph. The communities found are also hierarchical, allowing to find subregions inside an object.

The research develops image & signal processing tools for the use in various biomedical contexts, including protein docking, radiotherapy, proton therapy, brachytherapy, surgery, EEG analysis, kinematic assessment through accelerometers, etc. 

  • Shape analysis for protein docking including 3D mesh processing and the analysis of protein surface properties; 
  • Radio/proton therapy: rigid and non-rigid image registrations methods for 2D-3D and 3D-3D images both for single and multiple modalities as well as for surfaces; 
  • Segmentation techniques either using prior knowledge (atlas-based) or allowing user interaction (graph cuts); 
  • EEG reconstruction, transcranial magnetic stimulation, as well as on the use of functional imaging for measuring motion disorders;
  • Accelerometers are used for kinematic analysis, e.g.  to quantify the motor disturbances due to Parkinson's disease or to measure objectively the effects of the rehabilitation process following a stroke;
  • Human-computer interactions to create intuitive user interfaces for the clinical world.

Most recent publications

Below are listed the 10 most recent journal articles and conference papers produced in this research area. You also can access all publications by following this link : see all publications.

--> -->
 
 
<type 'exceptions.IOError'>
Python 2.7.9: /usr/bin/python
Mon May 20 13:23:01 2019

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /var/www/sites/tools/export/export.py in ()
    104         t.encode("utf-8"))
    105 
=>  106     tmp = urllib.urlopen(q)
    107     
    108     resp = eval( urllib.urlopen(q).read() )
tmp undefined, urllib = <module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>, urllib.urlopen = <function urlopen>, q = 'https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in urlopen(url='https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None, proxies=None, context=None)
     85         opener = _urlopener
     86     if data is None:
=>   87         return opener.open(url)
     88     else:
     89         return opener.open(url, data)
opener = <urllib.FancyURLopener instance>, opener.open = <bound method FancyURLopener.open of <urllib.FancyURLopener instance>>, url = 'https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in open(self=<urllib.FancyURLopener instance>, fullurl='https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None)
    211         try:
    212             if data is None:
=>  213                 return getattr(self, name)(url)
    214             else:
    215                 return getattr(self, name)(url, data)
builtin getattr = <built-in function getattr>, self = <urllib.FancyURLopener instance>, name = 'open_https', url = '//dial.uclouvain.be/solr6/repository/select?&sta...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in open_https(self=<urllib.FancyURLopener instance>, url='//dial.uclouvain.be/solr6/repository/select?&sta...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None)
    441             if realhost: h.putheader('Host', realhost)
    442             for args in self.addheaders: h.putheader(*args)
=>  443             h.endheaders(data)
    444             errcode, errmsg, headers = h.getreply()
    445             fp = h.getfile()
h = <httplib.HTTPS instance>, h.endheaders = <bound method HTTPSConnection.endheaders of <httplib.HTTPSConnection instance>>, data = None
 /usr/lib/python2.7/httplib.py in endheaders(self=<httplib.HTTPSConnection instance>, message_body=None)
   1033         else:
   1034             raise CannotSendHeader()
=> 1035         self._send_output(message_body)
   1036 
   1037     def request(self, method, url, body=None, headers={}):
self = <httplib.HTTPSConnection instance>, self._send_output = <bound method HTTPSConnection._send_output of <httplib.HTTPSConnection instance>>, message_body = None
 /usr/lib/python2.7/httplib.py in _send_output(self=<httplib.HTTPSConnection instance>, message_body=None)
    877             msg += message_body
    878             message_body = None
=>  879         self.send(msg)
    880         if message_body is not None:
    881             #message_body was not a string (i.e. it is a file) and
self = <httplib.HTTPSConnection instance>, self.send = <bound method HTTPSConnection.send of <httplib.HTTPSConnection instance>>, msg = 'GET /solr6/repository/select?&start=0&rows=99999....uclouvain.be\r\nUser-Agent: Python-urllib/1.17\r\n\r\n'
 /usr/lib/python2.7/httplib.py in send(self=<httplib.HTTPSConnection instance>, data='GET /solr6/repository/select?&start=0&rows=99999....uclouvain.be\r\nUser-Agent: Python-urllib/1.17\r\n\r\n')
    839         if self.sock is None:
    840             if self.auto_open:
=>  841                 self.connect()
    842             else:
    843                 raise NotConnected()
self = <httplib.HTTPSConnection instance>, self.connect = <bound method HTTPSConnection.connect of <httplib.HTTPSConnection instance>>
 /usr/lib/python2.7/httplib.py in connect(self=<httplib.HTTPSConnection instance>)
   1248 
   1249             self.sock = self._context.wrap_socket(self.sock,
=> 1250                                                   server_hostname=server_hostname)
   1251 
   1252     __all__.append("HTTPSConnection")
server_hostname = 'dial.uclouvain.be'
 /usr/lib/python2.7/ssl.py in wrap_socket(self=<ssl.SSLContext object>, sock=<socket._socketobject object>, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname='dial.uclouvain.be')
    348                          suppress_ragged_eofs=suppress_ragged_eofs,
    349                          server_hostname=server_hostname,
=>  350                          _context=self)
    351 
    352     def set_npn_protocols(self, npn_protocols):
_context undefined, self = <ssl.SSLContext object>
 /usr/lib/python2.7/ssl.py in __init__(self=<ssl.SSLSocket object>, sock=<socket._socketobject object>, keyfile=None, certfile=None, server_side=False, cert_reqs=0, ssl_version=2, ca_certs=None, do_handshake_on_connect=True, family=2, type=1, proto=0, fileno=None, suppress_ragged_eofs=True, npn_protocols=None, ciphers=None, server_hostname='dial.uclouvain.be', _context=<ssl.SSLContext object>)
    564                         # non-blocking
    565                         raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets")
=>  566                     self.do_handshake()
    567 
    568             except (OSError, ValueError):
self = <ssl.SSLSocket object>, self.do_handshake = <bound method SSLSocket.do_handshake of <ssl.SSLSocket object>>
 /usr/lib/python2.7/ssl.py in do_handshake(self=<ssl.SSLSocket object>, block=False)
    786             if timeout == 0.0 and block:
    787                 self.settimeout(None)
=>  788             self._sslobj.do_handshake()
    789         finally:
    790             self.settimeout(timeout)
self = <ssl.SSLSocket object>, self._sslobj = <_ssl._SSLSocket object>, self._sslobj.do_handshake = <built-in method do_handshake of _ssl._SSLSocket object>

<type 'exceptions.IOError'>: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
      args = ('socket error', SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'))
      errno = 'socket error'
      filename = None
      message = ''
      strerror = SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)')

--> -->
 
 
<type 'exceptions.IOError'>
Python 2.7.9: /usr/bin/python
Mon May 20 13:23:01 2019

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /var/www/sites/tools/export/export.py in ()
    104         t.encode("utf-8"))
    105 
=>  106     tmp = urllib.urlopen(q)
    107     
    108     resp = eval( urllib.urlopen(q).read() )
tmp undefined, urllib = <module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>, urllib.urlopen = <function urlopen>, q = 'https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in urlopen(url='https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None, proxies=None, context=None)
     85         opener = _urlopener
     86     if data is None:
=>   87         return opener.open(url)
     88     else:
     89         return opener.open(url, data)
opener = <urllib.FancyURLopener instance>, opener.open = <bound method FancyURLopener.open of <urllib.FancyURLopener instance>>, url = 'https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in open(self=<urllib.FancyURLopener instance>, fullurl='https://dial.uclouvain.be/solr6/repository/selec...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None)
    211         try:
    212             if data is None:
=>  213                 return getattr(self, name)(url)
    214             else:
    215                 return getattr(self, name)(url, data)
builtin getattr = <built-in function getattr>, self = <urllib.FancyURLopener instance>, name = 'open_https', url = '//dial.uclouvain.be/solr6/repository/select?&sta...de%20p%C3%A9riodique%20%28Journal%20article%29%22'
 /usr/lib/python2.7/urllib.py in open_https(self=<urllib.FancyURLopener instance>, url='//dial.uclouvain.be/solr6/repository/select?&sta...de%20p%C3%A9riodique%20%28Journal%20article%29%22', data=None)
    441             if realhost: h.putheader('Host', realhost)
    442             for args in self.addheaders: h.putheader(*args)
=>  443             h.endheaders(data)
    444             errcode, errmsg, headers = h.getreply()
    445             fp = h.getfile()
h = <httplib.HTTPS instance>, h.endheaders = <bound method HTTPSConnection.endheaders of <httplib.HTTPSConnection instance>>, data = None
 /usr/lib/python2.7/httplib.py in endheaders(self=<httplib.HTTPSConnection instance>, message_body=None)
   1033         else:
   1034             raise CannotSendHeader()
=> 1035         self._send_output(message_body)
   1036 
   1037     def request(self, method, url, body=None, headers={}):
self = <httplib.HTTPSConnection instance>, self._send_output = <bound method HTTPSConnection._send_output of <httplib.HTTPSConnection instance>>, message_body = None
 /usr/lib/python2.7/httplib.py in _send_output(self=<httplib.HTTPSConnection instance>, message_body=None)
    877             msg += message_body
    878             message_body = None
=>  879         self.send(msg)
    880         if message_body is not None:
    881             #message_body was not a string (i.e. it is a file) and
self = <httplib.HTTPSConnection instance>, self.send = <bound method HTTPSConnection.send of <httplib.HTTPSConnection instance>>, msg = 'GET /solr6/repository/select?&start=0&rows=99999....uclouvain.be\r\nUser-Agent: Python-urllib/1.17\r\n\r\n'
 /usr/lib/python2.7/httplib.py in send(self=<httplib.HTTPSConnection instance>, data='GET /solr6/repository/select?&start=0&rows=99999....uclouvain.be\r\nUser-Agent: Python-urllib/1.17\r\n\r\n')
    839         if self.sock is None:
    840             if self.auto_open:
=>  841                 self.connect()
    842             else:
    843                 raise NotConnected()
self = <httplib.HTTPSConnection instance>, self.connect = <bound method HTTPSConnection.connect of <httplib.HTTPSConnection instance>>
 /usr/lib/python2.7/httplib.py in connect(self=<httplib.HTTPSConnection instance>)
   1248 
   1249             self.sock = self._context.wrap_socket(self.sock,
=> 1250                                                   server_hostname=server_hostname)
   1251 
   1252     __all__.append("HTTPSConnection")
server_hostname = 'dial.uclouvain.be'
 /usr/lib/python2.7/ssl.py in wrap_socket(self=<ssl.SSLContext object>, sock=<socket._socketobject object>, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname='dial.uclouvain.be')
    348                          suppress_ragged_eofs=suppress_ragged_eofs,
    349                          server_hostname=server_hostname,
=>  350                          _context=self)
    351 
    352     def set_npn_protocols(self, npn_protocols):
_context undefined, self = <ssl.SSLContext object>
 /usr/lib/python2.7/ssl.py in __init__(self=<ssl.SSLSocket object>, sock=<socket._socketobject object>, keyfile=None, certfile=None, server_side=False, cert_reqs=0, ssl_version=2, ca_certs=None, do_handshake_on_connect=True, family=2, type=1, proto=0, fileno=None, suppress_ragged_eofs=True, npn_protocols=None, ciphers=None, server_hostname='dial.uclouvain.be', _context=<ssl.SSLContext object>)
    564                         # non-blocking
    565                         raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets")
=>  566                     self.do_handshake()
    567 
    568             except (OSError, ValueError):
self = <ssl.SSLSocket object>, self.do_handshake = <bound method SSLSocket.do_handshake of <ssl.SSLSocket object>>
 /usr/lib/python2.7/ssl.py in do_handshake(self=<ssl.SSLSocket object>, block=False)
    786             if timeout == 0.0 and block:
    787                 self.settimeout(None)
=>  788             self._sslobj.do_handshake()
    789         finally:
    790             self.settimeout(timeout)
self = <ssl.SSLSocket object>, self._sslobj = <_ssl._SSLSocket object>, self._sslobj.do_handshake = <built-in method do_handshake of _ssl._SSLSocket object>

<type 'exceptions.IOError'>: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
      args = ('socket error', SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'))
      errno = 'socket error'
      filename = None
      message = ''
      strerror = SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)')