图像处理基本处理

  • 实验目的
  • 实验环境
  • 实验内容
    • 题目一
      • 代码
      • 结果
    • 题目二
      • 平移
        • 平移代码
        • 平移结果
      • 水平镜像
        • 水平镜像代码
        • 水平镜像结果
      • 垂直镜像
        • 垂直镜像代码
        • 垂直镜像结果
      • 放大
        • 放大代码
        • 放大结果
      • 缩小
        • 缩小代码
        • 缩小结果
      • 旋转
        • 旋转代码
        • 旋转结果
      • 双线性旋转
        • 旋转代码
        • 旋转结果

实验目的

1、熟悉并掌握MATLAB工具的使用; 
2、实现图像的读取、显示、存储、平移、镜像、放大、缩小及旋转操作;
3、掌握常用的插值方法,并了解其优缺点。

实验环境

MatLab2016

实验内容

题目一

读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分别显示RGB图像和灰度图像,注上文字标题,并将结果以文件形式存到磁盘上。

代码

I = imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
subplot(3,1,1);
imshow(I);
title('原图像');
i = rgb2gray(I);
subplot(3,1,2);
imshow(i);
title('灰度图像');
imwrite(i,'D:\Backup\Documents\My Pictures\Saved Pictures\picture2.jpg');
a = im2bw(I,0.5);
subplot(3,1,3);
imshow(a);
title('二值图像');
imwrite(a,'D:\Backup\Documents\My Pictures\Saved Pictures\picture3.jpg');

结果

题目二

对图像执行平移、镜像(水平镜像、垂直镜像)放大、缩小及旋转操作,其中放大、旋转操作分别采用最近邻插值及双线性插值方法实现,要求根据算法自己编写代码实现,并分析两种插值方法的优缺点。

平移

平移代码

I=imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
subplot(2,1,1);
imshow(I);
title('原图像');
[M,N,C]=size(I);
g=zeros(M,N,C);for color=1:3for i=1:Mfor j=1:Nnewx=i+30;newy=j+30;if((newx<=M)&&(newy<=N))g(newx,newy,color)=I(i,j,color);endendendend
subplot(2,1,2);
imshow(uint8(g));
title('平移');

平移结果

水平镜像

水平镜像代码

I=imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
subplot(2,1,1);
imshow(I);
title('原图像');[M,N,C]=size(I);
g=zeros(M,N,C);
for color=1:3for i=1:Mfor j=1:N-1g(i,j,color)=I(i,N-j,color);endend
end
subplot(2,1,2);
imshow(uint8(g));
title('水平镜像');

水平镜像结果

垂直镜像

垂直镜像代码

I=imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
subplot(2,1,1);
imshow(I);
title('原图像');
[M,N,C]=size(I);
g=zeros(M,N,C);
for color=1:3
for i=1:M-1for j=1:Ng(i,j,color)=I(M-i,j,color);end
end
end
subplot(2,1,2);
imshow(uint8(g));
title(‘垂直镜像’);

垂直镜像结果

放大

放大代码

I=imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
figure;
imshow(I);
title('原图');
g=imresize(I,2);
figure;
imshow(g);
title('放大');

放大结果


缩小

缩小代码

I=imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
figure;
imshow(I);
title('原图');
g=imresize(I,0.5);
figure;
imshow(g);
title('缩放');

缩小结果

旋转

旋转代码

im = imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg'); % 读入图片
subplot(2,1,1);
imshow(im);
title('原图');
% 求出旋转矩阵
a = 30 / 180 * pi;
R = [cos(a), -sin(a); sin(a), cos(a)];
R = R'; % 求出旋转矩阵的逆矩阵进行逆向查找
% 计算原图大小
sz = size(im);
h = sz(1);
w = sz(2);
ch = sz(3);
c1 = [h; w] / 2;
% 计算显示完整图像需要的画布大小
hh = floor(w*sin(a)+h*cos(a))+1;
ww = floor(w*cos(a)+h*sin(a))+1;
c2 = [hh; ww] / 2;
% 初始化目标画布
im2 = uint8(ones(hh, ww, 3)*128);
for k = 1:chfor i = 1:hhfor j = 1:wwp = [i; j];pp = round(R*(p-c2)+c1);% 逆向进行像素查找if (pp(1) >= 1 && pp(1) <= h && pp(2) >= 1 && pp(2) <= w)im2(i, j, k) = im(pp(1), pp(2), k); endendend
end
% 显示图像
subplot(2,1,2);
imshow(im2);
title('旋转');

旋转结果

双线性旋转

旋转代码

im = imread('D:\Backup\Documents\My Pictures\Saved Pictures\picture1.jpg');
subplot(2,1,1);
imshow(im);
title('原图');
% 求出旋转矩阵
a = 30 / 180 * pi;
R = [cos(a), -sin(a); sin(a), cos(a)];
R = R'; % 求出旋转矩阵的逆矩阵进行逆向查找
% 计算原图大小
sz = size(im);
h = sz(1);
w = sz(2);
ch = sz(3);
c1 = [h; w] / 2;
% 计算显示完整图像需要的画布大小
hh = floor(w*sin(a)+h*cos(a))+1;
ww = floor(w*cos(a)+h*sin(a))+1;
c2 = [hh; ww] / 2;
% 初始化目标画布
im2 = uint8(ones(hh, ww, 3)*128);
for k = 1:chfor i = 1:hhfor j = 1:wwp = [i; j];pp = (R*(p-c2)+c1);mn = floor(pp);ab = pp - mn;a = ab(1);b = ab(2);m = mn(1);n = mn(2);% 线性插值方法if (pp(1) >= 2 && pp(1) <= h-1 && pp(2) >= 2 && pp(2) <= w-1)im2(i, j, k) = (1-a)*(1-b)*im(m, n, k) + a*(1-b)*im(m+1, n, k)...+ (1-a)*b*im(m, n, k)     + a*b*im(m, n, k);endendend
end
% 显示图像
subplot(2,1,2);
imshow(im2);
title('线性旋转');

旋转结果


有参考许多csdn文章。

MatLab:数字图像处理实验相关推荐

  1. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  2. Matlab数字图像处理 实验1、数字图像的傅里叶变换

    子曰:桃李不言,下自成蹊. 数字图像的傅里叶变换数字图像的傅里叶变换数字图像的傅里叶变换 Part.0实验目的仅限于学习交流Part.0 实验目的^{仅限于学习交流}Part.0实验目的仅限于学习交流 ...

  3. Matlab数字图像处理 实验3、图像边缘检测的计算机实现

    子曰:桃李不言,下自成蹊. 图 像 边 缘 检 测 的 计 算 机 实 现 图像边缘检测的计算机实现 图像边缘检测的计算机实现 P a r t . 0 实 验 目 的 仅 限 于 学 习 交 流 Pa ...

  4. 计算压缩比的程序matlab,数字图像处理实验5 图像压缩

    实验5 图像压缩 一.实验目的: 1.掌握图像压缩的原理--编码冗余,压缩比C R的计算等. 2.了解并掌握霍夫曼编码的原理.实现步骤. 3.掌握JPEG标准--通用的图像压缩/解压缩编码标准. 二. ...

  5. MATLAB数字图像处理 实验二:单像素空域图像增强

    目录 一.实验目的 二.实验环境 三.实验内容 题目 相关知识 部分核心代码 实验结果 四.实验小结 一.实验目的 1.熟悉基于基于单像素空域图像增强方法,理解并掌握直方图均衡化和规定化实现图像增强 ...

  6. MatLab 数字图像处理实验 图像增强

    实验内容 (1)对曝光不足的图像采用灰度线性变换对图像每一个像素灰度做线性拉伸. close all clear all I = im2double(imread('D:\figure51.jpg') ...

  7. MatLab 数字图像处理实验 图像压缩

    实验(1)使用给定的图像lena做实验,采用im2bw把灰度图像转换为二值图像,试计算二值化时阈值分别取0.2,0.4,0.6的压缩比是多少? clc close all clear allI=imr ...

  8. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  9. 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...

    <数字图像处理(实验部分)>教案 实验一:数字图像处理中MATLAB使用基础实验 一. MATLAB软件安装 二. 进入MATLAB运行环境 三. MATLAB编程基础 3.1.变量 预定 ...

  10. matlab数字图像处理课程设计报告,数字图像处理初步-实验1

    MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...

最新文章

  1. 正确配置Linux系统ulimit值的方法【转】
  2. linux64命令,每天一个Linux命令(64)shutdown命令
  3. python encoding报错_菜鸟世界 -docker 环境下解决python 的 UnicodeEncodeError 错误
  4. 如何转移域名到GoDaddy.com
  5. oracle adf_Fn函数来构建Oracle ADF应用程序
  6. Yarn 报错:error Couldn‘t publish package: “https://registry.yarnpkg.com/ 。。。Forbidden“
  7. G1垃圾收集器深度剖析
  8. POJ3264Balanced Lineup(线段树)
  9. Linux下实现一个网卡绑定多个IP地址
  10. qq纯黑主题怎么设置_qq背景变黑色,怎么调过来
  11. OpenCV车牌识别
  12. LCOI出题组加团规则
  13. Python里面有个inf是干啥的
  14. Android MVP之kotlin初体验
  15. css单元格固定宽度大小,超过部分使用省略号表示
  16. win10怎么显示文件后缀_win10系统中使用win7照片查看器(无需下载安装)
  17. 事务隔离级别与事务传播行为简介
  18. 软考:嵌入式系统设计师——易错知识点总结
  19. com.oracle:ojdbc6:12.1.0.1-atlassian-hosted‘ not found
  20. html实现圈内特效

热门文章

  1. Hive从身份证号中提取相关信息_性别_年龄_出生日期_详细地址
  2. python模拟用户数据
  3. 利润表模板excel_Excel 最新财务报表分析模板(资产负债表、利润表、现金流量表…)...
  4. 《Redis开发与运维》笔记
  5. vue2.0_前端跨域解决方案之proxy代理
  6. ubuntu虚拟显示器远程连接桌面方案
  7. JAVA代码走查审查规范
  8. Dymola — 多学科系统仿真平台
  9. 网页版扫雷 -- React练习
  10. python网络刷学时_python实践—网络刷博器