实验一 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); 將height,width賦值為該圖像的參數值
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*N,ceil函數將數值
取整
??? 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');
總結
以上是生活随笔為你收集整理的实验一 MATLAB数字图像处理基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全英文文献翻译 | 遥感技术在绘制中国与
- 下一篇: 天堂2单机版服务器时间修改,L2Jser