We’re rewarding the question askers & reputations are being recalculated! Read more.

# Tag Info

12

I've explained it once on StackOverflow. Your signal can be represented as a vector, and convolution is multiplication with a tridiagonal matrix. For example: Your vector/signal is: V1 V2 ... Vn Your filter (convolving element) is: [b1 b2 b3]; So the matrix is nxn: (Let it be called A): [b2 b3 0 0 0 0.... 0] [b1 b2 b3 0 0 0.... 0] [0 b1 b2 b3 ...

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},... 8 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 ... 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 An straightforward alternative to a Viterbi decoder for decoding convolutional codes is a Sequential Decoder. The algorithm is simpler, but the performance isn't as good. For example, the common constraint lengths for systems using Viterbi decoding are typically k = 7 or k = 9. A system decoded with a sequential decoder typically has a constraint length ... 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 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, ... 4 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. 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 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 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 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 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).$$ 3 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 ... 3 The noise which you defined will only shift your signal and only has zero frequency. i think you intended to define the noise's power. Also in addition to the noise power you need to know your signal's power spectrum to obtain Wiener filter. Wiener filter will be (1/H)*(S/(S+N)). in this equation H is frequency response of your sensor, S is your signal's ... 3 This very, very much sounds like the classical problem for which you can derive that the matched filter is the optimal receive filter to maximize SNR. You say you know the shape of the signal; I interpret this like your system looks like this TX impulse$p$-> Pulse shaping filter$g$-> 500 Hz low pass$h$-> +Noise$z$-> Sampling That implies that the ... 3 Any LTI system can be completely characterized (among other things) by it's transfer function or it's impulse response. If your filter represents an LTI system, that you can calculate it's output by either convolving the input with the impulse response or multiplying the transfer function with the spectrum of the input signal. In theory these things are ... 3 Essentially, your code does not respect the inherent Hermitian symmetry of the output of the FFT. Here, your signal is odd-sized$2K+1$. Hence, this FFT yields a complex vector of coefficients$d$(real) and$a_k\$ (generally complex), arranged as: $$\left[d,a_1,a_2,\ldots,a_K,\overline{a_K},\ldots,,\overline{a_2},\overline{a_1} \right]$$ If you want to ...

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