数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing
来源:互联网 发布:泰勒公式矩阵形式 编辑:程序博客网 时间:2024/06/05 03:54
实验要求:
Objective:
To know how to implement image enhancement for color images by histogram processing. Note that the definition of histogram for color images differs from that of histogram for gray images.
Main requirements:
Ability of programming with C, C++, or Matlab.
Instruction manual:
(a) Download the dark-stream color picture in Fig. 6.35 (this image is labeled Fig. 6.35(05) in the image gallery for Chapter 6). Convert the image to RGB (see comments at the beginning of Project 06-01). Histogram-equalize the R, G, and B images separately using the histogram-equalization program and convert the image back to jpg format.
(b) Form an average histogram from the three histograms in (a) and use it as the basis to obtain a single histogram equalization intensity transformation function. Apply this function to the R, G, and B components individually, and convert the results to jpg. Compare and explain the differences in the jpg images in (a) and (b).
本实验是对彩色图像进行直方图均衡化处理。其中,我分了两种方式对彩色图像进行处理。一种是对图像的R、G、B三个彩色分量进行直方图均衡化,另一种是将图像从RGB颜色空间转换到HSI颜色空间,使用直方图均衡化单独处理亮度I分量,随后将图像从HSI空间转换回到RGB颜色空间。对比两种处理方法的结果。
实验代码:
%%close all;clc;clear all;%%img = imread('Fig6.35(5).jpg');figuresubplot(1,3,1);imshow(img);title('original image');%% 对RGB3个通道的灰度值分别做直方图均衡化,然后再合为一幅新的图像R = img(:, :, 1);G = img(:, :, 2);B = img(:, :, 3);A = histeq(R);B = histeq(G);C = histeq(B);img1 = cat(3, A, B, C);subplot(1,3,2);imshow(img1);title('histogram-equalization 1');%% 先将RGB格式的图像转换为HSI格式的图像,然后再对亮度I做直方图均衡化,紧接着转换成RGB格式的图像img_hsi = rgb2hsi(img);img_hsi_i = img_hsi(:, :, 3);img_hsi_I = histeq(img_hsi_i);img_hsi(:, :, 3) = img_hsi_I;img2 = hsi2rgb(img_hsi);subplot(1,3,3);imshow(img2);title('histogram-equalization 2');
补充:
程序中使用的一些函数,RGB和HSI颜色空间之间相互转换的程序:
hsi2rgb()函数:
function rgb = hsi2rgb(hsi)%HSI2RGB Converts an HSI image to RGB.% RGB = HSI2RGB(HSI) converts an HSI image to RGB, where HSI is% assumed to be of class double with: % hsi(:, :, 1) = hue image, assumed to be in the range% [0, 1] by having been divided by 2*pi.% hsi(:, :, 2) = saturation image, in the range [0, 1].% hsi(:, :, 3) = intensity image, in the range [0, 1].%% The components of the output image are:% rgb(:, :, 1) = red.% rgb(:, :, 2) = green.% rgb(:, :, 3) = blue.% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins% Digital Image Processing Using MATLAB, Prentice-Hall, 2004% $Revision: 1.5 $ $Date: 2003/10/13 01:01:06 $% Extract the individual HSI component images.H = hsi(:, :, 1) * 2 * pi;S = hsi(:, :, 2);I = hsi(:, :, 3);% Implement the conversion equations.R = zeros(size(hsi, 1), size(hsi, 2));G = zeros(size(hsi, 1), size(hsi, 2));B = zeros(size(hsi, 1), size(hsi, 2));% RG sector (0 <= H < 2*pi/3).idx = find( (0 <= H) & (H < 2*pi/3));B(idx) = I(idx) .* (1 - S(idx));R(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx)) ./ ... cos(pi/3 - H(idx)));G(idx) = 3*I(idx) - (R(idx) + B(idx));% BG sector (2*pi/3 <= H < 4*pi/3).idx = find( (2*pi/3 <= H) & (H < 4*pi/3) );R(idx) = I(idx) .* (1 - S(idx));G(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 2*pi/3) ./ ... cos(pi - H(idx)));B(idx) = 3*I(idx) - (R(idx) + G(idx));% BR sector.idx = find( (4*pi/3 <= H) & (H <= 2*pi));G(idx) = I(idx) .* (1 - S(idx));B(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 4*pi/3) ./ ... cos(5*pi/3 - H(idx)));R(idx) = 3*I(idx) - (G(idx) + B(idx));% Combine all three results into an RGB image. Clip to [0, 1] to% compensate for floating-point arithmetic rounding effects.rgb = cat(3, R, G, B);rgb = max(min(rgb, 1), 0);
rgb2hsi()函数:
function hsi = rgb2hsi(rgb)%RGB2HSI Converts an RGB image to HSI.% HSI = RGB2HSI(RGB) converts an RGB image to HSI. The input image% is assumed to be of size M-by-N-by-3, where the third dimension% accounts for three image planes: red, green, and blue, in that% order. If all RGB component images are equal, the HSI conversion% is undefined. The input image can be of class double (with values% in the range [0, 1]), uint8, or uint16. %% The output image, HSI, is of class double, where:% hsi(:, :, 1) = hue image normalized to the range [0, 1] by% dividing all angle values by 2*pi. % hsi(:, :, 2) = saturation image, in the range [0, 1].% hsi(:, :, 3) = intensity image, in the range [0, 1].% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins% Digital Image Processing Using MATLAB, Prentice-Hall, 2004% $Revision: 1.5 $ $Date: 2005/01/18 13:44:59 $% Extract the individual component images.rgb = im2double(rgb);r = rgb(:, :, 1);g = rgb(:, :, 2);b = rgb(:, :, 3);% Implement the conversion equations.num = 0.5*((r - g) + (r - b));den = sqrt((r - g).^2 + (r - b).*(g - b));theta = acos(num./(den + eps));H = theta;H(b > g) = 2*pi - H(b > g);H = H/(2*pi);num = min(min(r, g), b);den = r + g + b;den(den == 0) = eps;S = 1 - 3.* num./den;H(S == 0) = 0;I = (r + g + b)/3;% Combine all three results into an hsi image.hsi = cat(3, H, S, I);
程序运行结果:
- 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing
- 数字图像处理实验(15):PROJECT 06-02,Pseudo-Color Image Processing
- 数字图像处理实验(17):PROJECT 06-04,Color Image Segmentation
- 数字图像处理实验(3):PROJECT 02-03, Zooming and Shrinking Images by Pixel Replication
- 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning
- 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
- 数字图像处理实验(7):PROJECT 04-03 , Lowpass Filtering
- 数字图像处理实验(2):PROJECT 02-02, Reducing the Number of Gray Levels in an Image
- 数字图像处理实验(4):PROJECT 02-04 [Multiple Uses],Zooming and Shrinking Images by Bilinear Interpolation
- Color Image Processing
- 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors
- 数字图像处理实验(12):PROJECT 05-03,Periodic Noise Reduction Using a Notch Filter
- 数字图像处理-图像增强: MSRCR Method For Image Processing
- Retinex processing for automatic image enhancement 翻译
- Image Processing by WK
- Image Processing by Retina
- GraphicsLab Project之Color Processing
- 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform
- python库/模块之pygraphviz 1.3.1安装
- Red and Black (广搜 队列)
- Lintcode57 3Sum solution 题解
- ACM中关于浮点型的精确度问题
- Ubuntu下切换JDK1.6 到Open JDK7 java 和javac 版本
- 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing
- Oracle数据库-3
- tensorflow框架基础之Tensor
- 周测3 T1 无碳小车
- Lintcode58 4Sum solution 题解
- 细粒度的审计+删除细粒度审计
- FL2440——RT3070 softAP模式 实现无线路由器功能
- Eclipse手动集成ADT和SDK
- POJ 1518 Problem Bee 笔记