14

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 ...


9

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 ...


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

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

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

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 ...


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 ...


4

I will divide my answer into 3 sections. The Distribution of the Derivative of Images Take a real world image, any image. Apply the derivative operator on it (Namely apply the kernel $ \left[ 1, -1 \right] $ on it. Display the histogram of the filtered image. I took this image: The histogram I got is this: This distribution is very similar to Laplace ...


4

I would take approach based on Blind Deconvolution. Since we're dealing with ill posed problem some assumptions should be made. The intuitive approach would be using the information as a prior for the signal. Another idea is to add LPF assumption of the Filter by setting the sum of its coefficients to be 1 and non negative. Yet since we have Discrete ...


3

Taking a quick look at your acquisition: this doesn't look too terrible in terms of noise, however, the acquisition window looks way too short. With a 60ms window your frequency resolution is only 160 Hz. From the looks of it, you will also get a massive truncation error. As a rough rule of thumb, you want the acquisition window long enough so that the ...


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 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

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

The Wiener Filter can also be derived by another (Easier) way. Let's assume the following model: $$ y = h \ast x + n $$ Namely the data is a result of a linear combination (Convolution) of $ x $ with Additive Noise. If we assume the noise model is Gaussian and our data is also formed by a Gaussian distribution then we should try to minimize (MAP ...


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 ...


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