【问题标题】:MATLAB image processing and filterationMATLAB图像处理和过滤
【发布时间】:2016-01-18 00:28:08
【问题描述】:

可以在此处找到一个示例图像:

http://www.auntminnie.com/user/images/content_images/su_cto/2008_08_07_15_16_16_735_mcnitt.lidcnodule.jpg

我下载了这张图片并将其重命名为oiu.jpg。我的代码是:

现在我得到两个区域,一个是小区域 (1),另一个是大区域 (2)

输出如下:

http://i.stack.imgur0.com/8So8G.jpg

我只想将较小的区域和其他一切都设为黑色。我尝试了 Gabor 过滤,但我无法做到。我也可以使用形态学运算。请帮忙。并评论我正在应用的中值滤波和阈值方法。谢谢

这是一个输入文件,“output.jpg”是对应的输出文件。 谢谢

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    在您的原始代码中,我看到用户可以与您输入脚本的 dicom 数据进行交互,因为当图像未灰度化时它会返回一条消息。

    如果在代码运行时可以进行交互,您可以尝试让用户从 dicom 数据集的其中一个图像中选择一个区域,以便在同一切片或前一个或后一个切片中搜索肿瘤的数据集。您可以尝试使用“imcrop”功能。

    反过来,我猜也有机会要求用户选择不想要的白色部分蒙版,然后运行代码来消除这部分蒙版。

    希望此建议能帮助您为此开发代码。

    【讨论】:

    • 嘿,谢谢。您能否告诉我如何删除偏心率大于特定值的区域?
    【解决方案2】:

    使用您发布的图片,这就是我得到的:

    这很简单。您可以应用形态学运算并选择适合您的目的的 strel 运算符。

    img = im2bw(img);
    img_dil = imdilate(img , strel('disk', 10 )); 
    img_erd = imerode(img_dil , strel('disk', 4 )); 
    
    figure, subplot(2,2,1), imshow(img), title('original Image');
    subplot(2,2,2), imshow(img_dil), title('dilated Image');
    subplot(2,2,3), imshow(img_erd), title('eroded Image');
    

    在此之后,您可以使用bwareaopen

    n = 3000; % change n according to your requirement.
    img_out = bwareaopen(img_erd, n);
    img_out = imsubtract (img_out,img);
    

    【讨论】:

    • 非常感谢。您能否评论一下各种“strel”运算符,请记住,当我感兴趣的区域靠近大区域的墙壁时,可能会有这种情况?
    • 它是一个形态结构元素。您可以轻松地 google 以获取有关形态学操作的更多信息。考虑您的图片disk 可能会完成这项工作。
    • 谢谢梅加娜。你能告诉我如何使用分水岭解决这个问题吗?
    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多