PointOperation04_Matlab灰度gray图intensity windowing

1 计算原理

一种 clamp 操作,然后将一定范围内的intensity线性拉伸到某个指定区间。
记某像素点的值为p,对各像素点做以下操作:
f ( p ) = { a p < a M p − a b − a a ≤ p ≤ b M p > b f(p)= \begin{cases} a& {p < a}\\ M\dfrac{p - a}{b - a} & {a \leq p \leq b}\\ M& {p > b} \end{cases} f(p)=aMbapaMp<aapbp>b
则将图像window在 [ a , b ] [a, b] [a,b] 内,最大intensity为 M M M .

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");

%% Doing intensity windowing
% Define parameters
a_min = 20;    % a_min <- 0~a_max
a_max = 220;    % a_max <- a_min~255
M = 220;        % intensity


orgIMG = double(orgIMG);

smaller = find(orgIMG <= a_min);
larger = find(orgIMG >= a_max);
middle = find(orgIMG > a_min & orgIMG < a_max);

orgIMG(smaller) = a_min;
orgIMG(larger) = M;
orgIMG(middle) = M.*(orgIMG(middle)-a_min)./(a_max-a_min);

orgIMG = uint8(orgIMG);

%% 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 ] = [ 20 , 220 ] , M = 220 : [a, b] = [20, 220], M = 220: [a,b]=[20,220],M=220:
在这里插入图片描述

4 源码下载

源码下载地址:点击此处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值