数字图像处理实验之Matlab对图像的基本处理

这篇具有很好参考价值的文章主要介绍了数字图像处理实验之Matlab对图像的基本处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、运用Matlab对图像的基本处理

1、提取Lena图像的左半上角部分,与原始Lena图像在同一个figure中显示,并做适当命名

a =imread('Lena.bmp');%读取图片
[m, n, c]=size(a);%取行数m和列数n
half_x=floor(m/2);%floor是对m/2的结果取整,向下取整;ceil向上取整
half_y=floor(n/2);
img_b=a(1:half_x,1:half_y,:);%取左半上角
figure;%figure创建图窗窗口
subplot(1,2,1);%一个fugure图形生成一行两列两个子图,当前图像显示在第一个位置
imshow(a);title('原始图像')%输出图像到板块上
subplot(1,2,2);%第二个位置放更改后的图像
imshow(img_b);title('左半上角') 

效果图

数字图像处理实验之Matlab对图像的基本处理

2、利用 imnoise , 对原始Lena图像叠加高斯噪声,产生4幅、14幅、140幅的含噪图像。对这些含噪图像采用 相加 运算,来验证、比较图像相加消除叠加性噪声的效果。将原始图像、1幅噪声图像、1幅相加去噪结果图像显示在一个figure 中

% 利用 imnoise , 对原始Lena图像叠加高斯噪声,产生4幅含噪图像
% g=imnoise(图像名称,‘gaussian’,m,var)  均值m,方差为var的高斯噪声添加到原图像上,默认值均值是0,方差为0-1

img1=imread('Lena.bmp'); %图形文件读取图像MATLAB空间  A = imread(filename)
%高斯噪声,图像是img,均值为0,方差为
nos1 = imnoise(img1,'gaussian',0,0.02);
nos2=imnoise(img1,'gaussian',0,0.03);
nos3=imnoise(img1,'gaussian',0,0.05);
nos4=imnoise(img1,'gaussian',0,0.07);

figure('Name','原始图像和4幅的含噪图像');
subplot(2,3,1); imshow(img1); title('原图');%两行三列第一张图
subplot(2,3,2); imshow(nos1); title('方差0.02的高斯');
subplot(2,3,3); imshow(nos2); title('方差0.03的高斯');
subplot(2,3,4); imshow(nos3); title('方差0.05的高斯');
subplot(2,3,5); imshow(nos4); title('方差0.07的高斯');

数字图像处理实验之Matlab对图像的基本处理%产生4幅、14幅、140幅的含噪图像。对这些含噪图像采用 相加 运算,来验证、比较图像相加消除叠加性噪声的效果。

img1=im2double(img1);                     %将img1数据类型转换成双精度
% A=im2double(A);
nos3=im2double(nos3); 


%14幅的含噪图像
for i=1:14 %i从1到14,每次增加一个,该共循环14次,每写一层循环,必须以end结尾
nos1 = imnoise(img1,'gaussian',0,0.02);
A=imadd(nos1,img1);%对原始图像和含噪图像继续叠加
% figure();imshow(nos1); %将14幅图像显示出来
end
% figure('Name','原始图像与nos1的叠加');imshow(A);
avg_A=A/15;%求叠加后的平均图像

%140幅的含噪图像
for i=1:140 
       nos3 = imnoise(img1,'gaussian',0,0.05);
       B=imadd(nos3,img1);%对原始图像和含噪图像3叠加
% figure();imshow(nos3); 
end
% figure('Name','原始图像与nos3的叠加');imshow(B);

figure('Name','综合');
subplot(1,3,1);imshow(img1);title('原始图像');
subplot(1,3,2);imshow(nos1);title('噪声图像');
subplot(1,3,3);imshow(avg_A);title('相加去噪结果图像');

数字图像处理实验之Matlab对图像的基本处理

二、熟悉Matlab基本编程

1、利用 imresize , 采用nearest方法先将Lena缩小2倍后再分别采用nearest、bilinear、bicubic方法放大4倍,显示在不同的Figure中

I=imread('Lena.bmp');
I_shrink_2_nearest=imresize(I,0.5,'nearest');%Lena缩小2倍
figure; imshow(I); title('原图');

数字图像处理实验之Matlab对图像的基本处理

figure; imshow(I_shrink_2_nearest);title('nearest:缩小2倍的图')

 数字图像处理实验之Matlab对图像的基本处理

I_magnify_4_nearest=imresize(I_shrink_2_nearest,4,'nearest');%用nearest方法将I_shrink_2_nearest 放大4倍
figure; imshow(I_magnify_4_nearest);title('nearest:放大4倍的图')

数字图像处理实验之Matlab对图像的基本处理

%用bilinear方法 将I_shrink_2_nearest 放大4倍
I_magnify_4_bilinear=imresize(I_shrink_2_nearest,4,'bilinear');
figure; imshow(I_magnify_4_bilinear);title('bilinear:放大4倍的图')

数字图像处理实验之Matlab对图像的基本处理


%用bicubic方法 将I_shrink_2_nearest 放大4倍的图
I_magnify_4_bicubic=imresize(I_shrink_2_nearest,4,'bicubic');
figure; imshow(I_magnify_4_bicubic);title('bicubic:放大4倍的图')

数字图像处理实验之Matlab对图像的基本处理

2、利用循环逐像素点计算原始Lena图像的均值和方差

 img1=imread('Lena.bmp');
[r,c,k]=size(img1);%取图像的行数r和列数c

s=0;
for x=1:r %从1遍历到r行
    for y=1:c %从1遍历到c列
       s=s+img1(x,y);%求像素值总和 s  , img1(x,y)表示位于某个坐标下的像素值
    end
end  


img1_mean = s/(r*c); %按公式计算,像素值总和除以像素个数。
Matlab_img1_mean1=mean2(img1); %Matlab方法一 : mean2()矩阵元素的平均值或均值
Matlab_img1_mean2=mean(mean(img1)); %Matlab方法二: 先计算列向量均值,再求总均值。

temp=0;
for i =1:r
    for j =1:c
        temp=temp+(img1(x,y)-img1_mean)^2; %求得所有像素与均值的平方和。
    end
end


img1_var = temp/(r*c-1); %利用方差公式求得

% Matlab方法一: B = std2(A) 计算数组 A 中所有值的标准差。方差=标准差^2
Matlab_img1_std1=std2(img1)^2;
% Matlab_img1_std2=var(img1(:)); % Matlab方法二:利用方差函数var求得

4、不用 imresize , 利用循环将Lena图像以nearest方式缩小2倍放大2倍 
img_11=imread('Lena.bmp');
[row,col]= size(img_11); %% 获得图像的行列数及色板数
p=0.5;
q=0.5;
m=round(p*row);  % 新图像行
n=round(q*col);  % 新图像列

for i=1:m
    for j=1:n
            x=round(i/p);
            y=round(j/q);
            new_img_11(i,j)=img_11(x,y,:);
        end
    end
b=uint8(new_img_11);
figure;
imshow(b);title('最邻近插值缩小2倍放大2倍')

%利用循环将任一灰度图像以nearest方式行缩放p倍,列缩放q倍
p=input('输入行缩放倍数(大于0的任意正实数):\n');
q=input('输入列缩放倍数(大于0的任意正实数):\n');
a=imread('Lena.bmp');
[m,n,c]=size(a);
new_m=ceil(p*m);%ceil函数向上取整
new_n=ceil(q*n);
new_a=zeros(new_m,new_n,c);%zeros函数是用于返回一个double类零矩阵


for i=1:new_m
    for j=1:new_n
        % 缩放后的图像坐标在原图像处的位置
        x=round(i/p);
        y=round(j/q);
        if (x<1) 
            x=1;
        end
        if (x>m) 
            x=m;
        end
        if (y<1)
            y=1;
        end
        if (y>n)
            y=n;
        end
        % 将缩放后的图像坐标在原图像处的位置的灰度值赋值给缩放后的图像
        new_a(i,j,:)=a(x,y,:);
    end
end


new_a=uint8(new_a);
figure;
imshow(a);%显示坐标轴
axis on
title(['原图像(大小为:',num2str(m),'X',num2str(n),'X',num2str(c),')']);%转换成字符串表示形式
figure;imshow(new_a);
axis on
title(['缩放后的图像(大小为:',num2str(new_m),'X',num2str(new_n),'X',num2str(c),')']);

有不懂的函数可以在这里输入相应的函数,有解释的MathWorks - MATLAB 和 Simulink的制造者 - MATLAB & Simulink

有错误的话,欢迎纠错 文章来源地址https://www.toymoban.com/news/detail-435690.html

到了这里,关于数字图像处理实验之Matlab对图像的基本处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数字图像处理之matlab实验(五):形态学图像处理

    常见的形态学处理包括腐蚀、膨胀、开运算、闭运算。不同的操作有不同的作用,同样的操作在不同类型的图片上也有不同效果,具体效果如下表格所示。要求熟练掌握对二值图像的形态学处理。 不同操作对不同类型图像处理效果 一、对二值图像进行处理 1、结构元素 在开

    2024年02月04日
    浏览(47)
  • 【数字图像处理】实验(3)——图像综合应用:皮肤美化(MATLAB实现)

    (1)了解和掌握图像处理工具 Matlab ,熟悉基于 Matlab 的图像处理函数,并为下一步编程进行图像处理打下基础。 (2)理解色彩的概念,掌握图像代数运算,几何变换方法。 1.灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。 2.直方图均衡化通过点运

    2024年02月05日
    浏览(39)
  • 数字图像处理---低高通滤波实验(MATLAB实现)

    1. 了解图像傅里叶变换的意义和手段; 2. 熟悉理想低通滤波器、巴特沃斯低通滤波器、高斯低通滤波器的基本原理和性质; 3. 熟悉理想高通滤波器、巴特沃斯高通滤波器、高斯高通滤波器的基本原理和性质; 4. 掌握MATLAB编程实现数字图像的低高通滤波器的变换,并分析各参

    2024年02月05日
    浏览(27)
  • 数字图像处理之matlab实验(三):空间滤波器

    空间滤波,就是在原图像上,用一个固定尺寸的模板去做卷积运算,得到的新图像就是滤波结果。滤波,就是过滤某种信号的意思。过滤哪种信号取决于模板设计,如果是锐化模板,处理后就保留高频信号,如果是平滑模板,处理后就保留低频信号。 (1)模板运算 图像处理

    2024年04月28日
    浏览(37)
  • 数字图像处理 matlab图像的几何运算 实验三 旋转 缩放 裁剪 镜像变换 平移

    原图: 读取原图(这里我的图片名字是atm.png): 我们先说原理,图像旋转的本质是向量的旋转。 矩阵乘法的实质是进行线性变换,因此对一个向量进行旋转操作也可以通过矩阵和向量相乘的方式进行。 因为图像都是通过二维矩阵存放的(单通道),所以对图像进行旋转时

    2024年02月07日
    浏览(41)
  • (数字图像处理MATLAB+Python)第三章图像基本运算-第二节:图像代数运算

    A:概述 加法运算 :指将两幅同大小的图像进行像素级别的加法操作,得到一幅新的图像。设两幅图像对应的像素值分别为 f 1 ( x , y ) f_{1}(x,y) f 1 ​ ( x , y ) 和 f 2 ( x , y ) f_{2}(x,y) f 2 ​ ( x , y ) ,则它们的加法运算可表示为 g ( x , y ) = f 1 ( x , y ) + f 2 ( x , y ) g(x,y)=f_{1}(x,y) + f_{

    2023年04月12日
    浏览(31)
  • (数字图像处理MATLAB+Python)第十二章图像编码-第一、二节:图像编码基本理论和无损编码

    图像编码 :一种将数字图像转换为压缩表示形式的过程。它的目标是减少图像数据的存储空间,并在传输或存储时减少带宽和存储需求、主要分为两类 无损压缩 :尽可能地保留原始图像的所有信息,以实现无失真的压缩。其中最常见的算法之一是无损JPEG(JPEG-LS)编码,它

    2024年02月10日
    浏览(30)
  • 数字图像处理实验——数字图像处理初步

    一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式的图像; 2.熟练掌握在MATLAB中如何读取图像及图像的属性信息(大小、颜色、亮度(灰度)、宽度、高度等); 3.掌握如何在MATLAB中按照指定要求存储一副图像的方法; 4.了解图像的算术运算在数字图像中的初步应

    2024年02月04日
    浏览(35)
  • 数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)

    1 理解阈值分割的依据及确定阈值的方法; 2 掌握常用的边缘检测算子的使用方法,加深对不同算子优缺点的理解; 3 能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能; 1. 直方图法 测试图像:coins.png 原理:观察该图像的直方图,手动选取谷底点作为阈值对

    2024年02月05日
    浏览(43)
  • 数字图像处理实验四--图像变换

    (图像变换) 实验内容: 对图像lena、cameraman和face进行傅里叶变换,观察图像能量在频谱图中的分布情况。 利用Matlab生成下列图像,并对其进行旋转30度、90度和120度,然后对他们分别进行傅里叶变换。 对图像lena、cameraman和face用DCT变换进行图像压缩,舍掉的变换系数分别小

    2024年04月14日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包