【三】图像的点运算( 三 )

<0) || (max(map(:))>1)msg1 = sprintf('%s: 调色板中各个分量的强度 ',upper(mfilename));msg2 = '应当在0和1之间';eid = sprintf('Images:%s:colormapValsMustBe0to1',mfilename);error(eid,'%s %s',msg1,msg2);endend% 将int16类型的矩阵转换成uint16类型if isa(A,'int16')A = int16touint16(A);end
调用代码
I = imread('coins.png');J1 = imgrayscaling(I,[0.3 0.7],[0.15 0.85]);J2 = imgrayscaling(I,[0.15 0.85],[0.3 0.7]);subplot(1,2,1);imshow(J1,[]);subplot(1,2,2)imshow(J2,[]);
7 直方图均衡化
简单的说就是,把灰度级近似均匀分布在各个像素上 。
中的函数可自动实现该功能 。
实现
I = imread('pout.tif');I = im2double(I);% 对于对比度变大的图像I1 = 2 * I - 55/255;subplot(4,4,1);imshow(I1);subplot(4,4,2);imhist(I1);subplot(4,4,3);imshow(histeq(I1));subplot(4,4,4);imhist(histeq(I1));% 对于对比度变小的图像I2 = 0.5 * I + 55/255;subplot(4,4,5);imshow(I2);subplot(4,4,6);imhist(I2);subplot(4,4,7);imshow(histeq(I2));subplot(4,4,8);imhist(histeq(I2));% 对于线性增加亮度的图像I3 = I + 55/255;subplot(4,4,9);imshow(I3);subplot(4,4,10);imhist(I3);subplot(4,4,11);imshow(histeq(I3));subplot(4,4,12);imhist(histeq(I3));% 对于线性减小亮度的图像I4 = I - 55/255;subplot(4,4,13);imshow(I4);subplot(4,4,14);imhist(I4);subplot(4,4,15);imshow(histeq(I4));subplot(4,4,16);imhist(histeq(I4));
8 直方图规定化
有时需要某种特定的直方图的形状,那么就要有选择地增强或者特定分布等操作了 。
实现
【【三】图像的点运算】I = imread('pout.tif'); %读入原图像I1 = imread('coins.png'); %读入要匹配直方图的图像I2 = imread('circuit.tif'); %读入要匹配直方图的图像% 计算直方图[hgram1, x] = imhist(I1);[hgram2, x] = imhist(I2);% 执行直方图均衡化J1=histeq(I,hgram1);J2=histeq(I,hgram2);% 绘图subplot(2,3,1);imshow(I);title('原图');subplot(2,3,2);imshow(I1); title('标准图1');subplot(2,3,3);imshow(I2); title('标准图2');subplot(2,3,5);imshow(J1); title('规定化到1')subplot(2,3,6);imshow(J2);title('规定化到2');% 绘直方图figure;subplot(2,3,1);imhist(I);title('原图');subplot(2,3,2);imhist(I1); title('标准图1');subplot(2,3,3);imhist(I2); title('标准图2');subplot(2,3,5);imhist(J1); title('规定化到1')subplot(2,3,6);imhist(J2);title('规定化到2');