matlab raw图像 直方图均衡化 16位图像

前言

如果,如果你要做的是8位图直方图均衡化,别看了。前方左转查查histeq怎么用,挺简单的,另我个新手上路,不会用matlab,所以在这里记录下histeq怎么用,不看往下翻。

8位图 histeq函数

8位tif灰度图像图像

灰度图就很方便了,I是读取到的数组,用histeq将I做均衡化,用I1存储生成的数组,用figure显示出来

I = imread(‘xxx.tif’);
I1 = histeq(I);
figure,imshow(I1,[])

好的这里如果要存储的话,反正是8位的图像嘛,这里就直接用

imwrite(I1,'m.jpeg')

就可以了

8位bmp rgb图像

好的如果是8位的或者不知道多少位的bmp rgb图像的话,如果只是追求这个函数可以使用,那么,可以试试我这个方案

 F=imread('D:\Project\直方图均衡\Pic\1.bmp');
 F1=rgb2gray(F);
 F2 = histeq(F1);
 figure,imshow(F2,[])

其他操作同上

16位 raw文件读取

怎么读取找了半天,不重开一个文章了都记录在这吧
下面两行代码,把从fid读取到的数据存放到b这个数组里,[300,200]是文件大小,注,第一个参数一定要对,第二个无所谓。‘int16’是数据格式,8位的话就int8

fid=fopen('D:\Project\直方图均衡\Pic\0.Raw', 'r');
[b,count]=fread(fid,[300,200],'int16');

好的,另外你应该知道那个‘’单引号内部的是图像路径吧? 还有就是matlab左边的那个路径在的地方,被matlab视为根位置,对放在这个地方的文件不用前面的那一堆,可以直接写文件名,懂吧?

16位图 代码

不知道matlab代码怎么插入,用的lua脚本的格式凑合着看吧

function [img2] = a(img)
    img1 = double(img);
    [r,c] = size(img1);%获取图像的高r和宽c
    %统计图像中每个灰度级i出现的次数存到count(1,i)里
    count = zeros(1,65536);
    for i=1:r
        for j=1:c
            count(1,img(i,j)+1) = count(1,img(i,j)+1)+1;
        end
    end
    %统计图像中每个灰度级i出现的概率,存储到p(1,i)里
    p = zeros(1,65536);
    for i=1:65536
        p(1,i) = count(1,i)/(r*c);
    end
    img2 = im2uint8(ones(r,c));%创建一个r * c大小的1矩阵
    
    func_T = zeros(1,65536);%变换映射存储
    p_sum = 0;
    %求直方图均衡化的变换函数
    for k = 1:65536
        p_sum = p_sum + p(k);%求每个灰度级的概率之和
        func_T(k) = 255*p_sum;%根据变换函数的公式求每一点k对应的映射值
    end
    
    func_T_z =  round(func_T);%对变换函数进行取整,round 为四舍五入取整
    %完成每个像素点的映射
    for i = 0:255
        findi = find(func_T_z==i);%找到灰度级为i的概率和
        len = length(findi);
        for j=1:len
            findj = find(img==(findi(j)-1));%进行对应每个像素点的映射
            img2(findj) = i;
        end
    end
end

不确定有没有bug,觉得有问题的千万指出…把这个保存成a.mat文件放在matlab目录里,就可以直接调用啦,传入数组是刚从raw里读出来的b。

参考:

matlab实现 图像的直方图均衡化处理 直方图均衡化 代码

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

define_mine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值