【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计

图像处理

1.窗切片处理

应用:对医学数字图像进行切片处理,使所需要观察的部位更加凸显

原始图像:

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第1张图片

第一种切片方式:

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第2张图片

第二种切片方式:

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第3张图片

clear;close all;
Image = im2double(imread('AG.jpg'));  % 将数字图像精度转换至双精度
[h, w] = size(Image);                 % 获取图像大小 即图像的高h,宽w
imshow(Image);title('ACG图像');       % 展示原始图像
NewImagel=zeros(h,w);                   % 根据图像生成矩阵
NewImage2 = Image;                      
a=170/256;b=200/256;c=90/256;d=250/256;         % 初始化设置参数
for x=1:w                                       % 进入循环
    for y=1:h 
        if Image(y,x)=a 则将此像素点值置为d
        end
        if Image(y,x)>c && Image(y,x) < a       % 取参数大于c小于a 范围内的值置零
            NewImage2(y,x)=0;
        end
    end
end
figure; imshow(NewImagel);title('图5-5(a)窗切片图像');
figure; imshow(NewImage2);title('图5-5(b)窗切片图像');

clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响
close:关闭当前的Figure窗口
close all:关闭所有的Figure窗口
clear:清除工作空间的所有变量
clear all:清除工作空间的所有变量,函数,和MEX文件

2.分段线性变换

不同的灰度级变换(分段线性;截断式;高低灰度值保持不变)

clc;clear;close all;
Image = im2double(rgb2gray(imread('lotus.bmp')));   % 通过消除图像色调和饱和度信息同时保留亮度实现将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能 
                                                    % 将读取的图像灰度化并增大精度
[h,w] = size(Image);        % 获取图像尺寸  h:height,高度;w:width 宽度
imshow(Image);title('原始lotus图像');    %  展示灰度图像Image
NewImage1 = zeros(h,w);      %  生成 h行 w 列的二维矩阵
NewImage2 = zeros(h,w);       
NewImage3 = Image;           
a = 30/256;b = 100/256;c= 75/256;d= 200/256;            
for x = 1 : w               % 最外层循环 宽度
    for y = 1 : h           % 内层循环   高度
        if Image(y,x)a&& Image(y,x)

3.直方图均衡化

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第4张图片

图像直方图与均衡化后图像直方图对比

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第5张图片

clear;close all;
Image = rgb2gray(imread('couple.bmp'));   % 读取灰度化图像
histgram = imhist(Image);                  % 直接调用函数 imhist(I,N): 统计并显示图像I的直方图,N为灰度级,默认256
[h,w] = size(Image);
NewImage = zeros(h,w);                    % 根据图像尺寸生成
s = zeros(256); s(1) = histgram(1);       % s:256x256双精度矩阵;  初始化s(1)
for t = 2:256                             
    s(t) = s(t-1)+histgram(t);            % 获取灰度值的累积分布 
end
for x = 1:w
    for y = 1:h
        NewImage(y,x) = s(Image(y,x)+1)/(w*h);   %利用直方图计算新的图像灰度级  频率
    end
end
figure;imshow(Image);title('couple灰度图像');
figure;imhist(Image);title('couple灰度图像的直方图');
axis tight;
figure;imshow(NewImage);title('直方图均衡化处理后图像');
figure;imhist(NewImage);title('直方图均衡化处理后图像的直方图');
axis tight;


%matlab 提供了直方图均衡化函数
%J = histeq(I,N)
%对图形I进行均衡化处理,N为输出图像的灰度级数
% clc,clear,close all;
% Image = imread('couple.bmp');
% NewImage = histeq(Image,64);
% subplot(121),imshow(Image);
% subplot(122),imshow(NewImage);

4.图像直方图统计

直方图统计过程:通过循环统计图像每一个像素点值,得到(0,256)范围每一个值的个数,生成直方图

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第6张图片

clc;clear;close all;
Image = rgb2gray(imread('couple.bmp'));     % 读取灰度化图像
histgram = zeros(256);                      % 生成矩阵 256x256
[h , w] = size(Image);                      %  获取图像尺寸
for x = 1 : w
    for y = 1 : h
        histgram(Image(y,x)+1) = histgram(Image(y,x)+1)+1;    %  在循环中统计并累加
    end
end
imshow(Image);title('couple灰度图像');
figure;stem(histgram(),'.');   % stem(Y) %绘制直方图高度为Y值
                              %stem(X,Y)%在位置X处绘制直方图
                              % stem(_,‘fill’)%fill表示填充图形中的小圆圈  ‘.’则无填充
axis tight;                    % axis tight 是设置坐标轴显示范围为紧凑型
% 也可以直接调用函数 imhist(I,N): 统计并显示图像I的直方图,N为灰度级,默认256
% imhist(X,MAP):统计并显示索引图像的直方图,MAP为调色板;
% [COUNTS,X] = imhist(...):返回直方图数据向量COUNTS和相应的色彩向量X
% 程序如下:
% Image = reg2gray(imread('couple.bmp'));
% figure;imhist(Image);
% axis tight;

可查看生成矩阵更容易理解

【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第7张图片
【matlab 图像处理】 窗切片处理&分段线性变换&直方图均衡化&直方图统计_第8张图片

你可能感兴趣的:(图像处理matlab,matlab,图像处理)