数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing
實(shí)驗(yàn)要求:
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).
本實(shí)驗(yàn)是對(duì)彩色圖像進(jìn)行直方圖均衡化處理。其中,我分了兩種方式對(duì)彩色圖像進(jìn)行處理。一種是對(duì)圖像的R、G、B三個(gè)彩色分量進(jìn)行直方圖均衡化,另一種是將圖像從RGB顏色空間轉(zhuǎn)換到HSI顏色空間,使用直方圖均衡化單獨(dú)處理亮度I分量,隨后將圖像從HSI空間轉(zhuǎn)換回到RGB顏色空間。對(duì)比兩種處理方法的結(jié)果。
實(shí)驗(yàn)代碼:
%% close all; clc; clear all;%% img = imread('Fig6.35(5).jpg'); figure subplot(1,3,1); imshow(img); title('original image');%% 對(duì)RGB3個(gè)通道的灰度值分別做直方圖均衡化,然后再合為一幅新的圖像 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格式的圖像轉(zhuǎn)換為HSI格式的圖像,然后再對(duì)亮度I做直方圖均衡化,緊接著轉(zhuǎn)換成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');補(bǔ)充:
程序中使用的一些函數(shù),RGB和HSI顏色空間之間相互轉(zhuǎn)換的程序:
hsi2rgb()函數(shù):
rgb2hsi()函數(shù):
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);程序運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字图像处理实验(15):PROJECT
- 下一篇: 数字图像处理实验(17):PROJECT