【问题标题】:Is the answer for the following MATLAB script correct?以下 MATLAB 脚本的答案是否正确?
【发布时间】:2019-04-14 22:43:09
【问题描述】:

我有一个关于matlab image processing toolbox 的任务。任务如下:

我对这些步骤的解决方案是:

I = imread('Ball.jpg');

I1 = imnoise(I, 'salt&pepper', 0.2);

G = rgb2gray(I1);

C = fspecial('Laplacian',h);

imwrite(C, 'clean.jpg');

subplot(1,2,1);
imshow(I1,[]);

subplot(1,2,2);
imshow(C,[]);

【问题讨论】:

    标签: matlab image-processing matlab-figure


    【解决方案1】:

    我认为你犯了很多错误。

    首先,您阅读的图像已经很嘈杂,因为它没有明确说明“向图像添加噪声”。这使您的第二步 imnoise 变得多余。

    其次,通过使用fspecial您正在创建一个过滤器。在这种情况下,它的类型是给定 alpha alpha(介于 0 和 1 之间)的 Laplacian 过滤器。仅此一项并不能过滤您的图像。您必须使用函数imfilter 来处理图像。

    I = imread('Ball.jpg');
    
    G = rgb2gray(I);
    
    h = fspecial('Laplacian',0.7); % 0.1 is the alpha, try out which one suits your case the most
    
    C = imfilter(G,h);
    
    imwrite(C, 'clean.jpg');
    
    subplot(1,2,1);
    imshow(I,[]);
    
    subplot(1,2,2);
    imshow(C,[]);
    

    请注意,Laplacian 过滤器不一定是最适合您的。 MatLab documentation 中列出了许多您可以使用的过滤器类型。考虑使用高斯滤波器。

    【讨论】:

    • 我在您的回答中修正了一个措辞错误,希望您不介意。此外,我建议您使用比“不一定最适合您”更强烈的措辞。事实上,这个过滤器的作用与问题的完全相反,因为它增强了噪音。你的高斯建议很好。
    • 感谢您的建议和更正@CrisLuengo!我会记住他们的。
    【解决方案2】:

    您的解决方案不完整,例如您没有对嘈杂的图片应用过滤器。这是一个可能有效的示例:

    %% Load image (I.)
    I = imread('Ball.jpg');
    
    %% Convert image into grayscale (II.)
    G = rgb2gray(I);
    
    %% Add noise (if 'Ball.jpg' isn't already noisy)
    I1 = imnoise(G, 'salt & pepper', 0.2); % NB : imnoise needs the image to be grayscale
    
    %% Create the filter (III.)
    C = fspecial('Laplacian');
    
    %% Apply the filter (III.)
    IClean = filter2(C,I1);
    
    %% Write the picture in new file  (IV.)
    imwrite(IClean, 'clean.jpg');
    
    %% Display images (V.)
    subplot(1,2,1), imshow(I1,[]);
    subplot(1,2,2), imshow(IClean,[]);
    

    根据结果,您可以验证问题 III 中“适当的空间域过滤器”的想法。

    【讨论】:

    • 比起conv2filter2,我更愿意将imfilter 用于图像。它更舒适一些,并且还包括一些适用于稍微复杂的情况的甜蜜功能。对于uint8 值,它也更有效。
    • 我完全同意你的看法。我想尽可能接近提问者提出的功能。我觉得这是家庭作业中的一个练习,所以根据他所学的课程,在课堂上使用看不见的功能可能看起来很奇怪。
    • @CrankyBrain 你能回答这个问题吗? stackoverflow.com/questions/53570987/…
    猜你喜欢
    • 2020-01-16
    • 2021-12-30
    • 1970-01-01
    • 2018-10-27
    • 2022-11-13
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多