• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Matlab
  • 标签: 图像处理  

资源简介

给定皮肤镜黑素细胞瘤图像,检测毛发噪声,并修复毛发遮挡部位的信息。 皮肤镜图像毛发去噪,主要包括五个步骤:波谷检测器、阈值分割、区域生长、标记连通域、掩膜恢复重建 。

资源截图

代码片段和文件信息

%%%% 皮肤镜图像毛发噪声的去除 主程序

clear
clc
close all

I = imread(‘test1.bmp‘); % 读入BMP测试图像
[mnk] = size(I);

figure(‘Numbertitle‘ ‘off‘ ‘Name‘ ‘皮肤镜图像(包含毛发噪声)‘);
imshow(I)

%% 波谷检测器

I_gray = rgb2gray(I);% 转灰度图像
figure(‘Numbertitle‘ ‘off‘ ‘Name‘ ‘皮肤镜图像(灰度图像)‘)
imshow(I_gray);


% B=[0 0 1 0 0
%    0 1 1 1 0
%    1 1 1 1 1 
%    0 1 1 1 0
%    0 0 1 0 0];

I_close = imclose(I_gray strel(‘disk‘ 5)); % 灰度闭运算 得到平滑图像
figure(‘Numbertitle‘ ‘off‘‘Name‘ ‘平滑图像(形态学灰度闭运算)‘)
imshow(I_close)

I_noise = I_close - I_gray; % 波谷检测
figure(‘Numbertitle‘ ‘off‘ ‘Name‘ ‘毛发噪声图像(灰度)‘)
imshow(I_noise)

%% 阈值分割 

I_BW = imbinarize(I_noise0.1); % 阈值分割,转化为二值图

figure(‘Numbertitle‘ ‘off‘ ‘Name‘ ‘毛发噪声图像(阈值分割)‘)
imshow(I_BW)

%% 区域生长

I_RG = zeros(mn);
threshold = 20; % 设置区域生长的灰度阈值

for loop = 1:10 % 生长次数
    
    for i = 1:m
        for j = 1:n
            if I_BW(ij) == 1
                
                seed = I_gray(ij);
                
                if i>1 && i1 && j                    for u= -1:1  % 判断点周围八点是否符合阈值条件
                        for v= -1:1  % uv为偏移量
                            if abs(I_gray(i+uj+v)-seed)<=threshold % 判断是否符合阈值条件
                                I_RG(i+uj+v)=1; % 符合条件即将其在I_RG中与之位置对应的点设置为白场
                            end
                        end 
                    end
                end

            end
        end
    end
    
end

figure(‘Numbertitle‘ ‘off‘ ‘Name‘ ‘毛发噪声图像(区域生长)‘)
imshow(I_RG)

        

%% 标记联通域


BW1 = bwareaopen(I_RG208); % 连通域分割
L = bwlabel(BW1); % 标记连通域

size = 20; % 设置连通域大小尺寸
I_mask = zeros(mn);

for i = 1:max(max(L))
    
    % 初始化长宽值
    x_max = 0; 
    y_max = 0;
    x_min = m;
    y_min = n;
    
    for a = 1:m
        for b = 1:n
            
            if L(ab) == i
        

评论

共有 条评论