日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MatLab:数字图像处理实验

發布時間:2023/12/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MatLab:数字图像处理实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像處理基本處理

  • 實驗目的
  • 實驗環境
  • 實驗內容
    • 題目一
      • 代碼
      • 結果
    • 題目二
      • 平移
        • 平移代碼
        • 平移結果
      • 水平鏡像
        • 水平鏡像代碼
        • 水平鏡像結果
      • 垂直鏡像
        • 垂直鏡像代碼
        • 垂直鏡像結果
      • 放大
        • 放大代碼
        • 放大結果
      • 縮小
        • 縮小代碼
        • 縮小結果
      • 旋轉
        • 旋轉代碼
        • 旋轉結果
      • 雙線性旋轉
        • 旋轉代碼
        • 旋轉結果

實驗目的

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:数字图像处理实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。