文档库 最新最全的文档下载
当前位置:文档库 › 自适应直方图均衡化三

自适应直方图均衡化三

自适应直方图均衡化三
自适应直方图均衡化三

自适应直方图均衡化三

function out = adathisteq(varargin)

%ADATHISTEQ Contrast-limited Adative Histogram Equalization (CLAHE).

% ADATHISTEQ enhances the contrast of images by transforming the

% values in the intensity image I. Unlike HISTEQ, it oerates on small

% data regions (tiles), rather than the entire image. Each tile's

% contrast is enhanced, so that the histogram of the outut region

% aroximately matches the secified histogram. The neighboring tiles

% are then combined using bilinear interolation in order to eliminate

% artificially induced boundaries. The contrast, esecially

% in homogeneous areas, can be limited in order to avoid amlifying the

% noise which might be resent in the image.

%

% J = ADATHISTEQ(I) erforms CLAHE on the intensity image I.

%

% J = ADATHISTEQ(I,ARAM1,VAL1,ARAM2,VAL2...) sets various arameters.

% arameter names can be abbreviated, and case does not matter. Each

% string arameter is followed by a value as indicated below:

%

% 'NumTiles' Two-element vector of ositive integers: [M N].

% [M N] secifies the number of tile rows and

% columns. Both M and N must be at least 2.

% The total number of image tiles is equal to M*N.

%

% Default: [8 8].

%

% 'CliLimit' Real scalar from 0 to 1.

% 'CliLimit' limits contrast enhancement. Higher numbers

% result in more contrast.

%

% Default: 0.01.

%

% 'NBins' ositive integer scalar.

% Sets number of bins for the histogram used in building a

% contrast enhancing transformation. Higher values result

% in greater dynamic range at the cost of slower rocessing

% seed.

%

% Default: 256.

%

% 'Range' One of the strings: 'original' or 'full'.

% Controls the range of the outut image data. If 'Range'

% is set to 'original', the range is limited to

% [min(I(:)) max(I(:))]. Otherwise, by default, or when

% 'Range' is set to 'full', the full range of the outut

% image class is used (e.g. [0 255] for uint8).

%

% Default: 'full'.

%

% 'Distribution' Distribution can be one of three strings: 'uniform',

% 'rayleigh', 'exonential'.

% Sets desired histogram shae for the image tiles, by

% secifying a distribution tye.

%

% Default: 'uniform'.

%

% 'Alha' Nonnegative real scalar.

% 'Alha' is a distribution arameter, which can be sulied

% when 'Dist' is set to either 'rayleigh' or 'exonential'.

%

% Default: 0.4.

%

% Notes

% -----

% - 'NumTiles' secify the number of rectangular contextual regions (tiles)

% into which the image is divided. The contrast transform function is

% calculated for each of these regions individually. The otimal number of

% tiles deends on the tye of the inut image, and it is best determined

% through exerimentation.

%

% - The 'CliLimit' is a contrast factor that revents over-saturation of the % image secifically in homogeneous areas. These areas are characterized

% by a high eak in the histogram of the articular image tile due to many

% ixels falling inside the same gray level range. Without the cli limit,

% the adative histogram equalization technique could roduce results that,

% in some cases, are worse than the original image.

%

% - ADATHISTEQ can use Uniform, Rayleigh, or Exonential distribution as

% the basis for creating the contrast transform function. The distribution

% that should be used deends on the tye of the inut image.

% For examle, underwater imagery aears to look more natural when the

% Rayleigh distribution is used.

%

% Class Suort

% -------------

% Intensity image I can be uint8, uint16, int16, double, or single.

% The outut image J has the same class as I.

%

% Examle 1

% ---------

% Aly Contrast-Limited Adative Histogram Equalization to an

% image and dislay the results.

%

% I = imread('tire.tif');

% A = adathisteq(I,'cliLimit',0.02,'Distribution','rayleigh'); % figure, imshow(I);

% figure, imshow(A);

%

% Examle 2

% ---------

%

% Aly Contrast-Limited Adative Histogram Equalization to a color

% hotograh.

%

% [X MA] = imread('shadow.tif');

% RGB = ind2rgb(X,MA); % convert indexed image to truecolor format

% cform2lab = makecform('srgb2lab');

% LAB = alycform(RGB, cform2lab); %convert image to L*a*b color sace

% L = LAB(:,:,1)/100; % scale the values to range from 0 to 1

% LAB(:,:,1) = adathisteq(L,'NumTiles',[8 8],'CliLimit',0.005)*100;

% cform2srgb = makecform('lab2srgb');

% J = alycform(LAB, cform2srgb); %convert back to RGB

% figure, imshow(RGB); %dislay the results

% figure, imshow(J);

%

% See also HISTEQ.

% Coyright 1993-2010 The MathWorks, Inc.

% $Revision: 1.1.6.12 $ $Date: 2011/08/09 17:48:54 $

% References:

% Karel Zuiderveld, "Contrast Limited Adative Histogram Equalization",

% Grahics Gems IV, . 474-485, code: . 479-484

%

% Hanumant Singh, Woods Hole Oceanograhic Institution, ersonal

% communication

%--------------------------- The algorithm ----------------------------------

%

% 1. Obtain all the inuts:

% * image

% * number of regions in

row and column directions

% * number of bins for the histograms used in building image transform

% function (dynamic range)

% * cli limit for contrast limiting (normalized from 0 to 1)

% * other miscellaneous otions

% 2. re-rocess the inuts:

% * determine real cli limit from the normalized value

% * if necessary, ad the image before slitting it into regions

% 3. rocess each contextual region (tile) thus roducing gray level maings

% * extract a single image region

% * make a histogram for this region using the secified number of bins

% * cli the histogram using cli limit

% * create a maing (transformation function) for this region

% 4. Interolate gray level maings in order to assemble final CLAHE image

% * extract cluster of four neighboring maing functions

% * rocess image region artly overlaing each of the maing tiles

% * extract a single ixel, aly four maings to that ixel, and

% interolate between the results to obtain the outut ixel; reeat

% over the entire image

%

% See code for further details.

%

%-----------------------------------------------------------------------------

[I, selectedRange, fullRange, numTiles, dimTile, cliLimit, numBins, ... noadRect, distribution, alha, int16ClassChange] = arseInuts(varargin{:});

tileMaings = makeTileMaings(I, numTiles, dimTile, numBins, cliLimit, ... selectedRange, fullRange, distribution, alha);

%Synthesize the outut image based on the individual tile maings.

out = makeClaheImage(I, tileMaings, numTiles, selectedRange, numBins,... dimTile);

if int16ClassChange

% Change uint16 back to int16 so outut has same class as inut.

out = uint16toint16(out);

end

if ~isemty(noadRect) %do we need to remove adding?

out = out(noadRect.ulRow:noadRect.lrRow, ...

noadRect.ulCol:noadRect.lrCol);

end

%-----------------------------------------------------------------------------

function tileMaings = ...

makeTileMaings(I, numTiles, dimTile, numBins, cliLimit,... selectedRange, fullRange, distribution, alha)

numixInTile = rod(dimTile);

tileMaings = cell(numTiles);

% extract and rocess each tile

imgCol = 1;

for col=1:numTiles(2),

imgRow = 1;

for row=1:numTiles(1),

tile = I(imgRow:imgRow+dimTile(1)-1,imgCol:imgCol+dimTile(2)-1);

% for seed, call MEX file directly thus avoiding costly

% inut arsing of imhist

tileHist = imhistc(tile, numBins, 1, fullRange(2));

tileHist = cliHistogram(tileHist, cliLimit, numBins);

tileMaing = makeMaing(tileHist, selectedRange, fullRange, ... numixInTile, distribution, alha

);

% assemble individual tile maings by storing them in a cell array; tileMaings{row,col} = tileMaing;

imgRow = imgRow + dimTile(1);

end

imgCol = imgCol + dimTile(2); % move to the next column of tiles

end

%-----------------------------------------------------------------------------

% Calculate the equalized looku table (maing) based on cumulating the inut % histogram. Note: looku table is rescaled in the selectedRange [Min..Max].

function maing = makeMaing(imgHist, selectedRange, fullRange, ... numixInTile, distribution, alha)

histSum = cumsum(imgHist);

valSread = selectedRange(2) - selectedRange(1);

switch distribution

case 'uniform',

scale = valSread/numixInTile;

maing = min(selectedRange(1) + histSum*scale,...

selectedRange(2)); %limit to max

case 'rayleigh', % suitable for underwater imagery

% df = (t./alha^2).*ex(-t.^2/(2*alha^2))*U(t)

% cdf = 1-ex(-t.^2./(2*alha^2))

hconst = 2*alha^2;

vmax = 1 - ex(-1/hconst);

val = vmax*(histSum/numixInTile);

val(val>=1) = 1-es; % avoid log(0)

tem = sqrt(-hconst*log(1-val));

maing = min(selectedRange(1)+tem*valSread,...

selectedRange(2)); %limit to max

case 'exonential',

% df = alha*ex(-alha*t)*U(t)

% cdf = 1-ex(-alha*t)

vmax = 1 - ex(-alha);

val = (vmax*histSum/numixInTile);

val(val>=1) = 1-es;

tem = -1/alha*log(1-val);

maing = min(selectedRange(1)+tem*valSread,selectedRange(2));

otherwise,

error(message('images:adathisteq:distributionTye')) %should never get here

end

%rescale the result to be between 0 and 1 for later use by the GRAYXFORM

%rivate mex function

maing = maing/fullRange(2);

%-----------------------------------------------------------------------------

% This function clis the histogram according to the cliLimit and

% redistributes clied ixels across bins below the cliLimit

function imgHist = cliHistogram(imgHist, cliLimit, numBins)

% total number of ixels overflowing cli limit in each bin

totalExcess = sum(max(imgHist - cliLimit,0));

% cli the histogram and redistribute the excess ixels in each bin

avgBinIncr = floor(totalExcess/numBins);

uerLimit = cliLimit - avgBinIncr; % bins larger than this will be

% set to cliLimit

% this loo should seed u the oeration by utting multile ixels

% into the "obvious" laces first

for k=1:numBins

if imgHist(k) > cliLimit

imgHist(k) = cliLimit;

else

if imgHist(k) > uerLimit % high bin count

totalExcess = totalExcess - (cliLimit - imgHist(k));

imgHist(k) = cliLimit;

else

totalExcess = totalExcess - avgBinIncr;

imgHist(k) = imgHist(k) + avgBinIncr;

end

end

end

% this loos redistributes the remaining ixels, one ixel at a time

k = 1;

while (totalExcess ~= 0)

%kee increasing the ste as fewer and fewer ixels remain for

%the redistribution (sread them evenly)

steSize = max(floor(numBins/totalExcess),1);

for m=k:steSize:numBins

if imgHist(m) < cliLimit

imgHist(m) = imgHist(m)+1;

totalExcess = totalExcess - 1; %reduce excess

if totalExcess == 0

break;

end

end

end

k = k+1; %revent from always lacing the ixels in bin #1

if k > numBins % start over if numBins was reached

k = 1;

end

end

%-----------------------------------------------------------------------------

% This function interolates between neighboring tile maings to roduce a

% new maing in order to remove artificially induced tile borders.

% Otherwise, these borders would become quite visible. The resulting

% maing is alied to the inut image thus roducing a CLAHE rocessed

% image.

function claheI = makeClaheImage(I, tileMaings, numTiles, selectedRange,... numBins, dimTile)

%initialize the outut image to zeros (reserve the class of the inut image) claheI = I;

claheI(:) = 0;

%comute the LUT for looking u original image values in the tile maings,

%which we created earlier

if ~(isa(I,'double') || isa(I,'single'))

k = selectedRange(1)+1 : selectedRange(2)+1;

aLut = zeros(length(k),1);

aLut(k) = (k-1)-selectedRange(1);

aLut = aLut/(selectedRange(2)-selectedRange(1));

else

% rema from 0..1 to 0..numBins-1

if numBins ~= 1

binSte = 1/(numBins-1);

start = ceil(selectedRange(1)/binSte);

sto = floor(selectedRange(2)/binSte);

k = start+1:sto+1;

aLut(k) = 0:1/(length(k)-1):1;

else

aLut(1) = 0; %in case someone secifies numBins = 1, which is just silly end

end

imgTileRow=1;

for k=1:numTiles(1)+1

if k == 1 %secial case: to row

imgTileNumRows = dimTile(1)/2; %always divisible by 2 because of adding maTileRows = [1 1];

else

if k == numTiles(1)+1 %secial case: bottom row

imgTileNumRows = dimTile(1)/2;

maTileRows = [numTiles(1) numTiles(1)];

else %default values

imgTileNumRows = dimTile(1);

maTileRows = [k-1, k]; %[uerRow lowerRow]

end

end

% loo over columns of the tileMaings cell array

imgTileCol=1;

for l=1:numTiles(2)+1

if l == 1 %secial case: left column

imgTileNumCols = dimTile(2)/2;

maTileCols = [1, 1];

else

if l == numTiles(2)+1 % secial case: right column

imgTileNumCols = dimTile(2)/2;

maTileCols = [numTiles(2), numTiles(2)];

el

se %default values

imgTileNumCols = dimTile(2);

maTileCols = [l-1, l]; % right left

end

end

% Extract four tile maings

ulMaTile = tileMaings{maTileRows(1), maTileCols(1)};

urMaTile = tileMaings{maTileRows(1), maTileCols(2)};

blMaTile = tileMaings{maTileRows(2), maTileCols(1)};

brMaTile = tileMaings{maTileRows(2), maTileCols(2)};

% Calculate the new greylevel assignments of ixels

% within a submatrix of the image secified by imgTileIdx. This

% is done by a bilinear interolation between four different maings

% in order to eliminate boundary artifacts.

normFactor = imgTileNumRows*imgTileNumCols; %normalization factor imgTileIdx = {imgTileRow:imgTileRow+imgTileNumRows-1, ... imgTileCol:imgTileCol+imgTileNumCols-1};

imgixVals = grayxform(I(imgTileIdx{1},imgTileIdx{2}), aLut);

% calculate the weights used for linear interolation between the

% four maings

rowW = remat((0:imgTileNumRows-1)',1,imgTileNumCols);

colW = remat(0:imgTileNumCols-1,imgTileNumRows,1);

rowRevW = remat((imgTileNumRows:-1:1)',1,imgTileNumCols); colRevW = remat(imgTileNumCols:-1:1,imgTileNumRows,1);

claheI(imgTileIdx{1}, imgTileIdx{2}) = ...

(rowRevW .* (colRevW .* double(grayxform(imgixVals,ulMaTile)) + ... colW .* double(grayxform(imgixVals,urMaTile)))+ ...

rowW .* (colRevW .* double(grayxform(imgixVals,blMaTile)) + ... colW .* double(grayxform(imgixVals,brMaTile))))...

/normFactor;

imgTileCol = imgTileCol + imgTileNumCols;

end %over tile cols

imgTileRow = imgTileRow + imgTileNumRows;

end %over tile rows

%-----------------------------------------------------------------------------

function [I, selectedRange, fullRange, numTiles, dimTile, cliLimit,...

numBins, noadRect, distribution, alha, ...

int16ClassChange] = arseInuts(varargin)

narginchk(1,13);

I = varargin{1};

validateattributes(I, {'uint8', 'uint16', 'double', 'int16', 'single'}, ...

{'real', '2d', 'nonsarse', 'nonemty'}, ... mfilename, 'I', 1);

% convert int16 to uint16

if isa(I,'int16')

I = int16touint16(I);

int16ClassChange = true;

else

int16ClassChange = false;

end

if any(size(I) < 2)

error(message('images:adathisteq:inutImageTooSmall'))

end

%Other otions

%%%%%%%%%%%%%%

%Set the defaults

distribution = 'uniform';

alha = 0.4;

if isa(I, 'double') || isa(I,'single')

fullRange = [0 1];

else

fullRange(1) = I(1); %coy class of the inut image

fullRange(1:2) = [-Inf Inf]; %will be clied to min and max

fullRange = double(fu

llRange);

end

selectedRange = fullRange;

%Set the default to 256 bins regardless of the data tye;

%the user can override this value at any time

numBins = 256;

normCliLimit = 0.01;

numTiles = [8 8];

checkAlha = false;

validStrings = {'NumTiles','CliLimit','NBins','Distribution' ;,...

'Alha','Range'};

if nargin > 1

done = false;

idx = 2;

while ~done

inut = varargin{idx};

inutStr = validatestring(inut, validStrings,mfilename,'ARAM',idx);

idx = idx+1; %advance index to oint to the VAL ortion of the inut

if idx > nargin

error(message('images:adathisteq:missingValue', inutStr))

end

switch inutStr

case 'NumTiles'

numTiles = varargin{idx};

validateattributes(numTiles, {'double'}, {'real', 'vector', ...

'integer', 'finite','ositive'},...

mfilename, inutStr, idx);

if (any(size(numTiles) ~= [1,2]))

error(message('images:adathisteq:invalidNumTilesVector', inutStr))

end

if any(numTiles < 2)

error(message('images:adathisteq:invalidNumTilesValue', inutStr))

end

case 'CliLimit'

normCliLimit = varargin{idx};

validateattributes(normCliLimit, {'double'}, ...

{'scalar','real','nonnegative'},...

mfilename, inutStr, idx);

if normCliLimit > 1

error(message('images:adathisteq:invalidCliLimit', inutStr))

end

case 'NBins'

numBins = varargin{idx};

validateattributes(numBins, {'double'}, {'scalar','real','integer',...

'ositive'}, mfilename, 'NBins', idx);

case 'Distribution'

validDist = {'rayleigh','exonential','uniform'}; distribution = validatestring(varargin{idx}, validDist, mfilename,...

'Distribution', idx);

case 'Alha'

alha = varargin{idx};

validateattributes(alha, {'double'},{'scalar','real',... 'nonnan','ositive','finite'},...

mfilename, 'Alha',idx);

checkAlha = true;

case 'Range'

validRangeStrings = {'original','full'};

rangeStr = validatestring(varargin{idx}, validRangeStrings,mfilename,...

'Range',idx);

if strmatch(rangeStr,'original')

selectedRange = double([min(I(:)), max(I(:))]);

end

otherwise

error(message('images:adathisteq:inutString')) %should never get here end

if idx >= nargin

done = true;

end

idx=idx+1;

end

end

%% re-rocess the inuts

%%%%%%%%%%%%

%%%%%%%%%%%%%%

dimI = size(I);

dimTile = dimI ./ numTiles;

%check if tile size is reasonable

if any(dimTile < 1)

error(message('images:adathisteq:inutImageTooSmallToSlit',

num2str( numTiles )))

end

if checkAlha

if strcm(distribution,'uniform')

error(message('images:adathisteq:alhaShouldNotBeSecified', distribution))

end

end

%check if the image needs to be added; ad if necessary;

%adding occurs if any dimension of a single tile is an odd number

%and/or when image dimensions are not divisible by the selected

%number of tiles

rowDiv = mod(dimI(1),numTiles(1)) == 0;

colDiv = mod(dimI(2),numTiles(2)) == 0;

if rowDiv &am;&am; colDiv

rowEven = mod(dimTile(1),2) == 0;

colEven = mod(dimTile(2),2) == 0;

end

noadRect = [];

if ~(rowDiv &am;&am; colDiv &am;&am; rowEven &am;&am; colEven) adRow = 0;

adCol = 0;

if ~rowDiv

rowTileDim = floor(dimI(1)/numTiles(1)) + 1;

adRow = rowTileDim*numTiles(1) - dimI(1);

else

rowTileDim = dimI(1)/numTiles(1);

end

if ~colDiv

colTileDim = floor(dimI(2)/numTiles(2)) + 1;

adCol = colTileDim*numTiles(2) - dimI(2);

else

colTileDim = dimI(2)/numTiles(2);

end

%check if tile dimensions are even numbers

rowEven = mod(rowTileDim,2) == 0;

colEven = mod(colTileDim,2) == 0;

if ~rowEven

adRow = adRow+numTiles(1);

end

if ~colEven

adCol = adCol+numTiles(2);

end

adRowre = floor(adRow/2);

adRowost = ceil(adRow/2);

adColre = floor(adCol/2);

adColost = ceil(adCol/2);

I = adarray(I,[adRowre adColre ],'symmetric','re');

I = adarray(I,[adRowost adColost],'symmetric','ost'); %UL corner (Row, Col), LR corner (Row, Col)

noadRect.ulRow = adRowre+1;

noadRect.ulCol = adColre+1;

noadRect.lrRow = adRowre+dimI(1);

noadRect.lrCol = adColre+dimI(2);

end

%redefine this variable to include the adding

dimI = size(I);

%size of the single tile

dimTile = dimI ./ numTiles;

%comute actual cli limit from the normalized value entered by the user

%maximum value of normCliLimit=1 results in standard AHE, i.e. no cliing; %the minimum value minCliLimit would uniformly distribute the image ixels %across the entire histogram, which would result in the lowest ossible

%contrast value

numixInTile = rod(dimTile);

minCliLimit = ceil(numixInTile/numBins);

cliLimit = minCliLimit + round(normCliLimit*(numixInTile-minCliLimit));

%-----------------------------------------------------------------------------

自适应均衡算法研究

自适应均衡算法LMS研究 一、自适应滤波原理与应用 所谓自适应滤波器,就是利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。根据环境的改变,使用自适应算法来改变滤波器的参数和结构。 1.1均衡器的发展及概况 均衡是减少码间串扰的有效措施。均衡器的发展有史已久,二十世纪60年代前,电话信道均衡器的出现克服了数据传输过程中的码间串扰带来的失真影响。但是均衡器要么是固定的,要么其参数的调整是手工进行。1965年,Lucky在均衡问题上提出了迫零准则,自动调整横向滤波器的权系数。1969年,Gerhso和Porkasi,Milier分别独立的提出采用均方误差准则(MSE)。1972年,ungeboekc将LMS算法应用于自适应均衡。1974年,Gedard 在kalmna滤波理论上推导出递推最小均方算法RLS(Recursive least-squares)。LMS类算法和RLS类算法是自适应滤波算法的两个大类。自适应滤波在信道均衡、回波抵消、谱线增强、噪声抑制、天线自适应旁瓣抑制、雷达杂波抵消、相参检测、谱估计、窄带干扰抑制、系统辨识、系统建模、语音信号处理、生物医学、电子学等方面获得广泛的应用。 1.2均衡器种类 均衡技术可分为两类:线性均衡和非线性均衡。这两类的差别主要在于自适应均衡器的输出被用于反馈控制的方法。如果判决输出没有被用于均衡器的反馈逻辑中,那么均衡器是线性的;如果判决输出被用于反馈逻辑中并帮助改变了均衡器的后续输出,那么均衡器是非线性的。

LMS RLS 快速RLS 平方根RLS 梯度RLS LMS RLS 快速RLS 平方根RLS 梯度RLS LMS RLS 快速RLS 平方根RLS 算法图1.1 均衡器的分类 1.3自适应算法LMS算法 LMS算法是由widrow和Hoff于1960年提出来的,是统计梯度算法类的很重 要的成员之一。它具有运算量小,简单,易于实现等优点。 LMS算法是建立在Wiener滤波的基础上发展而来的。Wiener解是在最小均方误差(MMSE)意义下使用均方误差作为代价函数而得到的在最小误差准则下的最优解。因其结构简单、稳定性好,一直是自适应滤波经典有效的算法之一,被广泛应用于雷达、通信、声纳、系统辨识及信号处理等领域。 1.3.1 MSE的含义 LMS 算法的推导以估计误差平方的集平均或时平均(即均方误差,MSE)为基础。下面先介绍MSE的概念。 设计一个均衡系统如下图所示:

数字图像处理实验报告--直方图均衡化

数字图像处理实验报告 实验名称:直方图均衡化 : 班级: 学号: 专业:电子信息工程(2+2) 指导教师:华华 实验日期:2012年5月24日

直方图均衡化 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图均衡化是最常见的间接对比度增强方法。直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度围的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度围的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。 缺点: 1)变换后图像的灰度级减少,某些细节消失; 2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。 这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。 直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数): (1)EQ(f)在0≤f≤L-1围是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。 (2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态围的一致性。 累积分布函数即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。此时的直方图均衡化映射函数为: gk = EQ(fk) = (ni/n) = pf(fi) , (k=0,1,2,……,L-1) 上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出fk到gk的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对

用恒模算法进行盲自适应均衡的MATLAB仿真

用恒模算法进行盲自适应均衡的MATLAB 仿真 一:仿真内容: 1:了解盲均衡算法和CMA 算法的原理; 2:用CMA 算法来仿真4QAM 信号; 二:算法原理: 1:盲均衡算法: 普通的均衡器需要训练和跟踪两个阶段,在训练阶段,需要已知信号的一些特性参数来训练均衡滤波器,或者直接周期地发送训练序列。由于训练序列并不含用户的数据,而占用了信道资源,自然会降低信道的利用率。另外,在跟踪阶段,不发送训练序列,如果信道特性是快速变化的,均衡器的性能将迅速恶化。 盲均衡能够不借助训练序列(即我们通常所说的“盲”,而仅仅利用所接收到的信号序列即可对信道进行均衡。换言之,其本身完全不用训练序列,就可以自启动收敛并防止死锁情况,且能使滤波器的输出与要恢复的输入信号相等。盲均衡从根本上避免了训练序列的使用,收敛范围大,应用范围广,克服了传统自适应均衡的缺点,从而降低了对信道和信号的要求。 盲均衡的原理框图如下: 在上图中,x(n)为系统的发送序列,h(n)为离散时间传输信道的冲激响应,其依据所用调制方式的不同,可以是实值,也可以是复值;n(n)为信道中叠加的高斯噪声;y(n)为经过信道传输后的接收序列,同时也是均衡器的输入序列;w(n)为盲均衡器的冲激响应,盲均衡器一般采用有限长横向滤波器,其长度为L; ) (~n x 为盲均衡器的输出信号,也即经过均衡后的恢复序列。 且有下式成立: y(n)=h(n)*x(n)+n(n); )(~n x =w(n)*y(n)=w(n)*h(n)*x(n); 2:Bussgang 算法

Bussgang类盲均衡算法作为盲均衡算法的一个分支,是在原来需要训练序列的传统自适应均衡算法基础上发展起来的。早期的盲均衡器以横向滤波器为基本结构,利用信号的物理特征选择合适的代价函数和误差控制函数来调节均衡器的权系数。这类算法是以一种迭代方式进行盲均衡,并在均衡器的输出端对数据进行非线性变换,当算法以平均值达到收敛时,被均衡的序列表现为Bussgang 统计量。因此,此类算法称为Bussgang类盲均衡算法。 Bussgang类盲均衡算法的显著特点是算法思路保持了传统自适应均衡的简单性,物理概念清楚,没有增加计算复杂度,运算量较小,便于实时实现。缺点是算法的收敛时间较长,收敛后剩余误差较大,没有解决均衡过程中局部收敛问题,对非线性信道或存在零点的信道均衡效果不佳。 Bussgang类算法的原理框图如下: Godard是其中性能最好的算法:a.代价函数的推导只与接收信号的幅值有关,与相位无关,因此对载波相位偏移不敏感;b.在稳态条件下,此算法能获得比其它算法小的均方误差;c.它能均衡一色散信道,即使起始眼图是关闭的。Godard最早提出了恒模盲均衡算法。恒模盲均衡算法适用于所有具有恒定包络(简称恒模)的发射信号的均衡,它是Bussgang算法的一个特例。 3:CMA(恒模算法) 现代通信系统中常用的QAM调制方式具有频带利用率高的显著优势,随着电平级数的增加,传输数码率越高,但电平间的间隔减小,码间干扰增加,抗噪性能变差。近年来,研究最多的盲均衡算法是恒模算法(CMA)。CMA算法被广泛用于恒包络信号的均衡,因其计算量小及良好的收敛性能也应用于非恒包络信号的盲均衡,如QAM信号。然而,其初始化之后的收敛效果却不令人满意,存

直方图均衡化及直方图规定化

《数字图像处理》实验 报告(二) 学号:____________ 姓名:__________ 专业:____ 课序号:__________ 计算机科学与技术学院

实验2直方图均衡化 一、实验学时:4学时(本部分占实验成绩的40%) 二、实验目的: 1、理解直方图均衡化的原理及步骤; 2、编程实现图像(灰度或彩色)的直方图均衡化。 三、必须学习和掌握的知识点: 直方图均衡化是一种快速有效且简便的图像空域增强方法,在图像处理中有着非常重要的意义,因此要求掌握。 四、实验题目: 编程实现灰度图像的直方图均衡化处理。要求给出原始图像的直方图、均衡化图像及其直方图和直方图均衡化时所用的灰度级变换曲线图。 五、思考题:(选做,有加分) 实现对灰度图像的直方图规定化处理。 六、实验报告: 请按照要求完成下面报告内容并提交源程序、可执行程序文件和实验结果图像。

1、请详细描述本实验的原理: 1.直方图均衡化概述 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。 直方图均衡化的英文名称是Histogram Equalization. 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。 2基本思想 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。 直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数): (1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。 (2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。 累积分布函数(cumulative distribution function,CDF)即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。此时的直方图均衡化映射函数为: gk = EQ(fk) = (ni/n) = pf(fi) , (k=0,1,2,……,L-1)

数字图像处理试题及参考答案

一、填空题(每题1分,共15分) 1、列举数字图像处理的三个应用领域医学、天文学、军事 1024?,256个灰度级的图像,需要8M bit。 2、存储一幅大小为1024 3、亮度鉴别实验表明,韦伯比越大,则亮度鉴别能力越差。 4、直方图均衡化适用于增强直方图呈尖峰分布的图像。 5、依据图像的保真度,图像压缩可分为无损压缩和有损压缩 6、图像压缩是建立在图像存在编码冗余、像素间冗余、心理视觉冗余三种冗余基础上。 7、对于彩色图像,通常用以区别颜色的特性是色调、饱和度 亮度。 8、对于拉普拉斯算子运算过程中图像出现负值的情况,写出一种标定方法: 二、选择题(每题2分,共20分) 1、采用幂次变换进行灰度变换时,当幂次取大于1时,该变换是针对如下哪一类图像进行增强。(B ) A 图像整体偏暗 B 图像整体偏亮 C图像细节淹没在暗背景中D图像同时存在过亮和过暗背景 2、图像灰度方差说明了图像哪一个属性。(B ) A 平均灰度 B 图像对比度 C 图像整体亮度D图像细节 3、计算机显示器主要采用哪一种彩色模型( A ) A、RGB B、CMY或CMYK C、HSI D、HSV 4、采用模板[-1 1]T主要检测( A )方向的边缘。 A.水平 B.45? C.垂直 D.135? 5、下列算法中属于图象锐化处理的是:( C ) A.低通滤波 B.加权平均法 C.高通滤波 D. 中值滤波 6、维纳滤波器通常用于( C ) A、去噪 B、减小图像动态范围 C、复原图像 D、平滑图像 7、彩色图像增强时, C 处理可以采用RGB彩色模型。 A. 直方图均衡化 B. 同态滤波 C. 加权均值滤波 D. 中值滤波 8、__B__滤波器在对图像复原过程中需要计算噪声功率谱和图像功率谱。 A. 逆滤波 B. 维纳滤波 C. 约束最小二乘滤波 D. 同态滤波 9、高通滤波后的图像通常较暗,为改善这种情况,将高通滤波器的转移函数加上一常数量以便引入 一些低频分量。这样的滤波器叫 B 。 A. 巴特沃斯高通滤波器 B. 高频提升滤波器 C. 高频加强滤波器 D. 理想高通滤波器 10、图象与灰度直方图间的对应关系是 B __ A.一一对应 B.多对一 C.一对多 D.都不 三、判断题(每题1分,共10分) 1、马赫带效应是指图像不同灰度级条带之间在灰度交界处存在的毛边现象。(√)

LMS算法自适应均衡实验

Harbin Institute of Technology 自适应信号处理实验 课程名称:自适应信号处理 设计题目:LMS算法自适应均衡器实验院系:电子与信息工程学院 专业:信息与通信工程 设计者:宋丽君 学号:11S005090 指导教师:邹斌 设计时间:2011.4.10

哈尔滨工业大学 一、实验目的 研究用LMS算法自适应均衡未知失真的线性色散信道。通过本实验加深对LMS算法的理解,并分析特征值扩散度和步长参数对收敛迭代次数的影响。二、实验原理 最小均方算法(LMS算法)是线性自适应滤波算法,包括滤波过程和自适应过程,这两个过程一起工作组成了反馈环。图1给出了自适应横向滤波器的框图。 图1 自适应横向滤波器框图 LMS算法是随机梯度算法中的一员,LMS算法的显著特点是实现简单,同时通过对外部环境的自适应,它可以提供很高的性能。由于LMS算法在计算抽头权值的迭代计算的过程中移走了期望因子,因此抽头权值的计算会受到梯度噪声的影响。但是因为围绕抽头权值起作用的反馈环像低通滤波器,平均时间常数与步长参数μ成反比,所以通过设置较小的μ可以让自适应过程缓慢的进行,这样梯度噪声对抽头权值的影响在很大程度上可以滤除,从而减少失调的影响。LMS算法在一次迭代中需要2M+1次复数乘法和2M次复数加法,计算的复杂度为O(M),M 为自适应滤波器中抽头权值的数目。 LMS算法广泛地应用于自适应控制、雷达、系统辨识及信号处理等领域。主要应用有:处理时变地震数据的自适应反卷积,瞬态频率的测量,正弦干扰的自适应噪声消除,自适应谱线增强,自适应波束形成。

三、 实验内容 在实验中假设所使用的数据是实数,进行研究的系统框图如下图2所示。随机数发生器1产生用来探测信道的测试信号n x ;随机数发生器2用来干扰。信道输出的白噪声源()v n 。这两个随机数发生器是彼此独立的。自适应均衡器用来纠正存在加性白噪声的信道畸变。经过适当延迟,随机数发生器1也提供用做训练序列的自适应均衡器的期望响应。 ) n 图2 自适应均衡实验框图 加到信道输入的随机序列{}n x 由伯努利序列组成,1n x =±,随机变量n x 具有零均值和单位方差。信道的脉冲响应用升余弦表示为: 20.51cos (2)1,2,30n n n h W n π?????+-=? ???=???? ??? 为其他 (1) 其中参数W 控制均衡器抽头输入的相关矩阵的特征值分布()R χ,并且特征值分布随着W 的增大而扩大。随机数发生器2产生的序列n v 具有零均值,方差 20.001v σ=。 均衡器具有11M =个抽头。由于信道的脉冲响应n h 关于2n =对称。那么均衡器的最优抽头权值on w 在5n =对称。因此,信道的输入n x 被延时了257?=+=个样值,以便提供均衡器的期望响应。通过选择匹配横向均衡器中点的合适延时 ?,LMS 算法能够提供信道响应的最小相位分量和非最小相位分量之逆。 实验分为相同的两个部分,用来估计基于LMS 算法的自适应均衡器的响应,

直方图均衡化处理教学内容

实验 1.直方图均衡化程序的原理及步骤 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某灰度区间变成在全部灰度范围内的均匀分布。 直方图均衡化的原理: 直方图均衡化是把原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图,然后按均衡直方图修正原图像,其变换函数取决于图像灰度直方图的累积分布函数。概括地说,就是把一已知灰度概率分布的图像,经过一种变换,使之演变成一幅具有均匀概率分布的新图像。当图像的直方图为一均匀分布时,图像的信息熵最大,此时图像包含的信息量最大,图像看起来更清晰。灰度直方图用各灰度值出现的相对频数(该灰度级的像素数与图像总像素数之比)表示。 直方图表示数字图像中每一灰度级与其出现频数的的统计关系,用横坐标表示灰度级,纵坐标表示频数。直方图就能给出该图像的概貌性描述,例如图像的灰度范围、每个灰度级的频数和灰度的分布、整幅图像的亮度和平均明暗对比度等,由此可得出进一步处理的重要依据。计算每个灰度级出现的概率为: P r (r k )=N k /N k=0,1,2,…,L-1 上式中, P r (r k )表示第k 个灰度级出现的概率,N k 为第 k 个灰度级出现的频数,N 为图像像素总数,L 为图像中可能的灰度级总数。由此可得直方图均衡化变换函数,即图像的灰度累积分布函数Sk 为: 1,...,2,1,0)()(00-====∑∑==L k r P r T s k j N N k j j r k k j 上式中, S k 为归一化灰度级。 这个变换映射称做直方图均衡化或直方图线性化。 直方图均衡化过程如下: (1) 输出原图像; (2) 根据公式P r (r k )=n k /m*n ( k=0,1,2,…,L-1)计算对应灰度级出现的概率, 绘制原图像的直方图。 (3) 计算原图象的灰度级累积分布函数:sk=Σp r (r k ); (4) 取整Sk=round((S1*256)+0.5);将Sk 归一到相近的灰度级,绘制均衡化后的 直方图。 (5) 将每个像素归一化后的灰度值赋给这个像素,画出均衡化后的图像。 2.根据直方图均衡化步骤对输入的原图象进行处理,输出的图像如下图所示。

基于matlab的直方图均衡化

目录 1、引言 (2) 2、直方图基础 (3) 3、直方图均衡化 (3) 3.1 直方图均衡化的概念 (3) 3.2 直方图均衡化理论 (4) 3.3 Matlab 实现 (4) 4、结论 (7) 致谢 (7) 参考文献 (7)

图像增强处理 —直方图均衡化的Matlab 实现摘要:为了使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的,通常采用直方图均衡化及直方图规定化两种变换,此文中探讨了直方图的理论基础,直方图均衡化的概念及理论,以Matlab为平台,对某地区遥感TM单波段遥感影像进行直方图均衡化,并给出了具体程序、仿真结果图像、直方图及变换函数。实验结果表明,原来偏暗的且对比度较低的图像经过直方图均衡化后图像的对比度及平均亮度明显提高,直方图均衡化处理能有效改善灰度图像的对比度差和灰度动态范围。 关键词:图像增强直方图均衡化 Matlab 1、引言 图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。 增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法分为两大类:空间域方法和频域方法。“空间域”一词是指图像平面本身,这类方法是以对图像的像素直接处理为基础的。“频域”处理技术是以修改图像的傅氏变换为基础的。 一般说来,原始遥感数据的灰度值范围都比较窄,这个范围通常比显示器的显示范围小的多。增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。本文主要讨论了空间域的直方图均衡化增强,并用Matlab 进行实验验证。 2、直方图基础 1、灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数。确定图像像

直方图均衡化处理

实验1.直方图均衡化程序的原理及步骤 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某灰度区间变成在全部灰度范围内的均匀分布。 直方图均衡化的原理: 直方图均衡化是把原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图,然后按均衡直方图修正原图像,其变换函数取决于图像灰度直方图的累积分布函数。概括地说,就是把一已知灰度概率分布的图像,经过一种变换,使之演变成一幅具有均匀概率分布的新图像。当图像的直方图为一均匀分布时,图像的信息熵最大,此时图像包含的信息量最大,图像看起来更清晰。灰度直方图用各灰度值出现的相对频数(该灰度级的像素数与图像总像素数之比)表示。 直方图表示数字图像中每一灰度级与其出现频数的的统计关系,用横坐标表示灰度级,纵坐标表示频数。直方图就能给出该图像的概貌性描述,例如图像的灰度范围、每个灰度级的频数和灰度的分布、整幅图像的亮度和平均明暗对比度等,由此可得出进一步处理的重要依据。计算每个灰度级出现的概率为: P r(r k)=N k/N k=0,1,2,…,L-1 上式中,P r(r k)表示第k个灰度级出现的概率,N k为第k个灰度级出现的频数,N为图像像素总数,L 为图像中可能的灰度级总数。由此可得直方图均衡化变换函数,即图像的灰度累积分布函数Sk 为:上式中, S k 为归一化灰度级。这个变换映射称做直方图均衡化或直方图线性化。 直方图均衡化过程如下: (1)输出原图像; (2)根据公式P r(r k)=n k/m*n(k=0,1,2,…,L-1)计算对应灰度级出现的概率,绘制原图像的直方图。(3)计算原图象的灰度级累积分布函数:sk=Σp r(r k); (4)取整Sk=round((S1*256)+0.5);将Sk归一到相近的灰度级,绘制均衡化后的直方图。 (5)将每个像素归一化后的灰度值赋给这个像素,画出均衡化后的图像。 2.根据直方图均衡化步骤对输入的原图象进行处理,输出的图像如下图所示。 由上图可以看出,采用直方图均衡化后,可使图像的灰度间距拉开或使灰度均匀分布,从而增大反差,使图像更加清晰,达到增强的目的。但直方图均衡在对灰度呈现两端分布,同时在图像的低灰度区域有较多像素点的图像进行处理后, 得不到满意的效果,达不到突出图像细节的目的。针对上述直方图均衡化的弊端,可以先计算出图像的灰度直方图,然后将其灰度进行拉伸,以便改善图像增强效果。

数字图像处理试题集(终版)

第一章引言 一.填空题 1. 数字图像是用一个数字阵列来表示的图像。数字阵列中的每个数字,表示数字图像的一个最小单位,称为_像素_。 2. 数字图像处理可以理解为两个方面的操作:一是从图像到图像的处理,如图像增强等;二是_从图像到非图像的一种表示_,如图像测量等。 3. 数字图像处理可以理解为两个方面的操作:一是_从图像到图像的处理_,如图像增强等;二是从图像到非图像的一种表示,如图像测量等。 4. 图像可以分为物理图像和虚拟图像两种。其中,采用数学的方法,将由概念形成的物体进行表示的图像是虚拟图像_。 5. 数字图像处理包含很多方面的研究内容。其中,_图像重建_的目的是根据二维平 面图像数据构造出三维物体的图像。 二.简答题 1. 数字图像处理的主要研究内容包含很多方面,请列出并简述其中的5种。 ①图像数字化:将一幅图像以数字的形式表示。主要包括采样和量化两个过程。 ②图像增强:将一幅图像中的有用信息进行增强,同时对其无用信息进行抑制,提高图像的可观察性。 ③图像的几何变换:改变图像的大小或形状。 ④图像变换:通过数学映射的方法,将空域的图像信息转换到频域、时频域等空间上进行分析。 ⑤图像识别与理解:通过对图像中各种不同的物体特征进行定量化描述后,将其所期望获得的目标物进行提取,并且对所提取的目标物进行一定的定量分析。 2. 什么是图像识别与理解? 图像识别与理解是指通过对图像中各种不同的物体特征进行定量化描述后,将其所期望 获得的目标物进行提取,并且对所提取的目标物进行一定的定量分析。比如要从一幅照片上确定是否包含某个犯罪分子的人脸信息,就需要先将照片上的人脸检测出来,进而将检测出来的人脸区域进行分析,确定其是否是该犯罪分子。 4. 简述数字图像处理的至少5种应用。 ①在遥感中,比如土地测绘、气象监测、资源调查、环境污染监测等方面。 ②在医学中,比如B超、CT机等方面。 ③在通信中,比如可视电话、会议电视、传真等方面。 ④在工业生产的质量检测中,比如对食品包装出厂前的质量检查、对机械制品质量的监控和筛选等方面。 ⑤在安全保障、公安方面,比如出入口控制、指纹档案、交通管理等。 5. 简述图像几何变换与图像变换的区别。 ①图像的几何变换:改变图像的大小或形状。比如图像的平移、旋转、放大、缩小等,这些方法在图像配准中使用较多。 ②图像变换:通过数学映射的方法,将空域的图像信息转换到频域、时频域等空间上进行分析。比如傅里叶变换、小波变换等。

基于分块直方图均衡化的图像增强算法及实现

基于分块直方图均衡化的图像增强算法及 实现 (测控) 摘要:针对传统的直方图均衡化算法易导致图像细节信息丢失和噪声放大的特点,本文在直方图均衡化算法的基础上加以改进,将图像的高频分量和低频分量分开进行处理,然后在进行合并,达到去噪的效果,能够在增强图像整体视觉效果的同时较好地保持图像细节,抑制图像噪声。同时,本文又从另一个角度提出了一种基于概率的灰度图像直方图均衡化的改进算法,给出了较合理的变换关系。实验结果表明,该技术能使图像的细节和清晰度得到明显的增强。 关键词:图像增强;直方图均衡;灰度映射 1 引言 在实际应用中,无论采用何种输入装置采集的图像,由于光照、噪声等原因。图像的质量往往不能令人满意。例如,检测对象物的边缘过于模糊;在比较满意的一幅图像上发现多了一些不知来源的黑白或白点;图像的失真,变形等等。所以图像往往需要采取一些手段进行改善以求达到较好的效果。图像增强技术正是在此基础上提出的。图像增强是图像分析与处理的一个重要的预处理过程,其主要有两个目的:意识运用一系列技术手段改善图像的视觉效果,提高图像的清晰度;二是将图像转化成一种更适合于人或计算机惊行分析处理的形式。即改善图像质量是图像增强的根本目的。图像增强的意义一般可以理解为:按需求进行适当的变换,对图像的某些特征,如边缘轮廓、对比度进行强调和锐化,突出某些游泳的信息,去除或消弱无用的信息以便于显示、观察或进一步分析和处理。 图像增强技术是一类基本的图像处理技术,是指由选择地突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,其目的是使处理后的图像更适合于人的视觉特性或机器的识别系统,包括图像的轮廓线或者纹理加强、图像去噪、对比度增强等。因此图像增强处理时图像分析和图像理解的前提和基础。在图像的获取过程中,贴别是对于多媒体监控系统采集的图像,由于监控场景光线照射复杂、拍摄背景也比较复杂等环境因素的影响。加之摄像设备、传感器等因素引入的噪声,使监控图像在一定程度上存在对比度差、灰度分布范围窄、图像分辨率下降。因此,为得到一幅清晰的图像必须进行图像增强处理。传统的图像增强算法通常是基于整幅图像的统计量,这样在计算整幅图像的变换时,图像中的低频信息、高频信息以及含有的噪声,同时进行了变换,因而在增强图像的同时增强了噪声,导致信息量下降,给监控图像的分析和后期处理带来了困难。针对此问题,提出一种新算法。 图像增强处理方法根据图像增强处理所在的空间不同,可分为基于空间域的增强方法和基于频率域的增强方法两类。空间域处理方法是图像像素组成的二维空间直接对每一个像素的灰度值进行处理,它可以使一幅图像内像素点之间的运算处理,也可以是数幅图像间的相应像素点之间的运算处理。频率域处理方法是在图形的变换域对图像进行间接处理。其特点是现将图像进行变换,在空间域对图像作傅里叶变换得到它的频谱按照某种变化模型(如傅里叶变换)变换到频率域,完成图像由空间域变换到频率域,然后在频率域内图像进行低通或高通频率域处理。处理完之后,再将其反变换到空间域。直方图均衡化算法是图像增强空域法中的最常用、最重要

自适应均衡(包括LSM和RLS算法)

自适应均衡实验 1、实验内容和目的 1)通过对RLS 算法的仿真,验证算法的性能,更加深刻的理解算法的理论。 2)分别用RLS 算法和LSM 算法实现图1中的自适应均衡器,比较两种算法的差异,分析比较算法的性能,从而掌握两种算法的应用。 图1 自适应均衡框图 2、基本原理分析 1)LMS 算法原理 LMS 算法一般来说包括两个基本过程:滤波过程和自适应过程。滤波过程来计算线性滤波器的输出及输出结果与期望响应的误差。自适应则是利用误差来自动调节滤波器的参数。LMS 算法也是一个递推的算法。 设()J n 是滤波器在n 时刻产生的均方误差,其梯度计算如下: ()()22n n ?=-+J p Rw 其中R 和p 分别是输入的自相关矩阵和输入与期望输出的互相关矩阵: ()()()?H n n n =R u u

()()()*?n n n =p u d 则梯度向量的瞬态估计为: ()()()()()()*??22H n n n n n n ? =-+J u d u u w 由最速下降算法可以得到抽头向量更新的递推关系式: ()()()()()()*???1H n n n n n n μ??+=+-??w w u d u w 整个LMS 算法归纳总结如下: 参数设置: M=抽头数(滤波器长度) μ=步长参数 m a x 2 0MS μ<< 其中max S 是抽头输入功率谱密度的最大值,而滤波器长度M 为中到大 初始化: 如果知道抽头权向量()n w 的先验知识,则用它来选择()?0w 的合适值,否则令()?00=w 。 更新滤波过程: ()()()?H y n n n =w u ()()()e n d n y n =- ()()()()*??1n n n e n μ+=+w w u 2)RLS 算法原理 RLS 算法是一个递归的过程,递归最小二乘问题的正则方程可用矩阵写为 ()()()?n n n =Φw z 其中n 是可测数据的可变长度,()n Φ更新抽头输入的自相关矩阵,()n z 是抽头 输入与期望响应之间的互相关向量,()?n w 是抽头的权值向量。它们对应的递归更新公式为 ()()()()1H n n n n λ=--ΦΦu u (2.1)

直方图均衡化实验报告

医学图像处理实验报告 实验名称:直方图均衡化实验 姓名:gao jun qiang 学号:20105405 班级:生医1001 指导教师:……

2013年6月5日 一、 实验目的 1、编程实现下列功能:读出存储的黑白灰度图象并显示,显示灰度直方图,对 图象进行直方图均衡化处理,显示处理后图象及直方图,画出灰度变换曲线,并存储处理后图象。 二、 实验原理 直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中 的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化是一种自动调节图象对比度质量的算法,使用的方法是灰度级变换:s = T(r) 。它的基本思想是通过灰度级r 的概率密度函数p(rk ),求出灰度级变换T(r). 灰度直方图的计算十分简单,依据定义在离散形式下有下面的公式成 立: ()1,1,0,-==L k n n k p k Λ (1) 公式中:k n 为图像中出现k s 级灰度的像素数,n 是图像像素总数,而n n k 即为频数。 计算累积直方图各项: ()1 ,1,0,00-===∑∑==L k i p n n t k i k i i k Λ (2) 取整扩展: ]5.0)1int[(+-=k k t L t (3) 映射对应关系 :k t k ?

三、实验代码及结果 直方图均衡化实验代码: clc; close all; clear all; Imag = imread('lena.tiff'); figure() imshow(Imag),title('原图像'); ImagGray = rgb2gray(Imag); figure() imshow(ImagGray),title('灰度图像'); [r,c] = size(ImagGray); %统计灰度直方图 GrayPixNum = zeros(1,255); for i = 1:r for j = 1:c GrayPixNum(1,ImagGray(i,j)) = GrayPixNum(1,ImagGray(i,j))+1; end end %对灰度直方图进行归一化 GrayPixPro = GrayPixNum./(r*c); figure() plot(GrayPixPro),title('图像直方图'); %----------------------------------------------------------- % -----------------------直方图均衡化------------------------ %----------------------------------------------------------- %直方图累加 GrayAdd = zeros(1,255); GrayAdd(1,1) = GrayPixPro(1,1); for i = 2:255 GrayAdd(1,i) = GrayAdd(1,i-1)+GrayPixPro(1,i); end NewGray = round(GrayAdd.*254.+0.5); NewGrayPro = zeros(1,255); for i = 1:255 GrayTemp = NewGray(1,i); NewGrayPro(1,GrayTemp) = NewGrayPro(1,GrayTemp)+GrayPixPro(1,i); end figure()

图像处理实验3(习题教学)

昆明理工大学信息工程与自动化学院学生实验报告 (2016—2017学年第一学期) 课程名称:数字图像基础开课实验室: 2016年月日 年级、专业、班学号姓名成绩 实验项目名称图像增强(1)指导教师 教师评语 该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强□ B.中等□ C.差□ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□ B.一般□ C.没有□ 教师签名: 2016年 11月 16日 一、实验目的及内容 目的:掌握和熟悉Matlab编程环境及语言;掌握直方图统计的算法和用途。 内容: 1.调试教材P25页例 2.1输出类似教材图2.3的结果。 2.调试教材P33页例2.4,编写一个程序,分别使用imhist、bar、stem、plot四种方式 显示一幅灰度图像的直方图 3.调试教材P37页例2.5。 4.直方图均衡化的公式如下所示: 11 ()() k k j k k r j j j n s T r p r n == === ∑∑ 根据上式及课堂所讲直方图均衡化原理及方法,自己写一个Matlab函数实现对灰度图像的直方图均衡化功能(类似于Matlab提供的hist eq函数)。(提示:实现中使用Matlab函数cumsum(P38)可能会使程序简单些)。

二、要求 1.描述直方图的概念并解释直方图均衡化原理。 2.程序结构清晰,运行结果正确。 3.对于第1、2、3小题在实验报告中给出所调试的程序,及其运行结果,对第4小题 描述程序的设计、实现和结果,并对结果进行分析。

直方图均衡化处理

数字图像处理实验报告 姓名: 王程学号: 2012021199037 日期:2013.3.30 一、实验要求 (1)对一幅的对比度灰度图像进行直方图均衡化处理,画出处理前后的图像及直方图(2)用matlab读取和显示 二、实验代码 clc; clear; I=imread('E:\数字图像处理\exp2\伊伽贝拉.jpg'); %读入图像文件 if isrgb(I) I=rgb2gray(I); end subplot(221),imshow(I); title('原图像伊伽贝拉') [m,n]=size(I); %测量图像尺寸参数 B=zeros(1,256); %预创建存放灰度出现概率的向量for i=1:m for j=1:n %k=I(i,j); %k=k+1; %B(k)=B(k)+1; B(I(i,j)+1)=B(I(i,j)+1)+1; %计算每级灰度出现的概率end end subplot(222), stem(0:255,B,'Marker','none'); %绘制直方图 title('未均衡化的直方图'); S=I; [m,n]=size(S); %读出图像的大小 BP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255 BP(k+1)=length(find(S==k))/(m*n); %计算每级灰度出现的概率 end B1=zeros(1,256) for i=1:256 for j=1:i B1(i)=BP(j)+B1(i); end

end B2=round((B1*256)+0.5); for i=1:256 BPeq(i)=sum(BP(find(B2==i))); end I=S; for i=0:255; I(find(S==i))=B2(i+1); %将各个像素归一化后的灰度值赋 给这个像素 end subplot(223), imshow(I); %显示均衡化后的图像 title('均衡化后的图像'); subplot(224), imhist(I); %利用系统函数进行直方图计算 title('均衡化后的直方图'); 三、 实验结果截图并做分析 原图像伊伽贝拉 0100200 300 1234x 104 未均衡化的直方图 均衡化后的图像 02000 4000 均衡化后的直方图 100 200 分析: 从上面各个图中可以看出在原图像中的一些看不到或看不清楚的细节在均衡化后可以

遥感数字图像处理习题与答案

《遥感数字图像处理》习题与答案 第一部分 1.什么是图像并说明遥感图像与遥感数字图像的区别。 答:图像(image)是对客观对象的一种相似性的描述或写真。图像包含了这个客观对象的信息。是人们最主要的信息源。 按图像的明暗程度和空间坐标的连续性划分,图像可分为模拟图像和数字图像。模拟图像(又称光学图像)是指空间坐标和明暗程度都连续变化的、计算机无法直接处理的图像,它属于可见图像。数字图像是指被计算机储存,处理和使用的图像,是一种空间坐标和灰度都不连续的、用离散数字表示的图像,它属于不可见图像。 2.怎样获取遥感图像 答:遥感图像的获取是通过遥感平台搭载的传感器成像来获取的。根据传感器基本构造和成像原理不同。大致可分为摄影成像、扫描成像和雷达成像三类。 m= 3.说明遥感模拟图像数字化的过程。灰度等级一般都取2m(m是正整数),说明8时的灰度情况。 答:遥感模拟图像数字化包括采样和量化两个过程。 ①采样:将空间上连续的图像变换成离散点的操作称为采样。空间采样可以将模拟图像具有的连续灰度(或色彩)信息转换成为每行有N个像元、每列有M个像元的数字图像。 ②量化:遥感模拟图像经离散采样后,可得到有M×N个像元点组合表示的图像,但其灰度(或色彩)仍是连续的,不能用计算机处理。应进一步离散、归并到各个区间,分别用有限个整数来表示,称为量化。 m=时,则得256个灰度级。若一幅遥感数字图像的量化灰度级数g=256级,则灰当8 度级别有256个。用0—255的整数表示。这里0表示黑,255表示白,其他值居中渐变。由于8bit就能表示灰度图像像元的灰度值,因此称8bit量化。彩色图像可采用24bit量化,分别给红,绿,蓝三原色8bit,每个颜色层面数据为0—255级。 4.什么是遥感数字图像处理它包括那些内容 答:利用计算机对遥感数字图像进行一系列的操作,以求达到预期结果的技术,称作遥感数字图像处理。 其内容有: ①图像转换。包括模数(A/D)转换和数模(D/A)转换。图像转换的另一种含义是为使图像处理问题简化或有利于图像特征提取等目的而实施的图像变换工作,如二维傅里叶变换、沃尔什-哈达玛变换、哈尔变换、离散余弦变换和小波变换等。 ②数字图像校正。主要包括辐射校正和几何校正两种。 ③数字图像增强。采用一系列技术改善图像的视觉效果,提高图像的清晰度、对比度,突出所需信息的工作称为图像增强。图像增强处理不是以图像保真度为原则,而是设法有选择地突出便于人或机器分析某些感兴趣的信息,抑制一些无用的信息,以提高图像的使用价值。 ④多源信息复合(融合)。 ⑤遥感数字图像计算机解译处理。

直方图均衡化图像增强与彩色图像处理算法分析

直方图均衡化图像增强与彩色图像处理算法分析 2012.05.29

目录 1. 前言 (1) 2. 理论分析 (2) 2.1 直方图修正技术的基础 (2) 2.2 直方图的均衡化 (3) 2.3 直方图均衡化的算法步骤 (4) 3. 仿真实验与结果 (6) 3.1直方图均衡化Matlab程序 (6) 3.2 彩色图形处理Matlab程序 (8) 3.3 直方图均衡化仿真结果: (10) 3.4 彩色图像处理仿真结果: (13) 4. 结论 (14) 参考文献 (15)

1. 前言 在实际应用中,无论采用何种输入装置采集的图像,由于光照、噪声等原因,图像的质量往往不能令人满意。例如,检测对象物的边缘过于模糊;在比较满意的一幅图像上发现多了一些不知来源的黑点或白点;图像的失真、变形等等。所以图像往往需要采取一些手段进行改善以求达到较好的效果。图像增强技术正是在此基础上提出的。图像增强是图像分析与处理的一个重要的预处理过程,其主要有两个目的:一是运用一系列技术手段改善图像的视觉效果,提高图像的清晰度;二是将图像转化成一种更适合于人或计算机进行分析处理的形式。即改善图像质量是图像增强的根本目的。图像增强的意义一般可以理解为:按需要进行适当的变换,对图像的某些特征,如边缘、轮廓、对比度进行强调或锐化,突出某些有用的信息,去除或削弱无用的信息以便于显示、观察或进一步分析和处理。 图像增强技术是一类基本的图像处理技术,是指有选择地突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,其目的是使处理后的图像更适合于人的视觉特性或机器的识别系统,包括图像的轮廓线或者纹理加强、图像去噪、对比度增强等。因此图像增强处理是图像分析和图像理解的前提和基础。在图像的获取过程中,特别是对于多媒体监控系统采集的图像,由于监控场景光线照射复杂、拍摄背景也比较复杂等环境因素的影响。加之摄像设备、传感器等因素引入的噪声,使监控图像在一定程度上存在对比度差、灰度分布范围窄、图像分辨率下降。因此,为得到一幅清晰的图像必须进行增强处理。传统的图像增强算法通常是基于整幅图像的统计量,这样在计算整幅图像的变换时,图像中的低频信息、高频信息以及含有的噪声,同时进行了变换,因而在增强图像的同时增强了噪声,导致信息熵下降,给监控图像的分析和后期处理带来了困难。针对此问题,提出一种新算法。 图像增强处理方法根据图像增强处理所在的空间不同,可分为基于空间域的增强方法和基于频率域的增强方法两类。空间域处理方法是在图像像素组成的二维空间里直接对每一个像素的灰度值进行处理,它可以是一幅图像内像素点之间的运算处理,也可以是数幅图像间的相应像素点之间的运算处理。频率域处理方法是在图形的变换域对图像进行间接处理。其特点是先将图像进行变换,在空间域对图像作傅里叶变换得到它的频谱按照某种变化模型(如傅里叶变换)变换到频率域,完成图像由空间域变换到频率域,然后在频率域内对图像进行低通或高通频率域滤波处理。处理完之后,再将其反变换到空间域。 直方图均衡化算法是图像增强空域法中的最常用、最重要的算法之一。它以概率理论作基础,运用灰度点运算来实现直方图的变换,从而达到图像增强的目的。本文介绍一种基于累积分布函数变换法为基础的直方图修正法。它可以通过对直方图进行均匀化修正,可使图像的灰度间距增大或灰度均匀分布、增大反差,是图像的细节变得清晰。

相关文档
相关文档 最新文档