text:
Q: Build (and successfully run) a Jar using Jhipster and maven on Mac and cannot run it on Ubuntu I just built a jar on Mac using the Jhipster guide (the project is generated using Jhipster, having React and Spring Boot):
https://www.jhipster.tech/production/
Precisely, using:
To package the application as a "production" JAR, with Maven please type:
./mvnw -Pprod clean verify
The building is done on Mac (JDK 1.8), and the jar works fine on Mac. But when I move this jar to Linux (JDK 1.8), it does not run. The log is here (a bit too long):
2019-10-17 19:30:04.521  WARN 3014 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfiguration' defined in URL [jar:file:/home/ubuntu/njing/galley-1-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/element/photolabel/config/SecurityConfiguration.class]: Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.zalando.problem.spring.web.advice.security.SecurityProblemSupport': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
2019-10-17 19:30:04.579 ERROR 3014 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfiguration' defined in URL [jar:file:/home/ubuntu/njing/galley-1-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/element/photolabel/config/SecurityConfiguration.class]: Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.zalando.problem.spring.web.advice.security.SecurityProblemSupport': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository ' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1187)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
    at com.element.photolabel.Galley1App.main(Galley1App.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.zalando.problem.spring.web.advice.security.SecurityProblemSupport': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1187)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1251)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
    ... 25 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:676)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:392)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1251)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
    ... 39 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:676)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1467)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1431)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1322)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1209)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:668)
    ... 62 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1467)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1431)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1322)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1209)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:668)
    ... 78 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
    ... 94 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
    at org.springframework.security.oauth2.client.registration.ClientRegistrations.getOpenidConfiguration(ClientRegistrations.java:108)
    at org.springframework.security.oauth2.client.registration.ClientRegistrations.fromOidcIssuerLocation(ClientRegistrations.java:72)
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getBuilderFromIssuerIfPossible(OAuth2ClientPropertiesRegistrationAdapter.java:84)
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getClientRegistration(OAuth2ClientPropertiesRegistrationAdapter.java:60)
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.lambda$getClientRegistrations$0(OAuth2ClientPropertiesRegistrationAdapter.java:53)
    at java.util.HashMap.forEach(HashMap.java:1289)
    at org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientPropertiesRegistrationAdapter.getClientRegistrations(OAuth2ClientPropertiesRegistrationAdapter.java:52)
    at org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientRegistrationRepositoryConfiguration.clientRegistrationRepository(OAuth2ClientRegistrationRepositoryConfiguration.java:55)
    at org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientRegistrationRepositoryConfiguration$$EnhancerBySpringCGLIB$$8bfff19f.CGLIB$clientRegistrationRepository$0(<generated>)
    at org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientRegistrationRepositoryConfiguration$$EnhancerBySpringCGLIB$$8bfff19f$$FastClassBySpringCGLIB$$2969a6c9.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
    at org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientRegistrationRepositoryConfiguration$$EnhancerBySpringCGLIB$$8bfff19f.clientRegistrationRepository(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 95 common frames omitted
Caused by: org.springframework.web.client.HttpClientErrorException$NotFound: 404 Not Found
    at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:85)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:778)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:736)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:311)
    at org.springframework.security.oauth2.client.registration.ClientRegistrations.getOpenidConfiguration(ClientRegistrations.java:106)
    ... 112 common frames omitted

The keycloak.yml is as follows:
version: '2.1'
services:
  keycloak:
    image: jboss/keycloak:6.0.1
    command:
      [
        '-b',
        '0.0.0.0',
        '-Dkeycloak.migration.action=import',
        '-Dkeycloak.migration.provider=dir',
        '-Dkeycloak.migration.dir=/home/ubuntu/jboss/keycloak/realm-config',
        '-Dkeycloak.migration.strategy=IGNORE_EXISTING',
        '-Djboss.socket.binding.port-offset=1000',
      ]
    volumes:
      - ./realm-config:/home/ubuntu/jboss/keycloak/realm-config
      - ./keycloak-db:/home/ubuntu/jboss/keycloak/standalone/data
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
      - DB_VENDOR=h2
    ports:
      - 9080:9080
      - 9443:9443
      - 10990:10990

Netstat output:
ubuntu@ip-172-30-0-247:~/jboss$ sudo netstat -peanut
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 127.0.0.1:41517         0.0.0.0:*               LISTEN      0          52452      17994/containerd
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        15290      700/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          20068      1208/sshd
tcp        0      0 172.30.0.247:22         184.75.84.178:54532     ESTABLISHED 0          91316      3268/sshd: ubuntu [
tcp        0     36 172.30.0.247:22         184.75.84.178:58896     ESTABLISHED 0          95691      4843/sshd: ubuntu [
tcp        0      0 172.30.0.247:22         184.75.84.178:65058     ESTABLISHED 0          93305      4154/sshd: ubuntu [
tcp        0      0 172.30.0.247:22         184.75.84.178:62197     ESTABLISHED 0          45342      14367/sshd: ubuntu
tcp        0      0 172.30.0.247:22         184.75.84.178:64210     ESTABLISHED 0          58005      20858/sshd: ubuntu
tcp        0      0 172.30.0.247:22         184.75.84.178:64687     ESTABLISHED 0          58197      20996/sshd: ubuntu
tcp6       0      0 :::9443                 :::*                    LISTEN      0          99231      5889/docker-proxy
tcp6       0      0 :::10990                :::*                    LISTEN      0          100007     5876/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      0          20070      1208/sshd
tcp6       0      0 :::9080                 :::*                    LISTEN      0          99246      5902/docker-proxy
tcp6       0      0 :::5432                 :::*                    LISTEN      0          57686      20676/docker-proxy
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        15289      700/systemd-resolve
udp        0      0 172.30.0.247:68         0.0.0.0:*                           100        96521      678/systemd-network

A: The specific error message is:
java.lang.IllegalArgumentException: Unable to resolve the OpenID Configuration with the provided Issuer of "http://localhost:9080/auth/realms/jhipster"
It is telling you that it can not connect fetch the OpenID Configuration from Keycloak.  Make sure Keycloak is started and connectable at http://localhost:9080.  If you don't have Keycloak available on localhost, you can change your config in application.yml to specify a different URI.


text:
Cookie Policy of www.hpmotorcycles.eu
Cookies consist of portions of code installed in the browser that assist the Owner in providing the Service according to the purposes described. Some of the purposes for which Cookies are installed may also require the User's consent.
Google Analytics with anonymized IP
Google Analytics with anonymized IP (Google Ireland Limited)
Google Analytics is a web analysis service provided by Google Ireland Limited ("Google"). Google utilizes the Data collected to track and examine the use of this Application, to prepare reports on its activities and share them with other Google services.
This integration of Google Analytics anonymizes your IP address. It works by shortening Users' IP addresses within member states of the European Union or in other contracting states to the Agreement on the European Economic Area. Only in exceptional cases will the complete IP address be sent to a Google server and shortened within the US.
Google Maps widget
Google Maps widget (Google Ireland Limited)
Google Maps is a maps visualization service provided by Google Ireland Limited that allows this Application to incorporate content of this kind on its pages.
Place of processing: US – Privacy Policy.
With regard to Cookies installed by third parties, Users can manage their preferences and withdrawal of their consent by clicking the related opt-out link (if provided),by using the means provided in the third party's privacy policy, or by contacting the third party.
Notwithstanding the above, the Owner informs that Users may follow the instructions provided on the subsequently linked initiatives by the EDAA (EU),the Network Advertising Initiative (US) and the Digital Advertising Alliance (US), DAAC (Canada), DDAI (Japan) or other similar services. Such initiatives allow Users to select their tracking preferences for most of the advertising tools. The Owner thus recommends that Users make use of these resources in addition to the information provided in this document.
HP Motorrad srl Via Dante Alighieri, 21 (20090) - 20090 Novegro - Segrate (MI)
Since the installation of third-party Cookies and other tracking systems through the services used within this Application cannot be technically controlled by the Owner, any specific references to Cookies and tracking systems installed by third parties are to be considered indicative. In order to obtain complete information, the User is kindly requested to consult the privacy policy for the respective third-party services listed in this document.
Given the objective complexity surrounding the identification of technologies based on Cookies, Users are encouraged to contact the Owner should they wish to receive any further information on the use of Cookies by this Application.
Terms and motorbike general conditions of rental
HP Motorrad srl
Via Dante Alighieri, 21, 20090 - Novegro - Segrate (MI)
rent@hpmotorrad.com
© 2019 - HP Motorrad srl - VAT ID: 01517300198
Corporate data - Privacy - Cookie

redpajama_set_name: RedPajamaCommonCrawl


text:
You are at:Home»Technopark 2»Zesty Beanz CEO bags Star Entrepreneur Award at Innovation Summit
Zesty Beanz CEO bags Star Entrepreneur Award at Innovation Summit
By Archives on	 January 30, 2012 Technopark 2
Tvm: Lepeesh Parat, Founder & CEO of the Technopark based Zesty Beanz Technologies was conferred the 'Star Entrepreneur Award' at the 5th Indira International Innovation Summit held in Pune, earlier this month. Lepeesh was recognised for his leadership and contribution in the field of Entrepreneurship & Innovation. The award consists of a trophy and a citation. The Summit is one of the largest rendezvous of Innovators from different areas of expertise.
Presented by the Indira College of Engineering and Management (ICEM) at Pune, the annual Indira International Innovation Summit aims to develop an insight into developing a mindset for innovation. This year's theme was 'Imagination, Creativity and Ingenuity: Leading a Culture of Innovation'.
Lepeesh, an Electronics & Communication Engineer, started Zesty Beanz Technologies at the National Institute of Technology TBI at Kozhikode (NIT-K), Kerala in October 2008. In May, 2011, the company expanded its operations Technopark, Trivandrum. The major part of the development, support and sales team is now based in Thiruvananthapuram and the centre at NIT is maintained for training and R&D. The company also has a divisional office in Belgium and plans to start operations in Frankfurt (Germany) later this fiscal.
Zesty Beanz is mainly focused in providing Open Source Enterprise Resource Planning (OpenERP) services and solutions for enterprises based on Free and Open Source Software (FOSS). Apart from OpenERP solutions, company also provides web content management and Infrastructure Services. ZestyBeanz is also a winner of the prestigious ISBA 2011 award for outstanding company in the ICT category by the Department of Science & Technology (Govt. of India).
Previous ArticleThiruvananthapuram Corporation bets big on RFID Project
Next Article State School IT Fest logs in Day 1 at Technopark
Kerala Startup Mission offers space for scale up startups in its facilities
MoU signed for setting up Aerospace Innovation Centre in Trivandrum
Government increases cap on direct purchase of IT products from Kerala start-ups
Kerala unique model for startup ecosystem, says CM @ Huddle Kerala
Kerala Budget 2018 gives push for innovation and start-ups
KITE to conduct Free Software Install Fests across Kerala on Oct 02
Ministry of Commerce & Industry launches the Startup India Hub


text:
\section{Introduction}

The sharpening of blurred images is a standard problem
in many imaging applications.
A great variety of different approaches to this severely ill-posed inverse
problem have been developped over time
which differ in the assumptions they make, and in their suitability for
different application contexts.

\medskip
Blur of an image is described by a \emph{point-spread function (PSF)}
which describes the redistribution of light energy in the image domain
$\Omega\subset\mathbb{R}^2$.
When blurring acts equally at all locations, one has a \emph{space-invariant
PSF} $h:\mathbb{R}^2\to\mathbb{R}^+$ which acts by convolution.
Accounting also for the impact of noise $n$, a typical blur model (with
additive noise) then reads
\begin{equation}\label{genericblurmodelsi}
f = h * g + n\;,
\end{equation}
where $f$ is the observed image, and $g$ the unknown sharp image.

In the more general case of a space-variant blur one needs a point-spread
function with two arguments,
$H:\varOmega\times\varOmega\to\mathbb{R}^+$, and $h*g$ is replaced with the
integral operator
\begin{equation}
(H \circledast g) (\bm{x}) := \int\limits_\varOmega H(\bm{x},\bm{y}) g(\bm{y}) \,\mathrm{d}\bm{y}
\label{intopH}
\end{equation}
such that
\begin{equation}\label{genericblurmodel}
f = H \circledast g + n \;,
\end{equation}
which subsumes the space-invariant case by setting
$H(\bm{x},\bm{y})=h(\bm{x}-\bm{y})$.
We denote by $H^*$ the adjoint of the point-spread function $H$,
which is given by $H^*(\bm{x},\bm{y}):=H(\bm{y},\bm{x})$.
Conservation of energy implies generally that $H^*\circledast1=1$,
however, this condition may be violated near image boundaries due
to blurring across the boundary.

In deblurring,
we want to obtain a restored image $u$ that approximates $g$, with
the degraded image $f$ and the PSF $H$ as input.
This is the case of \emph{non-blind} deconvolution (as opposed to blind
deconvolution which aims at inferring the sharp image and the
PSF simultaneously from the degraded image).

Some approaches to the deconvolution problem are presented in more
detail in Section~\ref{sec-exdcvm}.

\paragraph{Our contribution.}
The main subject of this paper is to discuss a modification of the
Richardson-Lucy (RL) deconvolution method \cite{Lucy-AJ74,Richardson-JOSA72}
by robust data terms. Building on the known variational interpretation of RL
deconvolution \cite{Snyder-TIP92}, we replace the asymmetric penaliser
function in the data term in such a way that larger residual errors are
penalised less than with the standard Csisz\'ar divergence term.

Using robust data terms together with a regulariser similar to
\cite{Dey-isbi04,Dey-MRT06} we obtain a robust and regularised Richardson-Lucy
variant that unites the high restoration quality of variational
deconvolution methods with high efficiency that is not far from the
original Richardson-Lucy iteration.
This method has already been used for experiments on recovering information
from diffuse reflections in \cite{Backes-sp09} and, combined
with interpolation, for the enhancement of confocal microscopy images
\cite{Elhayek-dagm11,Persch-MST13x}. It has also been used to achieve
efficient deconvolution under real-time or almost-real-time conditions
\cite{Welk-aapr13,Welk-SIVP13}.
We demonstrate that both robust data terms and regularisers contribute
substantially to its performance.

An earlier version of the present work is the technical report
\cite{Welk-tr10}.

\paragraph{Related work.}
The omnipresence of deblurring problems has made
researchers address this problem since long
\cite{vanCittert-ZPhys33,Wiener-Book49}.
From the abundant literature on this topic, the most relevant work
in our present context includes Richardson-Lucy deconvolution
\cite{Lucy-AJ74,Richardson-JOSA72}, variational methods
\cite{Chan-TIP98,Osher-icip94,Rudin-PHYSD92,You-icip96}, and their interplay
\cite{Dey-isbi04,Dey-MRT06,Snyder-TIP92}; see also \cite{Bratsolis-AA01}
for another approach to combine Richardson-Lucy deconvolution with
regularisation.

Fundamental theoretical results on existence and uniqueness of solutions of
deconvolution problems can be found in the work of Bertero et al.\
\cite{Bertero-PIEEE88}.

Robust data terms in deconvolution go back to Zervakis et al.\
\cite{Zervakis-TIP95} in statistical models, and have recently been used
intensively
in the variational context by Bar et al.\ \cite{Bar-scs05,Bar-ssvm07} and
Welk et al.\ \cite{Welk-ibpria07,Welk-dagm05}. Positivity
constraints were studied in discrete iterative deconvolution by Nagy and
Strako{\v s} \cite{Nagy-spie00} and in a variational framework by Welk and
Nagy \cite{Welk-ibpria07}. The extension of variational approaches to
multi-channel images has been studied in \cite{Gerig-TMI92} and more
specifically in deconvolution in \cite{Bar-vlsm05,Welk-ibpria07}.

\paragraph{Structure of the paper.}
In Section~\ref{sec-exdcvm} we recall approaches to
image deconvolution which form the background for our approach, and
discuss some aspects of noise models and robustness.
Section~\ref{sec-rrrl} recalls the embedding of Richardson-Lucy deconvolution
into a variational context. Exploiting this connection, the RL algorithm can be
modified in order to increase restoration quality and robustness with respect
to noise and perturbations. An experimental comparison of the deconvolution
techniques under consideration is provided in Section~\ref{sec-exp} based on
both synthetic and real-world data. Conclusions in Section~\ref{sec-conc}
end the paper.

\section{Deconvolution Methods}\label{sec-exdcvm}

We start by recalling selected deconvolution approaches from the
literature which we will refer to later.

\subsection{Richardson-Lucy Deconvolution}

Richardson-Lucy (RL) deconvolution
\cite{Lucy-AJ74,Richardson-JOSA72} is a nonlinear iterative method
originally motivated from statistical considerations. It is based
on the assumption of positive grey-values and Poisson noise
distribution.
If the degraded and sharp images, and the point-spread function
are smooth functions over $\mathbb{R}^2$ with positive real
values, one uses the iteration
\begin{equation}
\label{RL}
u^{k+1} = \left(H^* \circledast \frac{f}{H \circledast u^k}
\right)\cdot u^k
\end{equation}
to generate a sequence of successively sharpened images $u^1,u^2,\ldots$
from the initial image $u^0:=f$.

In the absence of noise the sharp image $g$ is a fixed
point of \eqref{RL}, as in this case the multiplier
$H^*\circledast \frac{f}{H\circledast g}$
equals the constant function $1$.

The single parameter of the procedure is the
number of iterations. While with increasing number of iterations greater
sharpness is achieved, the degree of regularisation is reduced,
which leads to amplification of artifacts that in the long run
dominate the filtered image. This phenomenon is known by the
name of \emph{semi-convergence}.

\subsection{Variational Deconvolution}

Variational methods \cite{Osher-icip94,You-icip96} address the
deconvolution task by
minimising a functional that consists of two parts: a \emph{data term}
that enforces the match between the sought image and the observed
image via the blur model, and a \emph{smoothness term} or \emph{regulariser}
that brings in regularity assumptions about the unknown sharp image.
The strength of variational approaches lies in their great flexibility, and
in the explicit way of expressing the assumptions made. They achieve
often an excellent reconstruction quality, but their computational
cost tends to be rather high.

A general model for variational deconvolution of a grey-value image
$u$ with known point-spread function $H$ is based on minimising
the energy functional
\begin{equation}\label{VDCVE}
E_{f,H}[u] = \int\limits_\varOmega \left(
\varPhi\bigl((f-H\circledast u)^2\bigr) +
\alpha\, \varPsi\bigl( \lvert\nabla u\rvert^2 \bigr) \right) \,\mathrm{d} \bm{x}
\end{equation}
in which the data term $\varPhi\bigl((f-H\circledast u)^2\bigr)$
penalises the reconstruction error or \emph{residual} $f-H\circledast u$
to suppress deviations from the blur model, while the smoothness term
$\varPsi\bigl(\lvert\nabla u\rvert^2\bigr)$ penalises roughness of the
reconstructed image. The \emph{regularisation weight} $\alpha$ balances the
influences of both terms.
$\varPhi, \varPsi:\mathbb{R}^+_0\to\mathbb{R}^+_0$ are increasing penalty functions.

In the simplest case, $\varPhi$ is the identity, thus imposing a quadratic
penalty on the data model. Doing the same in the regulariser, one has
Whittaker-Tikhonov regularisation \cite{Tikhonov-SMD63,Whittaker-PEMS23}
with $\varPsi(s^2)=s^2$. As this choice leads to a blurring that directly
counteracts the desired sharpening, it is often avoided in favour of
regularisers with edge-preserving properties.
A popular representative is total variation deconvolution
\cite{Chan-TIP98,Osher-icip94,Vogel-TIP98} which uses
$\varPsi(s^2)=\lvert s\rvert$.
Edge-enhancing regularisers (e.g.\ of the Perona-Malik \cite{Perona-PAMI90}
type) were studied in \cite{Bar-eccv04,Welk-TBW-scs05}.
In \cite{Jung-TIP11,Jung-JCAM13,Jung-ssvm09}, nonlocal regularisation was
proposed.

For the actual minimisation, often
gradient descent or lagged-diffusivity-type minimisation schemes are
employed. Iterative schemes with advantageous convergence behaviour
are derived from a half-quadratic approach in \cite{Wang-SIIMS08}
(for the total variation regulariser) and \cite{Krishnan-nips09}
(for certain non-convex regularisers).

Using in \eqref{VDCVE} a penaliser $\varPhi$ with less-than-quadratic
growth leads to \emph{robust data terms}
\cite{Bar-scs05,Zervakis-TIP95}. For example,
\cite{Bar-scs05} use the $L^1$ penaliser $\varPhi(s)=\lvert s\rvert$.
The concept of robustness originates from statistics
\cite{Huber-book81}, and will be discussed in more detail below.
Spatially variant robust deconvolution models were investigated in
\cite{Bar-ssvm07,Welk-dagm05}.

Even Richardson-Lucy deconvolution
can be interpreted as a fixed point iteration for an optimisation problem
\cite{Snyder-TIP92}, using
Csisz{\'a}r's \emph{information divergence} \cite{Csiszar-AS91}
as an (asymmetric) penaliser function. In a space-continuous
formulation, one has the energy functional
\begin{equation}
\label{RLfunc}
E_{f,H}[u] := \int\limits_{\varOmega}
\left(H\circledast u-f-f\ln\frac{H\circledast u}{f}\right)
\,\mathrm{d}\bm{x} \;.
\end{equation}
No regularisation term is included, which is linked to
the above-mentioned semi-convergence behaviour.
Nevertheless, the energy formulation permits to modify
Richardson-Lucy deconvolution in the same flexible manner as the
standard variational approach \eqref{VDCVE} by introducing robust
data terms and edge-preserving, or even edge-enhancing, regularisers.
While an edge-preserving regulariser in combination with
Richardson-Lucy deconvolution has been used by Dey et al.\
\cite{Dey-isbi04,Dey-MRT06} (in a space-invariant setting), the
possibility of a robust data term has so far not been studied in
detail, although it has been used successfully in applications
\cite{Backes-sp09,Elhayek-dagm11,Persch-MST13x,Welk-aapr13,Welk-SIVP13}.

\subsection{Data Terms, Noise Models and Robustness}

Statistical considerations \cite{Geman-PAMI84,Zervakis-TIP95}
link particular data terms to specific noise models,
in the sense that minimising the so constructed
energy functional yields a maximum likelihood estimator under
the corresponding type of noise.
For example, quadratic penalisation $\varPhi(s^2)=s^2$ pertains
to Gaussian noise, while the $L^1$ penaliser
$\varPhi(s^2)=\lvert s\rvert$ matches Laplacian noise. The
asymmetric penaliser in \eqref{RLfunc} is related to Poisson noise.

This relation allows to use an optimally adapted energy model
whenever one has full control over the imaging process and can
therefore establish an accurate noise model.
In practice, one does not always have
perfect control and knowledge of the imaging process.
This is where the concept of \emph{robustness} comes into play.
According to Huber \cite[p.~1]{Huber-book81}, ``robustness signifies
insensitivity to small deviations from the assumptions''. In
particular, ``distributional robustness'' means that ``the shape of
the underlying distribution deviates slightly from the assumed
model'' \cite[p.~1]{Huber-book81}.
This obviously applies to imaging processes in which
no exact noise model is known, but also further violations of model
assumptions can be subsumed here, such as imprecise estimates of PSF,
or errors near the image boundary due to blurring across the
boundary, see \cite{Welk-dagm05}.

To incorporate each single influence factor into a model is not
always feasible. Robust models are designed to cope with remaining
deviations, and still produce usable results. In view of the uncertainty
about the true distribution of noise, they are often
based on data terms that match types of noise that are assumed to
be ``worse'' than the real noise.
A crucial point is to suppress the effect of outliers, which is
achieved e.g.\ by data terms that penalise outliers less.
Models are then adapted to distributions with ``pessimistically''
heavy tails.

To evaluate robustness experimentally, it is not only legitimate but even
necessary to test such models against severe, maybe even unrealistic,
types of noise that do not exactly match the model. A frequently used
test case is impulse noise, and it turns out that
variational approaches actually designed for Laplacian noise can
cope with it practically well \cite{Bar-scs05}.
Of course, one can no longer expect to establish optimality in the
maximum-likelihood sense with respect to the true noise.

Furthermore, any comparison between methods that are optimised for
different noise models inevitably involves testing at least one of
them with non-matching noise. For example, this happens already in any
comparison of Wiener filtering (Gaussian noise) against Richardson-Lucy
(Poisson noise).

\subsection{Gradient Descent Methods}

Functionals of type \eqref{VDCVE} are often minimised using gradient descent
\cite{Welk-TBW-scs05,Welk-dagm05}. Alternatively, elliptic iteration schemes
can be used \cite{Bar-scs05}.

\paragraph{Standard gradient descent.}
To derive a gradient descent equation for the energy $E:=E_{f,H}$ from
\eqref{VDCVE}, one computes by the usual Euler-Lagrange formalism
$\delta_v E:=\left.\frac{\mathrm{d}}{\mathrm{d}\varepsilon}
E[u+\varepsilon v]\right|_{\varepsilon=0}$ for a small additive
perturbation $v$.
The variational gradient (G{\^{a}}teaux derivative) $\delta E/\delta u$ is
obtained from $\delta_v E$ by the requirement that
$\left\langle \frac{\delta E}{\delta u},v\right\rangle=\delta_v E$
holds for all test functions $v$, where $\langle\,\cdot\,,\,\cdot\,\rangle$
is the standard inner product of functions.

In an elliptic approach, one now solves the Euler-Lagrange
equation $\delta E/\delta u=0$. A gradient descent for \eqref{VDCVE}
is given by the integro-differential equation (compare \cite{Welk-dagm05})
\begin{align}\label{VGD}
\partial_t u = - \frac{\delta E}{\delta u}
&= H^* \circledast \Bigl(
\varPhi'\bigl((f-H\circledast u)^2\bigr) \cdot (f-H\circledast u)\Bigr)
+
\alpha \operatorname{div} \left( \varPsi'\bigl(\lvert\nabla u\rvert^2\bigr)\nabla u\right)
\;.
\end{align}
Complementing this equation with e.g.\ the blurred image $f$ as initial
condition and suitable boundary conditions,
one has an initial-boundary value problem which is then approximated
numerically until a steady state is reached, for example via an explicit
Euler scheme. As each iteration involves two $\circledast$ operations,
the computational expense is fairly high. Even more sophisticated approaches
like semi-implicit schemes with conjugate gradients for \eqref{VGD}
or the elliptic approach do not change the computational cost substantially,
as the number of iterations for convergence in any scheme depends primarily
on the extent and structure of the PSF.

\paragraph{Positivity-constrained gradient descent.}
From modelling considerations one can often infer additional information
that helps to mitigate the ill-posedness of the deconvolution problem.
For instance, in a scalar-valued image with grey-values proportional to
radiance, only positive values are admissible.

A strategy to incorporate this positivity constraint in the minimisation of
\eqref{VDCVE} has been described in \cite{Welk-ibpria07}. Based on earlier
work \cite{Nagy-spie00}, it is proposed to reparametrise the grey-values
by the substitution $u=\exp(z)$. The values of the new image function $z$
are unconstrained in $\mathbb{R}$. Instead of \eqref{VGD} one obtains
thereby the gradient descent
\begin{equation}\label{VGDphi}
\partial_t u = - u \cdot \frac{\delta E}{\delta u}
\;.
\end{equation}

As detailed in \cite{Welk-ibpria07},
performing the gradient descent based on the variation of
the function $z$ comes down to a function space transformation.
Essentially, the positivity-constrained gradient
descent turns out to be the gradient descent in a hyperbolic metric.
From this viewpoint, zero and negative grey-values are avoided because
they are put at infinite distance from any positive values.
This reinterpretation can immediately be transferred to interval constraints
with a suitable metric on the open interval $(a,b)$.

We want to point out here another reinterpretation which is obtained by using
a \emph{multiplicative} gradient descent. To this end, one
considers a multiplicative perturbation with a test function $v$ and
computes the variation
$\delta_v^*E:=
\left.\frac{\mathrm{d}}{\mathrm{d}\varepsilon}E[u(1+\varepsilon v)]
\right|_{\varepsilon=0}$. Analogous to the ordinary G{\^{a}}teaux derivative
$\delta E/\delta u$ above, a ``multiplicative gradient'' $G$ is then
derived from the requirement $\delta_v^*E=\left\langle G,v\right\rangle$.
One finds $G=u\cdot \delta E/\delta u$, which constitutes a
new derivation of the gradient descent \eqref{VGDphi}
without the substitution of $u$.

\section{Robust and Regularised Richardson-Lucy Deconvolution}\label{sec-rrrl}

For given $f$, $H$, equation \eqref{RL}
can be understood as a fixed point iteration associated to the minimisation
of the functional
\eqref{RLfunc},
compare \cite{Snyder-TIP92}.
This is the so-called \emph{information divergence} introduced by
Csisz\'ar \cite{Csiszar-AS91}.
The asymmetric penaliser function
\begin{equation}
r_f(w)=w-f-f \ln \frac wf
\end{equation}
is strictly convex for $w>0$ with its minimum at $w=f$.

As a necessary condition for $u$ to be a minimiser of \eqref{RLfunc},
one can compute an Euler-Lagrange equation which in this case becomes
particularly simple as no derivatives of $u$ are present in the integrand.
In view of the positivity requirement for $u$ we start by a
multiplicative perturbation of \eqref{RLfunc} with a test function $v$,
\begin{align}
\left.\frac{\mathrm{d}}{\mathrm{d}\varepsilon}E_{f,H}[u(1+\varepsilon v)]
\right|_{\varepsilon=0}
&
=
\frac{\mathrm{d}}{\mathrm{d}\varepsilon}
\int\limits_{\varOmega}
\biggl(H\circledast \bigl(u(1+\varepsilon v)\bigr)
-f-
f\ln\frac{H\circledast \bigl(u(1+\varepsilon v)\bigr)}{f}\biggr)
\,\mathrm{d}\bm{x}
\bigg|_{\varepsilon=0}
\notag
\\
&=
\int\limits_\Omega \left(1-\frac{f}{H\circledast u}\right)\,
\bigl(H\circledast (uv)\bigr)
\,\mathrm{d}\bm{x}
\;.
\end{align}
With \eqref{intopH} for the integral operator $\circledast$ this becomes
\begin{equation}
\int\limits_\varOmega \int\limits_\varOmega
\left(1-\frac{f}{H\circledast u}\right)(\bm{x})\,
H(\bm{x},\bm{y})\,u(\bm{y})v(\bm{y}) \,\mathrm{d}\bm{y} \,\mathrm{d}\bm{x}
\end{equation}
and, after changing the order of integration and rewriting $H$ into $H^*$,
\begin{align}
\int\limits_\varOmega \int\limits_\varOmega
\left(1-\frac{f}{H\circledast u}\right)(\bm{x})\,
H^*(\bm{y},\bm{x})\,u(\bm{y})v(\bm{y}) \,\mathrm{d}\bm{x} \,\mathrm{d}\bm{y}
&
=
\int\limits_\varOmega
\left(H^* \circledast \left(1-\frac{f}{H\circledast u}\right)
\right)uv \,\mathrm{d}\bm{x} \;.
\end{align}
Requiring that this expression vanishes for all test functions $v$ yields the
minimality condition
\begin{equation}
\label{RLEL}
\left(H^* \circledast \left(1-\frac{f}{H\circledast u}\right)\right)u = 0\;.
\end{equation}
Because of the energy conservation property $H^*\circledast 1=1$ one
sees that \eqref{RL} is a fixed point iteration for \eqref{RLEL}.

\subsection{Regularisation}

In the presence of noise the functional \eqref{RLfunc} is not
minimised by a smooth function $u$; in fact, the fixed-point iteration
shows the above-mentioned semi-convergence behaviour and
diverges for $k\to\infty$. From the variational viewpoint,
the functional \eqref{RLfunc} needs to be regularised.
In standard Richardson-Lucy deconvolution, this regularisation is provided
implicitly by stopping the iteration after a finite number of steps.
The earlier the iteration is stopped, the higher is the degree of
regularisation.
Although this sort of regularisation is not represented in the
functional \eqref{RLfunc},
the variational picture is advantageous because \eqref{RLfunc} can be modified
in the same flexible way as standard variational approaches.
The structure of the iterative minimisation procedure is preserved
throughout these modifications, which leads to good computational efficiency.

Let us first note that
by limiting the growth of high-frequency signal components, regularisation
has a smoothing effect that in deconvolution problems acts contrary to
the intended image sharpening. It is desirable to steer this
effect in such a way that it interferes as little as
possible with the enhancement of salient image structures, such as edges.

Implicit regularisation by stopping, however, allows little control
over the way it affects image structures.
For this reason, it makes sense to introduce a variational regularisation
term into the objective functional. This yields the functional
\begin{equation}
\label{NRRLfunc}
E_{f,H}[u] = \int\limits_{\Omega} \left(
r_f(H\circledast u)
+ \alpha\, \varPsi(\lvert\nabla u\rvert^2)
\right)
\,\mathrm{d}\bm{x}
\end{equation}
in which the Richardson-Lucy data term is complemented by a regulariser
whose influence is weighted by the regularisation weight $\alpha>0$.
Concerning the penalisation function $\varPsi(\,\cdot\,)$ in the regulariser,
our discussion from Section~\ref{sec-exdcvm} applies analogously.
With the total variation regulariser given by $\varPsi(z^2)=\lvert z\rvert$,
the energy functional \eqref{NRRLfunc} corresponds to
the method proposed (in space-invariant formulation) by Dey et
al.\ \cite{Dey-isbi04,Dey-MRT06}; compare also the more recent work
\cite{Sawatzky-aip10} for a similar approach.

The Euler-Lagrange equation for \eqref{NRRLfunc} under multiplicative
perturbation is given by
\begin{equation}
0 = \biggl(H^* \circledast \left(1-\frac{f}{H\circledast u}\right)
- \alpha\, \operatorname{div} \bigl(\varPsi'(\lvert\nabla u\rvert^2)\,\nabla u\bigr)
\biggr) \cdot u \;,
\label{NRRLEL}
\end{equation}
which combines \eqref{RLEL} with the
same
multiplicative gradient for the regulariser
as in \eqref{VGDphi},
compare \cite{Welk-ibpria07}.

In converting this into a fixed point iteration, we evaluate the divergence
expression with $u=u^k$, yielding
$D^k:=\alpha \operatorname{div} \left(\varPsi'(\lvert\nabla u^k\rvert^2)\,\nabla u^k
\right)$. Dependent on whether the factor $u$ with which the divergence
term in \eqref{NRRLEL} is multiplied is chosen as $u^k$ or $u^{k+1}$,
the right-hand side of \eqref{RL} either receives the additional summand
$D^k$, or is divided by $(1-D^k)$. However, $D^k$ can have either
sign, and a negative value in the numerator or denominator will lead to
a violation of the positivity requirement.
For this reason, we choose the outer factor for $D^k$ as $u^k$ if $D^k>0$,
or $u^{k+1}$ if $D^k<0$. Using the abbreviations
$[z]_\pm:=\frac12(z\pm\lvert z\rvert)$
we can therefore write our final fixed point iteration as
\begin{equation}
u^{k+1} =
\frac
{H^*\circledast \left(\frac{f}{H\circledast u^k}\right) +
\alpha \left[\operatorname{div}\bigl(
\varPsi'(\lvert\nabla u^k\rvert^2)\,\nabla u^k\bigr)\right]_+}
{1 -
\alpha \left[\operatorname{div}\bigl(
\varPsi'(\lvert\nabla u^k\rvert^2)\,\nabla u^k\bigr)\right]_-}
u^k\;.
\label{NRRL}
\end{equation}
We will refer to this method as \emph{regularised RL}.

\subsection{Robust Data Terms}

Up to scaling and shifting, the asymmetric penaliser function $r_f(w)$
equals the logarithmic density of a Gamma distribution.
Minimisation of the integral \eqref{RLfunc} thus corresponds to
a Bayesian estimation of the sharp image assuming a Poisson distribution
for the intensities, with the Gamma distribution as conjugate prior.

In
variational deconvolution, it has turned out useful
to replace quad\-ra\-tic data terms that mirror a Gaussian noise model
by robust data terms associated with ``heavy-tailed'' noise distributions.
Not only can the resulting model handle extreme noise but it can also
cope with imprecisions in the blur model.
Following this idea, we replace the data term of \eqref{NRRLfunc}
by one that is adapted to a broader distribution on $\mathbb{R}^+$.
To retain the structure of the fixed point iterations \eqref{RL}
and \eqref{NRRL}, we
keep $r_f(H\circledast u)$ in the data term, but apply a
penaliser function $\varPhi$ that grows less than linear.

Our modified functional therefore reads
\begin{equation}
\label{RRRLfunc}
E_{f,H}[u] = \int\limits_\Omega \left(
\varPhi\bigl(r_f(H\circledast u)\bigr)
+ \alpha\, \varPsi(\lvert\nabla u\rvert^2)
\right)
\,\mathrm{d}\bm{x} \;.\kern-.7em
\end{equation}

By an analogous derivation as before, one obtains for \eqref{RRRLfunc}
the minimality condition
\begin{align}
\label{RRRLEL}
0 &= \biggl(H^* \circledast \left( \varPhi'\bigl(r_f(H\circledast u)\bigr)
\left(1-\frac{f}{H \circledast u}\right) \right)
- \alpha\,\operatorname{div}\bigl(\varPsi'(\lvert\nabla u\rvert^2)\,\nabla u\bigr)
\biggr) \cdot u
\end{align}
that leads to
the new fixed point iteration
\begin{equation}
u^{k+1} =
\frac
{
H^*\circledast\left(\varPhi'\bigl(r_f(H\circledast u)\bigr)\,
\frac{f}{H\circledast u^k}
\right)+
\alpha \left[\operatorname{div}\bigl(
\varPsi'\bigl(\lvert\nabla u^k\rvert^2\bigr)\,\nabla u^k\bigr)\right]_+
}
{
H^*\circledast\varPhi'(r_f(H\circledast u))
-
\alpha \left[\operatorname{div}\bigl(
\varPsi'(\lvert\nabla u^k\rvert^2)\,\nabla u^k\bigr)\right]_-
}
\,\cdot\,
u^k
\label{RRRL}
\end{equation}
which we call \emph{robust and regularised RL deconvolution} (RRRL).
Comparing to \eqref{NRRL}, computational cost grows by one more
convolution and the evaluation of $\varPhi'$.

Clearly, \eqref{RRRL} contains regularised RL \eqref{NRRL} as
special case ($\varPhi'\equiv 1$). Similarly, $\alpha=0$ yields a
non-regularised method which we will call \emph{robust RL deconvolution}.

\subsection{Multi-Channel Images}

Assume now that the blurred image is a multi-channel image
$\bm{f}=(f_i)_{i\in\varGamma}$ with a channel index set $\varGamma$,
e.g.\ an RGB colour image, whose channels are uniformly blurred, i.e.\
the PSF $H$ is equal for all channels.
Replacing
the expressions $r_f(H\circledast u)$
and $\lvert\nabla u\rvert^2$ in the arguments of $\varPhi$ and $\varPsi$
with their sums over image channels,
$R=\sum\limits_{i\in \varGamma}r_{f_i}(H\circledast u_i)$ and
$G=\sum\limits_{i\in \varGamma}\lvert\nabla u_i\rvert^2$, we obtain
as multi-channel analog of \eqref{RRRL} the functional
\begin{equation}
\label{RRRLMCfunc}
E_{\bm{f},H}[\bm{u}] = \int\limits_\Omega \bigl(
\varPhi(R)
+ \alpha\, \varPsi(G)
\bigr)
\,\mathrm{d}\bm{x}
\;.
\end{equation}

This yields as the iteration rule for multi-channel RRRL
\begin{equation}
u_j^{k+1} =
\frac
{
H^*\circledast\left(\varPhi'(R)\, \frac{f_j}{H\circledast u_j^k}\right)
+
\alpha \left[\operatorname{div}\left( \varPsi'(G)\, \nabla u_j^k\right)\right]_+
}
{
H^*\circledast\varPhi'(R) - \alpha \left[\operatorname{div}\left( \varPsi'(G)\,
\nabla u_j^k\right)\right]_-
}
\,\cdot\,
u_j^k\;.
\label{RRRLMC}
\end{equation}
The same procedure works for the non-robust and/or non-regularised RL variants.
Note that in the case of standard RL this boils down to channel-wise
application.

\subsection{Stability}\label{ssec-stab}

The regularised RL model by Dey et al.\ \cite{Dey-MRT06} places the
regularisation only in the denominator of the fixed point iteration
rule. This imposes a tight bound on $\alpha$:
as soon as
$\alpha\,\operatorname{div}\left( \varPsi'(G)\,\nabla u_j^k\right)$ exceeds $1$,
positivity is violated, and the iteration becomes unstable,
In our iteration rule, sign-dependent distribution of
divergence expressions to the enumerator and denominator prevents positivity
violations, thus enabling larger values of $\alpha$.

Nevertheless, for substantially larger values of $\alpha$ instabilities
are observed which can be attributed to amplifying
perturbations of high spatial frequency in almost homogeneous image regions.
In \cite{Persch-MST13x} therefore a modification of the fixed point
iteration to optimise \eqref{RRRLfunc} has been proposed that guarantees
stability for arbitrary $\alpha$.
A detailed analysis of stability bounds on $\alpha$ in the
iteration \eqref{RRRL} will be given in a forthcoming publication.

\section{Experiments}\label{sec-exp}

We turn now to evaluate the performance of our newly developped deconvolution
methods, and comparing them to existing approaches. Methods chosen for
comparison include classical Richardson-Lucy deconvolution, variational
gradient descent methods, and the methods from
\cite{Krishnan-nips09,Wang-SIIMS08} which are advocated for performant
deblurring in several recent papers, see e.g.\ \cite{Hirsch-iccv11}.

\subsection{Deconvolution of Synthetic Data}

We start our tests on
grey-value images that are synthetically blurred by convolution.
Since in this case the correct sharp image is known, we can rate restoration
quality by the signal-to-noise ratio
\begin{equation}
\label{SNR}
\mathrm{SNR}(u,g) = 10~\mathrm{log}_{10}\frac{\mathrm{var}(g)}
{\mathrm{var}(g-u)}\,\mathrm{dB}
\;.
\end{equation}
Here, $g$ and $u$ are the original sharp image and restored image,
respectively.
By $\mathrm{var}(v)$ we denote the variance of the image $v$.
One should be aware that SNR measurements do often not capture
visual quality of deblurred images very well. The parameters in our
experiments are optimised primarily for visual quality, not for SNR.

We remark also that in synthetically blurring images, we use convolution
via the Fourier domain, which involves treating the image domain as periodic.
In contrast, we use convolution in the spatial domain in the variational
deconvolution procedures as well as in the Richardson-Lucy method and its
modifications.
This discrepancy in the
convolution procedure and boundary treatment is by purpose: it helps
to prevent ``inverse crimes'' \cite{Colton-Book92} that could unduly
embellish results. Moreover, our implementations can thereby easily be
adapted to spatially variant blurs.

The methods from \cite{Krishnan-nips09,Wang-SIIMS08}
require computations in the Fourier transforms by design.

\begin{figure}[t!]
\centering
\begin{tabular}{@{}c@{~}c@{~}c@{~}c@{~}c@{}}
\includegraphics[width=0.19\textwidth]{cam-a.eps}&
\includegraphics[width=0.19\textwidth]{cam1-b.eps}&
\includegraphics[width=0.19\textwidth]{cam1-rl1-c.eps}&
\includegraphics[width=0.19\textwidth]{cam1-nrrl1-d.eps}&
\includegraphics[width=0.19\textwidth]{c12-k23-01-e.eps}\\
\includegraphics[width=0.19\textwidth]{cam1-rv-f.eps}&
\includegraphics[width=0.19\textwidth]{cam1-rvp-g.eps}&
\includegraphics[width=0.19\textwidth]{cam1-rnrl1-h.eps}&
\includegraphics[width=0.19\textwidth]{cam1-rrrl1-i.eps}&
\includegraphics[width=0.19\textwidth]{cam1-rrrl2-k.eps}
\end{tabular}
\caption{\label{f-sy1-sivp}%
\textbf{(a)}~\emph{Cameraman} image, $256\times256$ pixels.
\textbf{(b)}~Moderately blurred, and $15\,\%$ of all pixels replaced by
uniform noise; SNR: $3.66\,\mathrm{dB}$.
Insert shows PSF (four times enlarged).
\textbf{(c)}~Image from (b)
deblurred by standard RL \eqref{RL}, $10$ iterations;
SNR: $2.28\,\mathrm{dB}$.
\textbf{(d)}~Regularised RL \eqref{NRRL}, $\alpha=0.1$,
$100$ iterations;
SNR: $6.40\,\mathrm{dB}$.
\textbf{(e)}~Deblurred by the method from \cite{Krishnan-nips09},
$\lambda=1$, $\beta$ from $1$ to $256$ with step factor $2\sqrt2$,
$1$ iteration per level,
SNR: $3.62\,\mathrm{dB}$.
\textbf{(f)}~Robust variational deconvolution without constraints
\cite{Welk-dagm05} using $L^1$ data term and Perona-Malik regulariser
($\lambda=15$), regularisation weight $\alpha=0.06$;
SNR: $16.03\,\mathrm{dB}$.
\textbf{(g)}~Same but with positivity
constraint, see \cite{Welk-ibpria07} and Section~\ref{sec-rrrl},
regularisation weight $\alpha=0.06$;
SNR: $15.42\,\mathrm{dB}$.
\textbf{(h)}~Robust RL, $50$ iterations;
SNR: $6.42\,\mathrm{dB}$.
\textbf{(i)}~RRRL \eqref{RRRL}
with regularisation weight $\alpha=0.005$, $200$ iterations;
SNR: $14.41\,\mathrm{dB}$.
\textbf{(k)}~Same but $2000$ iterations; SNR: $14.21\,\mathrm{dB}$.
}
\end{figure}

\begin{figure}[t!]
\centering
\begin{tabular}{@{}c@{~}c@{~}c@{~}c@{}}
\includegraphics[width=0.19\textwidth]{cam2-a.eps}&%
\includegraphics[width=0.19\textwidth]{c21-k23-03-b.eps}&%
\includegraphics[width=0.19\textwidth]{cam2-rl-c.eps}&%
\includegraphics[width=0.19\textwidth]{cam2-nrrl-d.eps}
\end{tabular}
\caption{\label{f-sy2a}%
\textbf{(a)}~\emph{Cameraman} image from Figure~\ref{f-sy1-sivp}(a)
severely blurred, and $30\,\%$ of all pixels
replaced by uniform noise, signal-to-noise ratio: $0.26\,\mathrm{dB}$.
Insert shows PSF (true size).
\textbf{(b)}~Deblurred by the method from \cite{Krishnan-nips09},
$\lambda=0.5$, $\beta$ from $1$ to $256$ with step factor $\sqrt2$,
$5$ iterations per level,
SNR: $0.52\,\mathrm{dB}$.
\textbf{(c)}~Deblurred by RL \eqref{RL}, $10$ iterations,
SNR: $0.09\,\mathrm{dB}$.
\textbf{(d)}~Regularised RL \eqref{NRRL}, $100$ iterations,
with regularisation weight $\alpha=0.05$;
SNR: $2.32\,\mathrm{dB}$.
}
\end{figure}

\begin{figure}[t!]
\centering
\begin{tabular}{@{}c@{~}c@{~}c@{~}c@{}}
\includegraphics[width=0.19\textwidth]{cam2-rnrl-a.eps}&%
\includegraphics[width=0.19\textwidth]{cam2-rrrl-b.eps}&%
\includegraphics[width=0.19\textwidth]{cam2-rv-c.eps}&%
\includegraphics[width=0.19\textwidth]{cam2-rvp-d.eps}
\end{tabular}
\caption{\label{f-sy2b}%
\textbf{(a)}~Image from Figure~\ref{f-sy2a}(b) deblurred by
robust RL, $100$ iterations,
SNR: $1.84\,\mathrm{dB}$.
\textbf{(b)}~RRRL \eqref{RRRL} with
regularisation weight $\alpha=0.003$, $400$ iterations;
SNR: $7.42\,\mathrm{dB}$.
\textbf{(c)}~Robust variational deconvolution without constraint,
$\alpha=0.06$; SNR: $7.52\,\mathrm{dB}$.
\textbf{(d)} Robust variational deconvolution with positivity
constraint, $\alpha=0.09$; SNR: $7.60\,\mathrm{dB}$.
}
\end{figure}

\paragraph{First series of experiments.}
In this series of experiments
(Figure~\ref{f-sy1-sivp}),
we blur the \emph{cameraman} image,
Figure~\ref{f-sy1-sivp}(a),
by an irregularly shaped point-spread function
of moderate size and apply impulsive (uniform) noise (b).
The so degraded
image can be deblurred to some extent by standard RL,
(c),
but noise is severely amplified, and dominates the result when
the iteration count is increased for further
sharpening.
Regularised RL
visibly reduces the
noise effect, see
frame~(d).

Turning to classical variational approaches, we consider in
frame~(e)
the iterative method from \cite{Krishnan-nips09}.
Minimising an energy functional with quadratic data term and an edge-enhancing
regulariser, it still suffers from severe noise effects in our example.
The closely related method from \cite{Wang-SIIMS08} as well as other
TV deconvolution approaches lead to similar results.

Robust variational deconvolution achieves a significantly better
restoration, see
frame~(f)
where the method from \cite{Welk-dagm05} without positivity constraint is
used, and
frame~(g)
with positivity constraint as in \cite{Welk-ibpria07} and
Section~\ref{sec-rrrl}.
Visually, both variational approaches lead to a comparable
restoration quality.
In
this example the
positivity constraint bears no improvement,
due to the fact that
artifact suppression by the positivity constraint takes effect mainly in dark
image regions which play only a minor role in the cameraman image.

Using robust RL without regularisation as in
frame~(h)
reduces the noise to an extent comparable to the regularised method in
(d).
With more iterations,
however, the noise still becomes dominant, thus limiting the possible
deconvolution quality.
Robust and regularised RL allows fairly good deblurring while only small
rudiments of noise remain, see
Figure~\ref{f-sy1-sivp}(i).
Even if the iteration count is drastically increased, such that the
implicit regularisation by stopping takes only little effect, the explicit
regularisation remains effective
(k)
and keeps the noise level low.
Indeed, the reconstruction quality comes close, both visually and in terms
of SNR, to that achieved by state-of-the-art robust variational
deconvolution as shown before in
(f) and (g).

\paragraph{Second series of experiments.}
Encouraged by the previous findings, we increase blur and noise in our
second series of experiments (Figures~\ref{f-sy2a}--\ref{f-sy2b}). Under the
influence of a drastically larger simulated motion blur and doubled noise
intensity, see Figure~\ref{f-sy2a}(a),
classic RL gives no longer usable results~(c). The same is true for
the method from \cite{Krishnan-nips09}, see Subfigure~(b).
Regularised RL and robust RL can again cope better with the noise but
their outcomes are far from satisfactory, see Figure~\ref{f-sy2a}(d) and
\ref{f-sy2b}(a). A significant improvement is obtained with
robust and regularised RL, Figure~\ref{f-sy2b}(b), as well as with
robust variational deconvolution without constraints (c) or with
positivity constraint (d).
Although the restoration quality is still imperfect, the three last mentioned
methods are eye to eye in terms of visual quality and SNR.

\begin{figure}[!]
\centering
\begin{tabular}{@{}c@{~}c@{}}
\includegraphics[width=0.24\textwidth]{paris-a.eps}&
\includegraphics[width=0.24\textwidth]{paris-rrrl3-b.eps}
\end{tabular}
\caption{\label{f-rwc-sivp}%
\textbf{(a)} Colour photograph (Paris from Eiffel Tower) blurred during
acquisition, $480\times480$ pixels. Insert shows approximate PSF
used for deconvolution (same as in Figure~\ref{f-sy1-sivp}(b),
eight times enlarged).
\textbf{(b)}~RRRL with Perona-Malik regulariser ($\lambda=13$),
$\alpha=0.002$, $300$ iterations.
}
\end{figure}

\begin{figure}[t!]
\centering
\begin{tabular}{@{}c@{~}c@{~}c@{~}c@{}}
\includegraphics[width=0.24\textwidth]{parisx-rl1-a.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rl2-b.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rv1-c.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rv2-d.eps}\\
\includegraphics[width=0.24\textwidth]{parisx-rvp1-e.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rvp2-f.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rrrl1-g.eps}&
\includegraphics[width=0.24\textwidth]{parisx-rrrl3-h.eps}
\end{tabular}
\caption{\label{f-rwc2}%
Detail from deconvolution results for the image from
Figure~\ref{f-rwc-sivp}(a).
\textbf{(a)}~RL, 20 iterations.
\textbf{(b)}~RL, 30 iterations.
\textbf{(c)}~Robust variational deconvolution using Perona-Malik regulariser
($\lambda=26$) without constraints,
regularisation weight $\alpha=0.06$.
\textbf{(d)}~Same but $\alpha=0.03$.
\textbf{(e)}~Robust variational deconvolution using Perona-Malik regulariser
($\lambda=26$) with positivity constraint,
regularisation weight $\alpha=0.06$.
\textbf{(f)}~Same but $\alpha=0.03$.
\textbf{(g)}~RRRL with TV regulariser, $\alpha=0.002$,
$80$ iterations.
\textbf{(h)}~RRRL with Perona-Malik regulariser
($\lambda=13$) and $\alpha=0.002$, $300$ iterations,
see Figure~\ref{f-rwc-sivp}(b).
}
\end{figure}

\begin{table}[b!]
\caption{\label{t-rwc}%
Approximate computational expense for deconvolution results shown in
Figures
\ref{f-rwc-sivp} and~\ref{f-rwc2}.
Absolute computation times, which are given for rough orientation,
were measured for single-threaded calculation on a Phenom X4 at 3.0 GHz
by a non-optimised implementation.}
\medskip
\centering
\begin{tabular}{|l|c|c|c|}
\hline
Method & Iterations & Run time & Cost factor \\
& & (s) & w.r.t.\ RL \\
\hline
Standard RL & 20 & 8.9 & 1.0 \\
Variational & 1500 & 792 & 89.0 \\
RRRL (TV) & 80 & 59.6 & 6.7 \\
RRRL (PM) & 300 & 221 & 24.8 \\
\hline
\end{tabular}
\end{table}

In order to achieve its high restoration quality,
RRRL required in both synthetic experiments significantly higher
computational effort than standard RL. However, run times still remained
by a factor $3\ldots5$ below those for the robust variational model from
literature. This is caused by the favourable structure of the minimality
condition and the fixed point iteration obtained from it. In contrast,
minimisation of the classical variational model becomes very slow when
getting close to the optimum, thus requiring much more iterations.

\subsection{Deconvolution of Real-World Images}

Our last experiment (Figures
\ref{f-rwc-sivp}--\ref{f-rwc2}) is based on real-world data.
The colour photograph shown in
Figure~\ref{f-rwc-sivp}(a)
was blurred during acquisition with an unknown point-spread function
that is inferred approximately from the shape of a point light source.
For restoration, we use the multi-channel versions of our methods.

Restoration by standard RL
achieves a decent acuity at moderate computational cost,
see
the detail view, Figure~\ref{f-rwc2}(a). Increasing the number of iterations
quickly leads to ringing artifacts that are visible as shadows in the
vicinity of all high-contrast image structures, see Figure~\ref{f-rwc2}(b).

Variational deconvolution with a robust $L^1$ data term and Perona-Malik
regulariser allows a visible improvement in acuity over RL deconvolution
while reducing artifacts, see
the detail view in Figure~\ref{f-rwc2}(c).
Using the positivity-constrained gradient descent
\eqref{VGDphi}
brings about a further significant improvement, see Figure
\ref{f-rwc2}(f). Due to the better suppression
of ringing artifacts the regularisation weight $\alpha$ could be reduced by
half here -- in contrast, unconstrained variational deconvolution with the
same reduced $\alpha$ creates much stronger artifacts, see
Figure~\ref{f-rwc2}(d).
Imposing the constraint but retaining the larger weight $\alpha$, see
Figure~\ref{f-rwc2}(e), already improves acuity but still smoothes out
more fine details than in Figure~\ref{f-rwc2}(f).

The excellent restoration quality of variational deconvolution, however,
comes at the cost of significantly increased computation time needed in
order to approximate the steady state.
Robust and regularised Richardson-Lucy deconvolution as shown in the last
rows of
Figure~\ref{f-rwc2}
provides an attractive
compromise between standard RL and the variational gradient descent.
Figure~\ref{f-rwc2}(g) shows
a RRRL result with TV regulariser which can be computed fairly fast.
With the Perona-Malik regulariser instead, see
Figures~\ref{f-rwc-sivp}(b)
and \ref{f-rwc2}(h),
more iterations are required in order
for the edge-enhancing properties of the regulariser to pay off, but still
the computation time is lower than with the gradient descent algorithm,
compare also Table~\ref{t-rwc}.
In terms of restoration quality, both RRRL results range between the
variational deconvolution without and with constraints.
We remark
that the test image consisting of
large dark regions with few highlights makes the positivity constraint
particularly valuable.

\section{Conclusions}\label{sec-conc}

In this paper,
we have investigated Richardson-Lucy deconvolution from the
variational viewpoint. Based on the observation \cite{Snyder-TIP92} that the
RL method can be understood as a fixed point iteration associated to
the minimisation of the information divergence \cite{Csiszar-AS91},
it is embedded into the framework of variational methods.
This allows in turn to apply to it the modifications that have
made variational deconvolution the flexible and high-quality deconvolution
tool that it is. Besides regularisation that has been proposed before
in \cite{Dey-isbi04}, we have introduced robust data terms into the model.
As a result, we have obtained a novel robust and regularised Richardson-Lucy
deconvolution method that competes in quality with state-of-the-art variational
methods, while in terms of numerical efficiency it moves considerably closer
to Richardson-Lucy deconvolution.

\bigskip
\noindent\textbf{Acknowledgement.}
Part of the work on this paper was done while the author was affiliated with
MIA group, Saarland University, Saarbr\"ucken, Germany, see \cite{Welk-tr10}.

redpajama_set_name: RedPajamaArXiv


Peintures à l'huile couleurs. . Airbrush cake decorating machine. . Place of origin: Henna paste cone. Airbrush compressor kit features: 1x22cc airbrush glass jars & 1x5cc metal cup. 28psi. Fake tattoo.
100% brand new. Double-action airbrush gunProduits de protection solaire. . Dual action airbrush kit/airbrush spray gun. Airbrush nail kit/ airbrush nail art machine. Airbrush tattoo inks. Tattoos of peacocks. 0.3mm nozzle air brush spray gun. .
. 270 g. . . N-st32-16r. . . Airbrush jar for: Special wax. .


text:
Why Transitional Workforce Strategies Are Needed Now
By Melissa Young , Chris Warland & Livia Lam
April 22, 2020 at 5:00 am ET
Both the public health and economic fallouts from the COVID-19 outbreak are expected to be massive. Making certain our essential workforce is protected through expanded paid leave, ensured food and housing assistance, enhanced unemployment insurance, cash payments and other targeted measures is decisively the blunt force needed for short-term countercyclical change. As the country mobilizes to beat the public health crisis, we must do even more to prepare our workforce against the economic devastation to come.
Even before the outbreak, job quality and working conditions were awful for low-wage workers. Now these workers are on the frontline of this crisis or they have been laid off as their employers are closing shop. The crisis has laid bare long-standing structural problems that have generated precarious employment conditions and job insecurity in the American labor market. The coronavirus recession only magnifies economic inequality by how women, people of color and immigrants are disproportionately impacted and why the need to strengthen protections for our workforce is urgent.
Moving forward, large-scale federal jobs programs and workforce responses that aim to change existing employment structures are necessary to counter the magnitude of growing coronavirus cases and snowballing job losses. Despite enacting targeted economic relief for small and mid-sized employers and bailouts for large corporations, post-COVID-19 unemployment is estimated to reach 30 percent or higher, and unemployment claims are already spiking to unprecedented levels. As layoffs accelerate, what's needed is a comprehensive response. Guided by the principle that everyone who wants to work should have access to a quality job, subsidized employment is a proven workforce strategy for people looking for work.
Looking back, the 2009 Recovery Act responded to an extraordinarily severe loss of jobs caused by the Great Recession. States were given resources to implement subsidized employment strategies quickly and cost-effectively, putting large numbers of people into jobs who would not otherwise be working. These strategies were popular with workers and employers alike. In addition, several studies of transitional jobs programs — which combine subsidized employment with training and support services and are targeted to people who face more barriers to employment — showed that chronically unemployed individuals are eager to work when their barriers to employment are addressed.
While the subsidized jobs programs made a significant impact on increasing employment during the last recession, these efforts only met a fraction of the overall need at that time. As Congress contemplates its next set of relief measures, federally funded workforce responses should be proportionally larger than what was earmarked for the last recession. These responses must also be designed to ensure equitable outcomes in employment for communities disproportionately affected by both the pandemic and the resulting economic fallout. That means federal interventions to boost employment must aim to narrow jobs deficits while also addressing systems reforms designed to expand workforce consumer protections.
To implement effective subsidized jobs initiatives, states need to be equipped to employ subsidized workers directly in public service and infrastructure jobs in addition to private sector employment. Additionally, any plans to beef up existing workforce programming should set aside funding for transitional jobs programs targeted to the workers most in need to help ensure that subsidized employment is available to chronically unemployed individuals who have difficulty accessing work even in a good economy.
Specifically, these workforce response activities should include benchmark and reporting data for racial and gender equity in employment outcomes as well as incorporate a dashboard of multiple indicators to measure job quality. Policymakers should also apply guardrails to ensure that the availability of subsidized employment is not used to deny eligible people support that help them afford basics like food and medicine, or to compel people to accept subsidized employment as a condition of receiving basic support.
Perhaps surviving this economic crisis shouldn't have demanded worker protections as an emergency response. The reality moving forward is that we need workforce responses that drive equitable access to labor markets over the long-term. Let's not look back on this extraordinary moment as the time we turned our back on low-wage workers yet again.
Melissa Young is a senior director in the research and policy division at the Heartland Alliance. Chris Warland is an associate director for national initiatives at the Heartland Alliance. Livia Lam is a senior fellow and director of workforce development policy at the Center for American Progress.
Finance Briefing
Get the latest global financial news and analysis delivered to your inbox every morning.


Last month, former BC Premier Mike Harcourt (1991-1995) quit the NDP, frustrated by some of the positions the party has taken since he led it to victory, and by political gaffes that cost it the last election.
Harcourt lectures around the world about sustainable cities, and is Associate Director of UBC's Centre for Sustainability. He was mayor of Vancouver from 1980 to 1986, when planning for Expo 86 began the transformation of a largely suburban city into the lively urban form called Vancouverism. Yet this year he criticized the NDP for sending the wrong message to working-class rural communities that survive on resource extraction, because just before the election it opposed the Kinder-Morgan Pipeline. Does he see two economic futures for the province, one urban, the other rural and resource-based? Is a political transition to less-intensive resource policies possible? Or is it resource extraction that makes urban life possible?
Those are some of the issues to start. Then we invite your questions, opinions and comments. It's a conversation! Feel free to bring your lunch.