赞
踩
在形态学中,可以利用顶帽变换和底帽变换加上二值化阈值,来进行图像的分割。
图像相减与开操作和闭操作相结合,可产生所谓的顶帽变换和底帽变换。 灰度级图像 f 的顶帽变换定义为 f 减去其开操作。
T
h
a
t
(
f
)
=
f
−
(
f
o
b
)
T_{hat}(f) = f - (f o b)
That(f)=f−(fob)
灰度级图像f的底帽变换定义为其闭操作减去f。
B
h
a
t
(
f
)
=
(
f
⋅
b
)
−
f
B_{hat}(f) = (f · b) - f
Bhat(f)=(f⋅b)−f
这些变换的主要应用之一是:用一个结构元通过开操作或闭操作从一幅图像中删除物体; 然后,差操作得到一幅仅保留已删除分量的图像。
顶帽变换用于暗背景上的亮物体,而底帽变换则用于相反的情况。由于这一原因,这些变换又称为白顶帽变换和黑底帽变换。
顶帽变换的一个重要用途是校正不均匀光照的影响。合适(均匀)的光照在从背景中提取目标的处理中扮演核心的角色。
首先使用开操作,得到平滑后的图像,之后利用差值(即顶帽变换)得到光照矫正后的图像。将这张图像和原图像分别找到最合适的光照阈值,对图像分割后的图像进行对比分析。
主函数:
%% 运行 main_hat.m clc; clear; close all; %% 课本图 9.40 % 读取图片 im = imread('rice_image_with_intensity_gradient.tif'); % 原始图像 uint8 im1 = im2bw(im,0.53); [im2,im3] = T_hat(im); im4 = im2bw(im3,0.39); %% 将结果保存到当前目录下的result文件夹下 imwrite(im1, sprintf('result/%s.jpg','2_im1')); imwrite(im2, sprintf('result/%s.jpg','2_im2')); imwrite(im3, sprintf('result/%s.jpg','2_im3')); imwrite(im4, sprintf('result/%s.jpg','2_im4')); %% 显示结果 subplot(221); imshow(im); title('图像'); axis on subplot(222); imshow(im1); title('阈值图像'); axis on subplot(234); imshow(im2); title('开操作图像'); axis on subplot(235); imshow(im3); title('顶帽图像'); axis on subplot(236); imshow(im4); title('阈值图像'); axis on
功能函数:
function [im_P,im_T]= T_hat(im) %% 求出B B = zeros(40,40); for k = -40:1:40 for l = -40:1:40 if(k^2+l^2<=1600) B(l+41,k+41) = 1; else B(l+41,k+41) = 0; end end end %% 腐蚀 im_F = my_imerode(im,B); %% 膨胀 im_P = my_imdilate(im_F,B); %% 得出结果 im_T = double(im) - im_P; im_P = uint8(im_P); im_T = uint8(255*mat2gray(im_T)); end
my_imdilate这个函数在前面的I中已经介绍了,这里不再给出。
function im_e = my_imerode(im,B) % 以B的结构元进行腐蚀 %% 得到图像尺寸 [M,N] = size(im); im_f = double(im); %% 得到B的尺度 [m,n] = size(B); m_2 = floor((m+1)/2); n_2 = floor((n+1)/2); %% 图像延拓 im_f = [im_f(:,n-1:-1:1),im_f,im_f(:,N:-1:N-n+2)]; im_f = [im_f(m-1:-1:1,:);im_f;im_f(M:-1:M-m+2,:)]; im_f = double(im_f); %% 图像腐蚀 im_e = zeros(M,N); for i = 1:M for j = 1:N im_sub = im_f(i+m_2-1:i+m_2+m-2,j+n_2-1:j+n_2+n-2); C = im_sub.*B + 255*(1-B); im_e(i,j) = min(C(:)); end end %im_e = logical(im_e); end
图一是一幅大小为 600*600 的米粒图像,在非均匀光照下得到的。由于非均匀光照的干扰,导致无法直接选取阈值来进行很好的图像分割。
因此首先对原图像,使用半径为 40 的圆形结构元进行开操作。这个结构元足够大,大到不会拟合任何物体,这样就可以仅仅保留下一个图像的背景。
将原图像减去上面计算出的背景图像,这样图片的亮暗之间不再存在极端的差别,这时候再取最优的阈值进行图像分割,这时可以得到最好的图像分割实验结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。