1.图像增强:对于噪声图像、模糊图像等对图像信息增强以突出有用信息。
% %低通滤波器,filtertype-滤波器的种类,n-滤波器的阶数,image-待滤波的原图像
% function H=lpfilter(filtertype,D0,n,image)
% im=imread(image);
% [DIM1,DIM2,K]=size(im);%确定原始图像大小
% if K==3
% im1=rgb2hsv(im);
% im2=double(im1(:,:,3));
% else
% im2=double(im);
% end
% u=0:(DIM1-1);
% v=0:(DIM2-1);
% idx=find(u>DIM1/2);
% u(idx)=u(idx)-DIM1;
% idy=find(v>DIM2/2);
% v(idy)=v(idy)-DIM2;
% [V,U]=meshgrid(v,u);
% D=sqrt(U.^2+V.^2);%计算坐标到频域中心的距离
%
% switch filtertype
% case 'ideal'%理想
% H=double(D<=D0);
% case 'butterworth'%巴特沃斯
% H=1./(1+(D./D0).^(2*n));
% case 'guassian'%高斯
% H=exp(-(D.^2)./(2*(D0^2)));
% case 'exponent'%指数低通
% H=exp(-D./(2*D0)./(2*D0));
% case 'trapezoid'%梯形低通
% if D<=D0
% H=1.0;
% else if D>100
% H=0.0;
% else
% H=(D-100)./(D0-100);
% end
% end
% otherwise
% error('Unkown filter type.');
% end
% F=(fft2(im2));
% G=H.*F;
% g=real((ifft2(G)));
% figure;
% subplot(1,2,1);
% imshow(im2,[]);
% title('Original Image');%原始图像灰度部分
% subplot(1,2,2);
% imshow(g,[]);
% title('Lowpass Filtered Image');%低通效果
%H=lpfilter('ideal',14,1,'cat.jpg');
%低通滤波器,filtertype-滤波器的种类,n-滤波器的阶数,image-待滤波的原图像
function H=lpfilter(filtertype,D0,n,image)
im=imread(image);
[DIM1,DIM2,K]=size(im);%确定原始图像大小
if K==3
im1=rgb2hsv(im);
im2=double(im1(:,:,3));
else
im2=double(im);
end
u=0:(DIM1-1);
v=0:(DIM2-1);
idx=find(u>DIM1/2);
u(idx)=u(idx)-DIM1;
idy=find(v>DIM2/2);
v(idy)=v(idy)-DIM2;
[V,U]=meshgrid(v,u);
D=sqrt(U.^2+V.^2);%计算坐标到频域中心的距离
switch filtertype
case 'ideal'%理想
Hlp=double(D<=D0);
case 'butterworth'%巴特沃斯
if nargin==4
n=1;
end
Hlp=1./(1+(D./D0).^(2*n));
case 'guassian'%高斯
Hlp=exp(-(D.^2)./(2*(D0^2)));
otherwise
error('Unkown filter type.');
end
H=1-Hlp;
F=(fft2(im2));
G=H.*F;
g=real((ifft2(G)));
figure;
subplot(1,2,1);
imshow(im2,[]);
title('Original Image');%原始图像灰度部分
subplot(1,2,2);
imshow(g,[]);
title('Lowpass Filtered Image');%低通效果
2.图像复原:改善图像质量(模糊、失真、噪声)
常见噪声:高斯、瑞利、伽马(爱尔兰)、指数、均匀、脉冲(椒盐)等
根据图像不同采用不同滤波器进行复原,重要的是复原的步骤及各个方法的特点
% %逆滤波复原
% I=imread('cat.jpg');
% L=10;
% T=10;
% PSF=fspecial('motion',L,T);
% Blurred=imfilter(I,PSF,'circular','conv');
% subplot(2,2,1);imshow(I);
% subplot(2,2,2);imshow(Blurred);
% R=deconvwnr(Blurred,PSF);
% subplot(2,2,3);imshow(R);
3.图像分割
注重方法的实现:阈值分割、基于区域、基于能量及有些方法的改进。
%Hough变换
clc;
clear all;
I=imread('cat.jpg');
I=rgb2gray(I);
subplot(1,2,1);imshow(I);
rotI=imrotate(I,33,'crop');%imrotate(A,angle),将图像A围绕其中心点进行angle角度的逆时针旋转
BW=edge(rotI,'canny');%采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0。
[H,T,R]=hough(BW);
subplot(1,2,2);imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
% %均值迭代分割
% I=imread('cat.jpg');
% [w,h]=size(I);
% %1--初始化
% avg=0.0;%图像的平均值
% for y=1:h
% for x=1:w
% avg=avg+double(I(x,y));
% end
% end
% Thresh=avg./w./h;%选择一个初始化的阈值T(通常取灰度值的平均值)
% %2--将图像像素分为两类:G1:灰度值>T,G2:灰度值1.0)
% preThd=curThd;
% u1=0,u2=0;
% num_u1=0,num_u2=0;
% for y=1:h
% for x=1:w
% if double(I(x,y))