如何在图像处理中使用PDE工具箱的新功能(Matlab R2015a)

时间:2015-07-12 20:07:03

标签: matlab math image-processing matlab-guide

我想使用PDE工具箱的line new命令作为Matlab R2015来恢复带有高斯噪声的噪声图像。

PDE是:

。(( u)/(√(1+ | u | 2 ) ))+( f 2 )/( u 2 )= 1 inΩ(∂< / i> u)/( n)= Ω

其中 f 是嘈杂的图像, u 恢复的图像。

我尝试了以下代码:

clear 
close all
clc

img = 'AA.jpg';
mInputImage = double(imread(img));
mInputImage = rgb2gray(mInputImage);
[numRows, numCols] = size(mInputImage);

Var = 0.04;
Mean = 0;
mInputImageNoisy = imnoise((mInputImage(:,:,1)),'gaussian',Mean, Var); 

% reshape the input and noisy images to vectors
mInputImageVector = reshape(mInputImage,numRows*numCols,1);
mInputImageNoisyVector = reshape(mInputImageNoisy,numRows*numCols,1);

Residu1 = norm(mInputImageVector-mInputImageNoisyVector)/norm(mInputImageVector)

RegularisationCoefficient = 0.7*ones((numRows-1)*(numCols-1),1);
mOutputImageVector = mInputImageNoisyVector;
%a = (mInputImageNoisyVector.^2) ./ mOutputImageVector.^3;
f = 1;
rtol = 1e-1;
c = '1./sqrt(1+ux.^2+uy.^2)';

% Create a PDE Model with a single dependent variable
numberOfPDE = 1;
pdem = createpde(numberOfPDE);

g = @squareg;
geometryFromEdges(pdem,g);

% Plot the geometry and display the edge labels for use in the boundary
% condition definition.
figure;
pdegplot(pdem, 'edgeLabels', 'on');
%axis([0 numRows 0 numCols]);
axis([-2 2 -2 2]);
title 'Geometry With Edge Labels Displayed'


b2 = applyBoundaryCondition(pdem,'Edge',[1 2 3 4], 'u', 0);

[p,e,t] = poimesh(g,numRows, numCols);
numCols
pdemesh(p,e,t);
axis equal

for iter = 1: numRows*numRows,
mOutputImageVector(iter) = pdenonlin(pdem,c,...
     (mInputImageNoisyVector(iter).^2) ./ mOutputImageVector(iter).^3,...
              f,'tol',rtol);
SaveImageVector(iter) = mOutputImageVector;
end

mOutputImage = reshape(SaveImageVector,numRows,numRows);

mOutputImage = uint8(mOutputImage);

figure()
imshow(mOutputImage)

0 个答案:

没有答案