# Tag Info

## Hot answers tagged deconvolution

13

I've explained it once on StackOverflow. Your signal can be represented as a vector, and convolution is multiplication with an N-diagonal matrix (where N is the length of the filter). I am assuming for the sake of the answer that the filter is much smaller than the signal For example: Your vector/signal is: V1 V2 ... Vn Your filter (convolving element) ...

9

Since convolution describes the operation of a linear time-invariant (LTI) system, the question is if the effect of an LTI system can be compensated by another LTI system. In the discrete-time domain you can use the $\mathcal{Z}$-transform to analyze LTI systems. If a signal $x(n)$ (with $\mathcal{Z}$-transform $X(z)$) is filtered by a system with impulse ...

8

Both are the MMSE estimators. The main difference is Wiener is the optimal for Gaussian Noise while Richardson Lucy assumes Poisson Noise. Poisson Noise is a better model for noise in photos captured by a Photo Diode. Computationally, in the case of Gaussian Noise and Linear Convolution the solution has a closed form solution in the Maximum Likelihood / ...

8

There's a couple subquestions that I'll address separately: Convolution in the spatial domain (or correspondingly in the time domain for time-sampled signals) is equivalent to multiplication in the frequency domain. In sampled systems, there are some subtleties to boundary cases (i.e. when using the DFT, multiplication in the frequency domain actually gives ...

8

I think you are constructing the convolution matrix incorrectly. Let's do an easy example with some numbers to see how it is constructed Let's imagine that youhave the following vectors of dimensions $M$ and $N$, And let's for the sake of it, say that $M = 5$ and $N = 4$ $\mathbf{a} = [a_{1},a_{2},a_{3},a_{4}]^{T}$ $\mathbf{b} = [b_{1},b_{2},b_{3},b_{4},... 7 Yes, you can do this with an LMS equalizer which uses the Wiener-Hopf equation to determine the least squared solution to the filter that would compensate for your channel, using the known transmit and receive sequences. The channel is the unknown being solved, and the tx and rx sequences are known. BOTTOM LINE: Here is the Matlab function with error ... 7 You cant't recover the original signal through deconvolution. A Gaussian kernel is in essence a lowpass filter, i.e. it will remove information at higher frequencies from the signal. Once it's gone, it's gone and you can't recover it. This problem shows up as "divide by zero" or "divide by a very small number", which then amplifies numerically noise of ... 6 This is a nice question. I will try solving it using 2 approaches (Which are basically the same). The solution is the Least Squares Solution: $$\hat{h} = \arg \min_{h} \frac{1}{2} \left\| h \ast x - y \right\|_{2}^{2}$$ We assume data is given in finite discrete form (As it is in practice). The convolution is done in valid mode (Like in MATLAB valid ... 6 No. It's only LTI (Linear and Time-Invariant) systems that can be modeled with convolution through a unique single impulse response. For example the systems $$y(t) = g(t) x(t)$$ or $$y[n] = \sum_{k=0}^{k < n} x[n-k]$$ are both linear but not time-invariant and their output$y[n]$cannot be computed with the convolution operation ($\star$denoting ... 5 I think this is still an open problem. There are numerous research papers that try to recover the original signal the best they can. One classic approach is through Wavelet-based Methods. There are also dictionary approaches like this one. You can get a more in-depth view of the problem by following the research done by David L. Donho, Michael Elad, ... 5 If you have added random noise you cannot get the original signal... You can try to separate the signals in the frequency domain (if the noise and the signal are of different frequencies). But it seems that what you are searching for is a Wiener filter. 5 For one variable, we have $$y(i) = \sum_m x(i-m) \cdot h(m).$$ For two variables it's $$y(i,j) = \sum_m \sum_n x(m,n) \cdot h(i-m,j-n).$$ For three: $$y(i,j,k) = \sum_m \sum_n \sum_p x(m,n,p) \cdot h(i-m,j-n,k-p).$$ 5 what about this: function [convolve] = myconv(x, y) L = length(x) + length(y) - 1 convolve = ifft(fft(x, L) .* fft(y, L)); end Using the convolution theorem. Regarding deconv function, check this out: x = randn(10,1); y = randn(10,1); L = length(x) + length(y) - 1; z = ifft(fft(x, L) .* fft(y, L)); z2 = conv(x, y); sum(abs(z-z2)) x2 = ifft(fft(... 4 It's an interesting problem. What you have there is what's known as a blind deconvolution problem. These are well known "hard" problems, but not necessarily impossible. Finding an algorithm to solve it relies on using some prior knowledge you have about the filter or the noise source driving it. It's an ill-posed problem mathematically, so if there is ... 4 1) The first equation should look like: h_pred = ifft2 ( fft2(k) ./ fft2(x) ). You have a small typo there, I believe. Make sure you first zero-pad the kernel to the size of image. 2) MATLAB also has a blind deconvolution function: http://www.mathworks.com/help/images/ref/deconvblind.html I don't know if you are referencing to this one, but for Toeplitz ... 4 This type of problem is called deconvolution. There are several approaches to tackle it, including Wiener filtering (another name for Wiener deconvolution), but there are many of them. Wiener filtering is not reserved to deblurring: it is to cancel linear degradation operators. As remarked by Aaron, it is very often an ill-posed problem and additional ... 4 A linear time-invariant (LTI) system is completely characterized by its impulse response$h(t)$. The output signal$y(t)$given an arbitrary input signal$x(t)$is given by the convolution of this input signal with the system's impulse response: $$y(t)=(x\star h)(t)\tag{1}$$ where$\star$denotes convolution. In the frequency domain, Eq. (1) becomes a ... 3 The function is based on Matlab's deconv, so reading that page should help understand it. Here's a docstring I wrote for SciPy's deconvolve, but haven't submitted yet because I'm not sure it's 100% correct: https://github.com/scipy/scipy/pull/430#issuecomment-13675004 The input to deconvolve is signal and divisor, and your output is quotient and remainder, ... 3 Yes, that conclusion would be valid. However, as you suspected, there are some limitations. Consider the case where the system's frequency response$Y[k]$contains one or more zeros. In that case, corresponding frequency bin in your estimate of the input signal$X[k]$would diverge to infinity (because of the division by zero). What you're really trying to ... 3 Deconvolution is in the general case not possible, so it needs to be approximated with application specific constraints and requirements. Let's look at a simple 1-dimensional example that illustrates the problem. Assume you have an impulse response like your kernel, i.e. h = [1 1 1]. Then let's look at the output of a signal (which you can think of a line ... 3 I will go to very beginning of the question. There are deconvolution functions in MATLAB which are used for image processing applications. However, you can also use these functions for 1D signals. For example, % a random signal sig_clean = zeros(1,200); sig_clean(80:100)=100; figure subplot(1,3,1) plot(sig_clean,'b-.','LineWidth',2) legend('Clean Signal') ... 3 I hope you have not made mistake in the way computation is done for - I convolve the image in the spatial domain with a 5x5 box filter. I FFT the filter, FFT the degraded image, then divide the degraded image by the filter. Inverse FFT the result into an image and I get garbage. Suppose your image is 256x256 size, and Filter is 5x5 - in order to ... 3 Deconvolution of a noisy data is known to be an ill-posed problem, since the noise is arbitrarily magnified in the reconstructed signal. Therefore, a regularization method is required to stabilize the solution. Here, you can find a MATLAB package that addresses this issue by implementing the Tikhonov's regularization algorithm: https://github.com/soheil-... 3 If I understood the problem properly, we can formalize the problem as follows: We have a signal model,$y = Hx + \eta$where$y$is the observation,$H$is the convolution operator, and$\eta$is the noise. We want to estimate$x$by using observation and the knowledge of characteristics of noise. In this case,$\eta$is simulated from a Poisson ... 3 For a real-valued signal$C$, the autocorrelation function$M$is a real-valued even function and the power spectral density$m$(Fourier transform of$M$) is a real-valued nonnegative even function. Now,$m(k) = c(k)c^*(k)$where$c$is the Fourier transform of$C$, as you correctly assert, but given only$m$and no other information about$c$(or$C$), it ... 3 Batman has given a great answer. You need to go through the recommended book in order to understand the concepts mentioned. Let me try to simplify it. BIG PICTURE: De-convolution or inverse filtering is required to retrieve an estimate of the original signal that went through an unknown linear system. Basically, we have a signal which went through an ... 3 First of all note that there is a certain ambiguity in the problem formulation because the approximation of$x(t)$has to be divided into the part represented by$x^{\prime}(t)$and the part represented by$f(y(t))$, and this division is not unique. The approach I chose is to start with a parametrization of$f(y(t))$, and approximate the given$x(t)$as well ... 3 What you want is $$x(t) = (x(t)\otimes h(t))\otimes h'(t)$$ where$\otimes$denotes convolution. Taking$Z$transform, $$X(z) = X(z) \times H(z) \times H'(z)$$ or $$H'(z) = \frac{1}{H(z)} \tag{1}$$ So you can deconvolve a convolution sum if you you have inverse transfer function as expressed in (1). For causal and stable system, the ROC of$H'(z)$must ... 3 Approaches There are many methods for Deconvolution (Namely the degradation operator is linear and Time / Space Invariant) out there. All of them try to deal with the fact the problem is Ill Poised in many cases. Better methods are those which add some regularization to the model of the data to be restored. It can be statistical models (Priors) or any ... 3 The idea is to represent all operation sing Matrices. Once it is done, it is easy to solve the problems as a Least Squares problems. The way to represent Convolution Operation using a Matrix is by Toeplitz Matrix. For 1D it is pretty straight forward to do (Just pay attention to boundary). So let's take the simple model in the comment:$\$ g = f \circ h + ...

Only top voted, non community-wiki answers of a minimum length are eligible