基于YCbCr通道的图像增强技术

增强图片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. 结果及分析

图1 原图像

在这里插入图片描述

图2 加入噪声后的图像

图3 平滑处理后的图像

在这里插入图片描述

图4 滤波处理后的图像
在这里插入图片描述

图5 处理后YCbCr通道的图像
在这里插入图片描述

图6 处理后Y通道的边缘

在这里插入图片描述

图7 增强后YCbCr通道的图像

在这里插入图片描述

图8 最终得到的图像

在这里插入图片描述

图9 RGB分量各自的灰度直方图

实训的收获与体会**
遇到问题,问题描述,解决思路,如何解决,解决的效果如何?
1. Laplacian算子的边缘检测效果不佳

解决:因为题目中指定为使用Laplacian算子,所以没有进行修改,但是实际测试使用LOG算子边缘检测的效果要好很多。

  1. 尚未解决的问题

    无。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打豆豆1234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值