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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Matlab数字图像处理——图像增强

發布時間:2024/8/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab数字图像处理——图像增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 一、圖像增強介紹
      • 二、灰度變換增強
        • 1、獲取圖像灰度直方圖
        • 2、通過調整灰度值來增強圖像
      • 三、直方圖增強
        • 1、彩色RGB圖像直方圖顯示
        • 2、直方圖均衡化
        • 3、直方圖近似化
      • 四、圖像的統計特性
      • 五、空域濾波
        • 1、線性平均濾波
        • 2、卷積
        • 3、二維中值濾波
        • 4、順序統計濾波
        • 5、自適應濾波
      • 六、頻域濾波
        • 1、低通濾波
          • (1)、理想低通濾波器
          • (2)、Butterworth低通濾波器
        • 2、高通濾波
          • (1)、Butterworth高通濾波器
          • (2)、高斯高通濾波器
        • 3、理想帶阻濾波器
        • 4、同態濾波
    • 完整目錄

一、圖像增強介紹

  • 圖像增強的目的:提高圖像質量和可辨識度
  • 圖像質量的評價:圖像的逼真度和可懂度

二、灰度變換增強

1、獲取圖像灰度直方圖

灰度變換增強:改變圖像像素灰度值

可通過Matlab函數 imhist 獲取圖像灰度直方圖

I = imread('火影4.jpg'); %讀取圖片 I = rgb2gray(I); %把圖片從rgb格式轉為灰度圖row = size(I, 1); %獲取圖片像素的行列數 column = size(I, 2); N = zeros(1, 256); %一個空的容器,用來記錄每個像素出現的次數% 兩個循環用來遍歷每一個像素 for i = 1:rowfor j = 1:columnk = I(i, j); % 獲取該像素點的像素值N(k + 1) = N(k + 1) + 1; % 記錄下該像素值出現的次數end end%展示圖片 figure; subplot(121);imshow(I); subplot(122);bar(N);

結果展示:

2、通過調整灰度值來增強圖像

I = imread('火影4.jpg'); I = rgb2gray(I); I = double(I);J = (I - 80) * 255 / 70; row = size(I, 1); column = size(I, 2);for i = 1:rowfor j = 1:columnif J(i, j) < 0J(i, j) = 0;elseif J(i, j) > 255J(i, j) = 255;endend endfigure; subplot(121);imshow(uint8(I)); subplot(122);imshow(uint8(J));

結果展示:

從結果看,來回調整灰度值,感覺跟美顏相機調整亮度差不多?

三、直方圖增強

直方圖反映了圖像灰度值的分布情況,直方圖增強的原理就是通過影響灰度值的分布情況來增強圖像。

常用的直方圖調整方法包括直方圖均衡化、直方圖規定化

1、彩色RGB圖像直方圖顯示

I = imread('火影6.jpg');figure; subplot(221);imshow(I); subplot(222);imhist(I(:, :, 1));title('R'); subplot(223);imhist(I(:, :, 2));title('G'); subplot(224);imhist(I(:, :, 3));title('B');

結果展示:

2、直方圖均衡化

Matlab直方圖均衡化函數:histeq

I = imread('火影1.jpg'); J = histeq(I);figure; subplot(221);imshow(I); subplot(222);imshow(J); subplot(223);imhist(I); subplot(224);imhist(J);

結果展示:

從結果可以看出灰度值分布明顯的更平均了,實際圖像看上去色彩對比沒有那么強烈了

3、直方圖近似化

Matlab提供的函數 histeq 還可以讓直方圖分布情況近似于給定的分布情況,例如下列代碼,讓圖像的直方圖分布去近似正態分布:

I = imread('火影1.jpg'); G = randn(1, 256); J = histeq(I, G);figure; subplot(231);imshow(I);title('原圖'); subplot(232);imshow(J);title('近似后'); subplot(233);imhist(I);title('原圖像直方圖分布情況'); subplot(234);imhist(J);title('近似后分布情況'); subplot(235);bar(G);title('近似的參考分布');

結果展示:

四、圖像的統計特性

  • 1、圖像的標準差函數:std2
  • 2、圖像的平均數函數:mean2
  • 3、繪制圖像等高線函數:imcontour
I = imread('火影4.jpg'); I = rgb2gray(I);figure; subplot(121);imshow(I); subplot(122);imcontour(I);

五、空域濾波

空域濾波的原理:

1、圖 a 為要進行濾波的原圖像,圖 b 為濾波模板,圖 c 為濾波后的結果
2、首先選定像素點 s0 ,使用模板使原圖像 s0 及其周圍的點與模板設定好的系數對應相乘,其結果相加得到R, 使R替換 s0,則完成濾波操作

這一部分的圖像就用我超級喜歡的自來也吧!!這張是原圖:

1、線性平均濾波

Matlab提供濾波函數:imfilter

I = imread('火影7.jpg'); I = rgb2gray(I); %讀入灰度圖像J = imnoise(I, 'salt & pepper', 0.02); %加入椒鹽噪聲 h = ones(3, 3) / 5; %設置濾波模板 h(1, 1) = 0; h(1, 3) = 0; h(3, 1) = 0; h(1, 3) = 0;K = imfilter(J, h); %進行空域濾波figure; subplot(131);imshow(I);title('原灰度圖'); subplot(132);imshow(J);title('加椒鹽噪聲'); subplot(133);imshow(K);title('空域濾波');

結果展示:

圖三對比圖二可以明顯的看出椒鹽噪聲沒那么明顯了

2、卷積

Matlab卷積操作函數:conv2
下列代碼為卷積操作:

I = imread('火影7.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);J = imnoise(I, 'gaussian', 0, 0.01); %加入高斯噪聲 h = ones(3, 3) / 9; %設置濾波模板K = conv2(J, h); %進行卷積操作figure; subplot(131);imshow(I);title('原灰度圖'); subplot(132);imshow(J);title('加高斯噪聲'); subplot(133);imshow(K);title('卷積');


圖三對比圖二也可以明顯的看出高斯噪聲沒那么明顯了

3、二維中值濾波

Matlab提供中值濾波的函數:medfilt2

二維中值濾波可以有效的去除椒鹽噪聲,效果比均值濾波要好

I = imread('火影7.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);J = imnoise(I, 'salt & pepper', 0.03); %加入椒鹽噪聲K = medfilt2(J); %進行二維中值濾波figure; subplot(131);imshow(I);title('原灰度圖'); subplot(132);imshow(J);title('加椒鹽噪聲'); subplot(133);imshow(K);title('中值濾波');


完全看不出椒鹽噪聲!! 真 TMD 好!!

4、順序統計濾波

Matlab提供順序統計濾波函數:ordfilt2

I = imread('火影7.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);K1 = ordfilt2(I, 1, true(5)); %相當于最小值濾波 K2 = ordfilt2(I, 25, true(5)); %最大值濾波figure; subplot(131);imshow(I);title('原灰度圖'); subplot(132);imshow(K1); subplot(133);imshow(K2);


采用5 x 5模板最小值輸出會使圖像更暗,5 x 5最大值輸出使圖像更亮,同時這兩種輸出都使圖像更模糊了。。。

5、自適應濾波

Matlab自適應濾波函數:wiener2

I = imread('火影7.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);J = imnoise(I, 'gaussian', 0, 0.01); %加入高斯噪聲K = wiener2(J, [5, 5]); %進行卷積操作figure; subplot(131);imshow(I);title('原灰度圖'); subplot(132);imshow(J);title('加高斯噪聲'); subplot(133);imshow(K);title('自適應濾波');

六、頻域濾波

1、低通濾波

低通濾波器原理是讓低頻通過,衰減或過濾掉高頻濾波,從而過濾掉包含在高頻中的噪聲。其作用是圖像的去噪聲平滑增強,但也會造成不同程度的模糊

(1)、理想低通濾波器

D(u,v)=[(u?M/2)2+(v?N/2)2]1/2D(u, v) = [(u - M / 2)^2 + (v - N / 2)^2]^{1 / 2}D(u,v)=[(u?M/2)2+(v?N/2)2]1/2
其中 D(u, v) 表示頻率域中點 (u, v) 與頻率矩形中心的距離,該距離若大于預先設定距離D0則該點值為0,小于或等于則保留原值。

I = imread('火影8.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);M = 2 * size(I, 1); N = 2 * size(I, 2);u = -M / 2:(M / 2 - 1); v = -N / 2:(N / 2 - 1); [U, V] = meshgrid(u, v); %基于向量 u 和 v 中包含的坐標返回二維網格坐標 D = sqrt(U.^2 + V.^2); D0 = 80; %濾波器截止頻率為80 H = double(D<= D0); J = fftshift(fft2(I, size(H, 1), size(H, 2))); %fftshift將零頻點移到頻譜的中間,fft2二維快速傅里葉變換 K = J.*H; L = ifft2(ifftshift(K)); %二維快速傅里葉逆變換 L = L(1: size(I, 1), 1: size(I, 2)); figure; subplot(121);imshow(I); subplot(122);imshow(L);

結果表明,效果真的不咋地:

(2)、Butterworth低通濾波器

截止頻率位于距原點 D0 處的 n 階Butterworth低通濾波器(BLPF)的傳遞函數定義為:
H(u,v)=11+[D(u,v)/D0]2nH(u, v) = \frac{1}{1 + [D(u, v) / D_{0}]^{2n}}H(u,v)=1+[D(u,v)/D0?]2n1?

I = imread('火影8.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);M = 2 * size(I, 1); N = 2 * size(I, 2);u = -M / 2:(M / 2 - 1); v = -N / 2:(N / 2 - 1); [U, V] = meshgrid(u, v); %基于向量 u 和 v 中包含的坐標返回二維網格坐標 D = sqrt(U.^2 + V.^2); D0 = 80; %濾波器截止頻率為80 n = 6; H = 1./ (1 + (D./ D0).^ (2 * n)); J = fftshift(fft2(I, size(H, 1), size(H, 2))); %fftshift將零頻點移到頻譜的中間,fft2二維快速傅里葉變換 K = J.*H; L = ifft2(ifftshift(K)); %二維快速傅里葉逆變換 L = L(1: size(I, 1), 1: size(I, 2)); figure; subplot(121);imshow(I); subplot(122);imshow(L);

結果也是很糊:

2、高通濾波

高通濾波器原理是讓高頻通過,衰減或過濾掉低頻濾波。其作用是使圖像得到銳化處理,突出圖像邊界

(1)、Butterworth高通濾波器

截止頻率位于距原點 D0 處的 n 階Butterworth高通濾波器(BHPF)的傳遞函數定義為:
H(u,v)=11+[D0/D(u,v)]2nH(u, v) = \frac{1}{1 + [D_{0} / D(u, v)]^{2n}}H(u,v)=1+[D0?/D(u,v)]2n1?

I = imread('火影8.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);M = 2 * size(I, 1); N = 2 * size(I, 2);u = -M / 2:(M / 2 - 1); v = -N / 2:(N / 2 - 1); [U, V] = meshgrid(u, v); %基于向量 u 和 v 中包含的坐標返回二維網格坐標 D = sqrt(U.^2 + V.^2); D0 = 30; %濾波器截止頻率為30 n = 6; H = 1./ (1 + (D0./ D).^ (2 * n)); J = fftshift(fft2(I, size(H, 1), size(H, 2))); %fftshift將零頻點移到頻譜的中間,fft2二維快速傅里葉變換 K = J.*H; L = ifft2(ifftshift(K)); %二維快速傅里葉逆變換 L = L(1: size(I, 1), 1: size(I, 2)); figure; subplot(121);imshow(I); subplot(122);imshow(L);

可以明顯地突出圖像的邊緣部分:

(2)、高斯高通濾波器

截止頻率處在距頻率矩形中心距離為 D0 的高斯高通濾波器(GHPF)的傳遞函數由下式給出:
H(u,v)=1?e?D2(u,v)/2D02H(u, v) = 1 - e^{-D^{2}(u, v)/2D_{0}^{2}}H(u,v)=1?e?D2(u,v)/2D02?
該濾波器結果要更加平滑,即使對微小物體和細線條濾波結果也比較清晰

I = imread('火影8.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = im2double(I);M = 2 * size(I, 1); N = 2 * size(I, 2);u = -M / 2:(M / 2 - 1); v = -N / 2:(N / 2 - 1); [U, V] = meshgrid(u, v); %基于向量 u 和 v 中包含的坐標返回二維網格坐標 D = sqrt(U.^2 + V.^2); D0 = 20; %濾波器截止頻率為20 H = 1 - exp(-(D.^2)./(2 * (D0^2))); J = fftshift(fft2(I, size(H, 1), size(H, 2))); %fftshift將零頻點移到頻譜的中間,fft2二維快速傅里葉變換 K = J.*H; L = ifft2(ifftshift(K)); %二維快速傅里葉逆變換 L = L(1: size(I, 1), 1: size(I, 2)); figure; subplot(121);imshow(I); subplot(122);imshow(L);

結果展示:

3、理想帶阻濾波器

帶阻濾波器用于抑制距離頻率域中心一定距離的一個圓環區域的頻率,可用于消除一定頻率范圍的周期噪聲。

I = imread('火影8.jpg'); I = rgb2gray(I); %讀入灰度圖像 I = imnoise(I, 'gaussian', 0, 0.01); %加入高斯噪聲 I = im2double(I);M = 2 * size(I, 1); N = 2 * size(I, 2);u = -M / 2:(M / 2 - 1); v = -N / 2:(N / 2 - 1); [U, V] = meshgrid(u, v); %基于向量 u 和 v 中包含的坐標返回二維網格坐標 D = sqrt(U.^2 + V.^2); D0 = 50; %濾波器截止頻率為50 W = 30; H = double(or(D < (D0 - W / 2), D > D0 + W / 2));J = fftshift(fft2(I, size(H, 1), size(H, 2))); %fftshift將零頻點移到頻譜的中間,fft2二維快速傅里葉變換 K = J.*H; L = ifft2(ifftshift(K)); %二維快速傅里葉逆變換 L = L(1: size(I, 1), 1: size(I, 2)); figure; subplot(121);imshow(I); subplot(122);imshow(L);

4、同態濾波

同態濾波可以壓縮灰度圖像的動態范圍,且增強對比度

I = imread('pout.tif'); J = log(im2double(I) + 1); K = fft2(J); n = 5; D0 = 0.1 * pi; rh = 0.7; rl = 0.4; [row, column] = size(J);for i = 1: rowfor j = 1: columnD1(i, j) = sqrt(i^2 + j^2);H(i, j) = rl + (rh / (1 + (D0 / D1(i, j))^(2 * n)));end endL = K.*H; M = ifft2(L); N = exp(M) - 1;figure; subplot(121);imshow(I); subplot(122);imshow(real(N));

完整目錄

Matlab數字圖像處理——圖像處理工具箱Image Processing Toolbox
Matlab數字圖像處理——圖像類型的轉換
Matlab數字圖像處理——圖像文件的讀取
Matlab數字圖像處理——圖像文件的顯示
Matlab數字圖像處理——視頻文件的讀寫
Matlab數字圖像處理——圖像的像素運算(灰度變換)
Matlab數字圖像處理——圖像的空間變換
Matlab數字圖像處理——圖像的平移、鄰域操作、區域選取
Matlab數字圖像處理——圖像增強
Matlab數字圖像處理——圖像復原

總結

以上是生活随笔為你收集整理的Matlab数字图像处理——图像增强的全部內容,希望文章能夠幫你解決所遇到的問題。

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