【数字图像处理】实验三图像增强2

【数字图像处理】实验三图像增强2
实验三图像增强2
1 实验⽬的
1. 理解并掌握直⽅图均衡化实现图像增强。
2. 掌握傅⾥叶变换和离散余弦变换。
2 实验环境
matlab
3 实验内容
1、对⼀幅低对⽐度分辨率的图像采⽤直⽅图均衡化⽅法实现图像增强,分别采⽤系统函数和⾃⼰编写函数实现相应⽤功能。
城市生活e站使⽤系统函数
% lab311.m
close all;
clear;
clc;
I=imread('lab3.jpeg');%读取图像
I=rgb2gray(I);
J=histeq(I);%将灰度拉伸,使图像不会显得那么⿊,有了更好的对⽐度
figure('NumberTitle','off','name','直⽅图均衡化(系统函数)');
%显⽰各图像
subplot(2,2,1);imshow(I);title('原始图像','FontName','宋体');
subplot(2,2,2);imhist(I);title('灰度直⽅图','FontName','宋体');ylim('auto');
subplot(2,2,3);imshow(J);title('直⽅图均衡化(系统函数)','FontName','宋体');
subplot(2,2,4);imhist(J);title('灰度直⽅图','FontName','宋体');ylim('auto');
使⽤⾃定义函数
%(1)lab312.m
close all;
clear;
clc;
I=imread('lab3.jpeg');%读取图像
I=rgb2gray(I);
J=histSYX(I);
figure('NumberTitle','off','name','直⽅图均衡化(⾃定义函数)');
%显⽰各图像
subplot(2,2,1);imshow(I);title('原始图像','FontName','宋体');
subplot(2,2,2);imhist(I);title('灰度直⽅图','FontName','宋体');ylim('auto');
subplot(2,2,3);imshow(J);title('直⽅图均衡化(⾃定义函数)','FontName','宋体');
subplot(2,2,4);imhist(J);title('灰度直⽅图','FontName','宋体');ylim('auto');
(2)⾃定义直⽅图均衡化histSYX.m
function J=histSYX(I)
[width,height]=size(I);
count=width*height;%像素总数
% J=zeros(width,height);
J=I;
n=256;%灰度级
H=zeros(1,n);
for row=1:width
for col=1:height
k=I(row,col);%该像素灰度值rk
H(k+1)=H(k+1)+1;%统计各灰度级pixel总数nk
end
end
pr=H./count;%计算原始直⽅图的概率分布pr(rk)=nk/n
sk=zeros(1,n);
Sk=zeros(1,n);
for loc1=1:n
for loc2=1:loc1
sk(loc1)=sk(loc1)+pr(loc2);%计算累计直⽅图的概率分布sk=Σnj/n(j=0~k)    end
Sk(loc1)=round(((n-1)-0)*sk(loc1));%取整扩展
end
for row=1:width
for col=1:height
卞仲耘k=I(row,col);
J(row,col)=Sk(k+1);%映射
end
end
直⽅图均衡化——系统函数
直⽅图均衡化——⾃定义函数
2、对⼀幅图像分别进⾏傅⾥叶变换和离散余弦变换,并把傅⾥叶变换直流分量移到频谱中⼼。
傅⾥叶变换
%(1)主函数lab321.m
close all;
clear;
clc;
I=imread('lab32.jpeg');
I=rgb2gray(I);
I=im2double(I);
F=DFT(I);
figure('NumberTitle','off','name','傅⾥叶变换');
%显⽰各图像
subplot(1,2,1);imshow(I);title('原始图像','FontName','宋体');
subplot(1,2,2);imshow(F,[]);title('傅⾥叶正变换','FontName','宋体');
%系统函数实现
% J=rgb2gray(I);%对于RGB图像必须做的⼀步,也可以⽤im2double函数上海染料化工厂
% F=fft2(J);%傅⾥叶变换
% F1=log(abs(F)+1);%取模并进⾏缩放
%
% Fs=fftshift(F);%将频谱图中零频率成分移动⾄频谱图中⼼
% S=log(abs(Fs)+1);%取模并进⾏缩放
% fr=real(ifft2(ifftshift(Fs)));%频率域反变换到空间域,并取实部
% ret=im2uint8(mat2gray(fr));%更改图像类型
%将逆转换得到的矩阵先转换为灰度图像(mat2gray),再将图像类型转换为uint8 %若在开头已经rgb2gray,则此步骤可省去,直接显⽰经逆转换的图像。
%若在开头调⽤im2double,此步省略后可显⽰出彩⾊图像。
%subplot(2,2,1);imshow(I);title('原始图像','FontName','宋体');
%subplot(2,2,2);imshow(F1,[]);title('傅⾥叶正变换','FontName','宋体');
%subplot(2,2,3);imshow(S,[]);title('频移后的频谱图','FontName','宋体');
%subplot(2,2,4);imshow(ret),title('傅⾥叶逆变换','FontName','宋体');
%(2)⾃定义傅⾥叶变换函数(含频移)DFT.m
function F=DFT(image)
[M,N]=size(image);
F=zeros(M,N);
temp=zeros(M,N);
j=0+1i;
%分离
for x=1:M
for v=1:N
point=0;
for y=1:N
point=point+image(x,y)*exp(-j*2*pi*(v-1)*(y-1)/N);
end
temp(x,v)=point;
end
end
for u=1:M
for v=1:N
point=0;
for x=1:M
point=point+temp(x,v)*exp(-j*2*pi*(u-1)*(x-1)/M);
end
F(u,v)=point;
end
end
%不分离
%for u =1:M
%for v=1:N
%        point=0;
%for x=1:M
%for y=1:N
%                point=point+image(x,y)*exp(-j*2*pi*((u-1)*(x-1)/M+(v-1)*(y-1)/N)); %            end
%        end
%F(u,v)=point;
%    end
% end
F=fftshift(F);
F=log(abs(F)+1);
离散余弦变换
%(1)主函数lab322.m
close all;
clear;爱的旅程全文阅读
clc;
I=imread('lab32.jpeg');
polo车友会I=rgb2gray(I);
J=double(I);
F=DCT(J);
figure('NumberTitle','off','name','离散余弦变换');
%显⽰各图像
subplot(1,2,1);imshow(I);title('原始图像','FontName','宋体');sg186
subplot(1,2,2);imshow(F,[]);title('离散余弦变换','FontName','宋体');
%(2)⾃定义离散余弦变换函数DCT.m
function F=DCT(image)
[M,N]=size(image);
F=zeros(M,N);

本文发布于:2024-09-20 22:48:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/105010.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   变换   函数   均衡化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议