首页 文章

在Matlab上进行图像去模糊

提问于
浏览
7

我是MatLab的新手 . 一直在玩并阅读帮助指南,但我似乎无法解决这种情况 .

enter image description here

我已经使用高斯算法去除了噪音 . 这是成功的,但我没有设法让图像清晰,我尝试使用Richardson-Lucy去模糊算法,但它不起作用 . 知道怎么解决这个问题? Thnx提前 .

这是我到目前为止所做的 .

图像尺寸= 21kb图像尺寸= 264 x 126

img = imread('car_plate.jpg')
subplot(331);
imshow(img), title('Original Image')

PSF = fspecial('gaussian',15,15);
blur = imfilter(img,PSF,'replicate');
subplot(332);imshow(blur);title('Filter image');

motion_noise = fspecial('disk', 7);

luc1 = deconvlucy(img,motion_noise);
subplot(333); imshow(luc1);
title('Disk and Lucy');

LEN = 9; THETA = 1;
motion_noise2 = fspecial('motion', LEN, THETA);


luc2 = deconvlucy(blur,motion_noise2);
subplot(334); imshow(luc2);
title('Motion and Lucy');

当我尝试使用中值滤波器时,我得到了这个输出

使用medfilt2时出错预期输入数1,A为二维 . medfilt2> parse_inputs(第106行)中的错误validateattributes(a,{'numeric','logical'},{'2d','real'},mfilename,'A',1); medfilt2中的错误(第48行)[a,mn,padopt] = parse_inputs(varargin {:}); a1q21中的错误(第2行)J = medfilt2(img);

而我目前的结果是这样的 .

enter image description here

1 回答

  • 4

    你正在使用错误的点扩散函数来进行去抖动算法(碉堡是一个糟糕的选择) . 为了获得最佳结果,使用中值滤波器滤除S&P噪声,然后用高斯核心进行去模糊 . 我会跳过运动deblur,因为图像似乎没有强烈的方向模糊 . 您将需要使用锐化滤镜的sigma来获得最佳效果 .

    img = imread('car_plate.jpg')
    subplot(331);
    imshow(img), title('Original Image')
    
    blur = medfilt2(img,[3 3]);
    subplot(332);imshow(blur);title('Filter image');
    
    deblurSigma = 10; %Adjust this to get the most visually pleasing results
    motion_noise = fspecial('gaussian', 15,deblurSigma);
    luc1 = deconvlucy(img,motion_noise);
    subplot(333); imshow(luc1);
    title('Disk and Lucy');
    

相关问题