matlab实现图像增强的基本操作(含代码)
作者:互联网
(1)γ校正:由于数字显示设备的非线性转换特征,使得图像的显示与原始场景相比较而言发生偏暗或偏亮的现象,这个时候就可以采用γ校正进行处理,使图像的显示等于或接近原始场景。消除图像噪声是图像增强、恢复的内容之一。
(2)图像平滑去噪:在常见的图像处理软件中,都提供了常用的除噪功能,其中,空间域的平滑操作最常见。在Matlab中可以实现均值滤波和中值滤波。
(3)图像锐化:图像锐化的目的是突出图像的细节,或者是增强被模糊的细节,这种模糊是在数据获取过程中,由于操作失误导致或经过特殊方法处理后的结果。在matlab中可以实现在空间域的图像锐化,根据一阶和二阶微分算子,设计不同的模板,对图像进行微分计算。
γ校正
使用自带的imadjust函数实现:
I=imread('D:\lab2\pic1.jpg') I1=imadjust(I,[0 1],[0 1],0.5);!最后一个参数为gamma值,根据需要矫正的图像进行确定 figure(1);subplot(1,2,1);imshow(I); subplot(1,2,2);imshow(I1);
图像平滑去噪
图像锐化
创建一阶微分算子函数,单独存在一个的.m文件中
%创建一阶微分算子函数,单独存在一个的.m文件中
function G=sharpen1(F,Dx,Dy) [m,n]=size(F); %获取图像大小 [N,N]=size(Dx); %获取模板大小 h=(N+1)/2; for i=1:m for j=1:n if((i<h)||(j<h)||(i>m-h+1)||(j>n-h+1)) G(i,j)=double(F(i,j)); %图像不能被处理的区域 continue; end T=double(F(i-h+1:i+h-1,j-h+1:j+h-1)); T1=Dx.*T; T2=Dy.*T; X1=sum(T1(:)); X2=sum(T2(:)); G(i,j)=sqrt(X1^2+X2^2); end end %将计算结果调整到[0,255]的范围 Min = min(G(:)); Max = max(G(:)); s=255/(Max-Min); G = uint8((G-Min)*s);
新建一个test文件,调用一阶微分算子函数实现各种一阶微分算子,处理准备好的图像,代码如下:
clear;
F=imread('building.jpg')subplot(2,3,1),imshow(F);
%水平微分算子 Dx=[1 2 1;0 0 0;-1 -2 -1]; Dy=zeros(3,3); G=sharpen1(F,Dx,Dy); subplot(2,4,2),imshow(G); %垂直微分算子 Dx=zeros(3,3); Dy=[1 0 -1;2 0 -2;1 0 -1]; G=sharpen1(F,Dx,Dy); subplot(2,3,3),imshow(G); %sobel微分算子 Dx=[]; Dy=[1 0 -1;2 0 -2;1 0 -1]; G=sharpen1(F,Dx,Dy); subplot(2,3,3),imshow(G); %priwitt微分算子
后续将继续更新
标签:imshow,Dy,微分,matlab,Dx,图像,基本操作,算子,图像增强 来源: https://www.cnblogs.com/tangjielin/p/16077988.html