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

这篇博客介绍了图像处理的基本操作,包括将RGB图像转化为灰度和二值图像,并在同一窗口内展示。还讨论了全黑图像的产生原因,解析了一段MATLAB代码实现的图像四分之一化处理。最后,实验展示了如何改变灰度图像的灰度分辨率以及在保持图像大小不变的情况下降低空间分辨率的过程。
摘要由CSDN通过智能技术生成

实验内容

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

    L=2*L;

    quartimage=I(1:L:height,1:L:width);

    subplot(2,3,m+1);

    imshow(uint8(quartimage));

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');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫归棠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值