200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 实验一 MATLAB数字图像处理基本操作

实验一 MATLAB数字图像处理基本操作

时间:2023-06-11 00:08:06

相关推荐

实验一 MATLAB数字图像处理基本操作

实验内容

1、读入一幅RGB图像(sunset.jpg),分别转换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示这三幅图像,注上文字标题,即“原图像”、“灰度图像”、“二值图像”。

a = imread("L:\图像处理\实验文件\sunset.jpg");

i = rgb2gray(a);

I = im2bw(a,0.5);

subplot(3,1,1);imshow(a);title('原图像');

subplot(3,1,2);imshow(i);title('灰度图像');

subplot(3,1,3);imshow(I);title('二值图像');

2、说明以下程序的显示结果为何是一幅几乎全黑的图像。

clear; close all;

myi=zeros(20,20);

myi(2:2:18,2:2:18)=1;

myi=uint8(myi);

figure, imshow(myi,'notruesize');

由程序myi=uint8 (myi) ;可知此程序编写的图像在计算机中采用的是8位存储,即灰度

值为0^255,其中0为黑,255为白,中间值为由黑向白过度的值。而程序myi=zeros(20,20);

构造了一个20行20列的0值矩阵,程序myi (2:2:18, 2:2:18)=1;将1赋值给矩阵的2, 4,

6,8,10,12,14,16,18行和2,4,6,8,10,12,14,16,18列,即这些位置的值为

1。因为0, 1都在人眼识别的黑色范围内,固图像是全黑的

3、阅读分析下列程序,对每条语句给出注释,运行并解释最终执行结果;若将for循环改为方框中的程序,有何不同?

clear all;close all;

I=imread('d:\lena512.jpg');导入图像

[height,width]=size(I);heightwidth赋值为该图像的参数值

figure;控制画图的窗口

subplot(2,3,1);subplot(2,3,1)是指一个2行3列的图中从左到右从上到下的第一个位置。

imshow(I);展示i图像

title('原图像');标题

L=1;定义L

for m=1:5循环m的值,生成五幅图像

L=2*L;L等于L*2

quartimage=zeros(ceil(height/L),ceil(width/L));

zeros是生成全零的矩阵函数M*Nceil函数将数值

取整

k=1;n=1;

for i=1:L:height进行循环

for j=1:L:width

quartimage(k,n)=I(i,j);将矩阵内的值进行修改

n=n+1;n值加一

end

k=k+1;n=1;

end

subplot(2,3,m+1); subplot(2,3,1)是指一个2行3列的图中从左到右从上到下的第一个位置。

imshow(uint8(quartimage));展示uint8格式的quatimage图像

end

因为使用for m=1:5 ,所以会循环5次循环内的条件,5次循环修改矩阵内的值,并展示图像,加上初试图像,所以共有6幅图像。

若改成框内程序,直接修改原图像的值,然后输出图像。

5、改变灰度图像的灰度分辨率(256颜色-128颜色-64颜色-32颜色-16颜色-8颜色-4颜色-2颜色),给出实验结果;图像大小不变的情况下,仿真改变图像的空间分辨率(变为原来的1/4(例如原图像(1,1);(1,2);(2,1);(2,2)四个像素值设成相同的值);1/16),给出实验结果。

分辨率变换:

close all;clear all;clc;

%通过imadjust()函数调整灰度图像的灰度范围

I=imread("L:\图像处理\实验文件\orangutan.tif");

for i=1:7

J=I(1:2^i:end,1:2^i:end);

figure;

subplot(2,1,1);imshow(I);title('原图')

subplot(2,1,2);imshow(J);title('8bits变换');

end

不改变大小改变空间分辨率

clc;close all;

image = imread("L:\图像处理\实验文件\orangutan.tif"); %代表要处理的图像

mysize = size(image);

%把图像转换成灰度图

if numel(mysize) > 2

image = rgb2gray(image);

end

r_e = mysize(1);

c_e = mysize(2);

subplot(2,1,1); imshow(image,[]); title('Input Image');

temp1 = imresize(image,0.25); %表示把图像缩小到原来的1/4,但同时图像矩阵也变成了原来的1/4

[r_t2,c_t2] = size(temp1);

temp2 = zeros(r_e,c_e);

temp2(round(r_e/2)-floor(r_t2/2) : round(r_e/2)+ceil(r_t2/2)-1, round(c_e/2)-floor(c_t2/2) : round(c_e/2)+ceil(c_t2/2)-1) = temp1;%固定写法,具体了解matlab,调整大小

ss = temp2;

subplot(2,1,2); imshow(ss,[]); title('Minification');

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。