數字圖像處理實驗


個人記錄,剛學完數字圖像處理,實踐一下

1、讀入一幅RGB圖像,將其變換為灰度圖像和二值圖像,並在同一個窗口內分別顯示原圖,灰度圖像和二值圖像,分別標注圖像名稱。

clear all
img = imread('onion.png');

img_gray = rgb2gray(img);
figure;
subplot(3,1,1);imshow(img);title('原圖');
subplot(3,1,2);imshow(img_gray);title('灰度圖');
img_bin = imbinarize(img_gray);
subplot(3,1,3);imshow(img_bin);title('二值圖');
View Code

image

2、任意讀取一幅圖像,對該幅圖像進行灰度變化,實現圖像變亮、變暗和負片效果。在同一個窗口內分別顯示原圖和相應的處理結果,分別標注圖像名稱。

clear all
img = imread('onion.png');
img=double(img);
img_neg = zeros(size(img));
img_up = zeros(size(img));
img_down = zeros(size(img));
img_neg = uint8(255-1*img);    % s = L-1-r
img_up = uint8(1*img.^(2));
img_down = uint8(1*img.^(0.2));

figure;
subplot(4,1,1);imshow(img);title('原圖像');
subplot(4,1,2);imshow(img_neg);title('負片圖像');
subplot(4,1,3);imshow(img_up);title('變亮圖像');
subplot(4,1,4);imshow(img_down);title('變暗圖像');
View Code

image

3、讀入matlab內置圖像pout.tif,將其小於30的灰度值不變,將30-150的灰度值拉伸到30-200,將150-255的灰度值壓縮到200-255之間。

也可使用for循環,遍歷圖像像素,依照變換函數,逐個變換

clear all
imga = imread('pout.tif');
img = imga;
imga = double(imga);
img=double(img);
idx1=find(imga>=30 &imga<=150);
idx2=find(imga>=150&imga<=255);
img(idx1) = (img(idx1)-30 )*17/12 +30;
img(idx2) = (img(idx2)-150)*55/105+200;
imga = uint8(imga);
img=uint8(img);
figure;
subplot(2,1,1);imshow(imga);
subplot(2,1,2);imshow(img);
View Code

image

4、讀入lena圖像,為其隨機疊加椒鹽噪聲,使用中值濾波方法對其進行圖像降噪,窗口分別采用3*3,5*5,7*7。在同一窗口內依次顯示疊加噪聲的圖像,和處理后圖像。

clear all
img = imread('D:\Program Files\MATLAB\R2018a\toolbox\images\imdata\lena.png');
[width,height,z]=size(img);
image=rgb2gray(img);
noise = rand(size(img));
a=0.1;
b=0.2;
a1=rand(width,height)<a;
a2=rand(width,height)<b;
image(a1&a2)=0;
image(a1& ~a2)=255;
figure;
subplot(5,1,1);imshow(img);title('原圖');
subplot(5,1,2);imshow(image);title('疊加椒鹽噪聲的圖像');
image_filt_33 = medfilt2(image,[3,3]);
image_filt_55 = medfilt2(image,[3,3]);
image_filt_77 = medfilt2(image,[3,3]);
subplot(5,1,3);imshow(image_filt_33);title('3*3窗口去噪后圖像');
subplot(5,1,4);imshow(image_filt_55);title('5*5窗口去噪后圖像');
subplot(5,1,5);imshow(image_filt_77);title('7*7窗口去噪后圖像');
View Code

image

5、 讀取matlab內置的circuit圖像,對其進行直方圖均衡化操作,並在同一窗口內依次顯示原圖,原圖直方圖,均衡化后的圖像和均衡化圖像的直方圖。

clear all
img = imread('circuit.tif');
img_eq = histeq(img);
figure;
subplot(2,2,1);imshow(img);title('原圖');
subplot(2,2,2);imhist(img);title('原圖的直方圖');
subplot(2,2,3);imshow(img_eq(:,:,1));title('均衡化直方圖后的圖');
subplot(2,2,4);imhist(img_eq);title('均衡化直方圖');
View Code

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM