增强图片YCbCr通道 彩色图像处理 MATLAB
clc;
close all;
clear all;
%1 读入一幅彩色图像(若是灰度图像,给出错误提示)
[name path] = uigetfile('*.*', '图片选择');
im = imread([path name]);
if numel(size(im)) == 1
disp('图片为灰度图,请重新选择!')
end
figure; imshow(im); title('原图像');
R = im(:,:,1); G = im(:,:,2); B = im(:,:,3);
%2 在RGB空间中向图像的R、G、B三个分量
%分别添加不同的噪声,显示加入噪声后的图像
R = imnoise(R,'gaussian',0.02);
G = imnoise(G,'poisson');
B = imnoise(B,'salt & pepper',0.03);
im2 = cat(3,R,G,B);
figure; imshow(im2); title('加入噪声后的图像');
%3 在空域内,选用中值滤波器对第2步图像
%进行平滑处理,并显示平滑后的彩色图像
R0 = medfilt2(R);
G0 = medfilt2(G);
B0 = medfilt2(B);
im3 = cat(3,R0,G0,B0);
figure; imshow(im3); title('平滑处理后的图像');
%4 在频域内,使用高斯低通滤波器对第2步图像
%的每个分量滤波(参数自行指定),并显示滤波后的彩色图像
Rf = fftshift(fft2(R));
Gf = fftshift(fft2(G));
Bf = fftshift(fft2(B));
[row,col] = size(R);
RH= zeros(row,col); GH=RH; BH=RH;
a0 = round(row/2);
b0 = round(col/2);
Rd = 45; Gd = 55; Bd = 27;
for i= 1 : row
for j= 1 : col
d = (i-a0)^2 + (j-b0)^2;
RH(i,j) = exp(-d / (2*Rd^2));
GH(i,j) = exp(-d / (2*Gd^2));
BH(i,j) = exp(-d / (2*Bd^2));
end
end
Rf = RH.*Rf; Gf = GH.*Gf; Bf = BH.*Bf;
Rf = uint8(real(ifft2(ifftshift(Rf))));
Gf = uint8(real(ifft2(ifftshift(Gf))));
Bf = uint8(real(ifft2(ifftshift(Bf))));
im4 = cat(3,Rf,Gf,Bf);
figure; imshow(im4); title('滤波后的彩色图像');
%5 将第3步得到的彩色图像转换到
%YCbCr空间,并在YCbCr空间显示该图像
im5 = rgb2ycbcr(im3);
figure; imshow(im5); title('处理后YCbCr通道的图像');
%6 使用Laplacian算子检测第5步得到
%的图像的Y分量的边缘信息,并显示边缘
im5 = im2double(im5);
k = [1,1,1;1,-8,1;1,1,1];
im6 = zeros(row,col);
for i = 2:row-1
for j = 2:col-1
im6(i,j) = sum(sum(im5(i-1:i+1,j-1:j+1,1) .* k));
end
end
figure; imshow(im6); title('处理后Y通道的边缘');
%7 将第6步检测的边缘和原Y分量相加,实现Y分量的增强
%并在YCbCr空间显示增强后的图像
im5(:,:,1) = im5(:,:,1) + im6;
figure; imshow(im5); title('增强后YCbCr通道的图像');
%8 将YCbCr空间转换回RGB空间,并显示最终得到的图像
im8 = ycbcr2rgb(im5);
figure; imshow(im8); title('最终得到的图像');
%9 绘制第8步得到图像的R分量、G分量、B分量的灰度直方图
figure;
subplot(131),imhist(im8(:,:,1)),title('R分量灰度直方图');
subplot(132),imhist(im8(:,:,2)),title('G分量灰度直方图');
subplot(133),imhist(im8(:,:,3)),title('B分量灰度直方图');
- 结果及分析
图1 原图像
图2 加入噪声后的图像
图3 平滑处理后的图像
图4 滤波处理后的图像
图5 处理后YCbCr通道的图像
图6 处理后Y通道的边缘
图7 增强后YCbCr通道的图像
图8 最终得到的图像
图9 RGB分量各自的灰度直方图
实训的收获与体会**
遇到问题,问题描述,解决思路,如何解决,解决的效果如何?
1. Laplacian算子的边缘检测效果不佳
解决:因为题目中指定为使用Laplacian算子,所以没有进行修改,但是实际测试使用LOG算子边缘检测的效果要好很多。
-
尚未解决的问题
无。