1 计算原理
对图像各像素点(i, j)做以下运算:
记某像素点的值为p,则:
f
(
p
)
=
{
a
p < a
p
a
≤
p
≤
b
b
p > b
f(p)= \begin{cases} a& \text{p < a}\\ p& {a \leq p \leq b}\\ b& \text{p > b} \end{cases}
f(p)=⎩⎪⎨⎪⎧apbp < aa≤p≤bp > b
则p被clamp在
[
a
,
b
]
[a, b]
[a,b]区间内。
2 代码实现
%% reading in the image
orgIMG = rgb2gray(imread("lena.jpg"));
figure(1);
subplot(1,2,1);
imshow(orgIMG);
title("Original IMG");
subplot(1,2,2);
imhist(orgIMG);
axis([0 255 0 800]);
title("The Histogram of the original img");
%% clamp image
% Define parameters
a_min = 100; % a_min <- 0~a_max
a_max = 200; % a_max <- a_min~255
smaller = find(orgIMG < a_min);
orgIMG(smaller) = a_min;
larger = find(orgIMG > a_max);
orgIMG(larger) = a_max;
%% Draw the new img
figure(2);
subplot(1,2,1);
imshow(orgIMG);
title("Modified IMG");
subplot(1,2,2);
imhist(orgIMG);
axis([0 255 0 800]);
title("The Histogram of the Modified img");
3 效果展示
原图:
[
a
,
b
]
=
[
100
,
200
]
[a, b] = [100, 200]
[a,b]=[100,200]:
4 源码下载
源码下载地址:点击此处