直方图均衡化(matlab实现)
来源:互联网 发布:100本网络禁书下载 编辑:程序博客网 时间:2024/05/16 19:22
对图像(灰度图)进行直方图均衡化主要有一下几个步骤:
1、计算各个灰度值(0-255)出现的次数
2、计算各个灰度值的累积分布率
2、根据累积分布率计算出原来各灰度值的均衡化之后的新的值
%This file is to implement histogram equlizationoriginalImage = imread('tire.tif');%这个TIFF图像是四维的(M*N*4),需要转换成灰度图%先取出TIFF图像的前三维数据(丢弃第四维)并将其合成RGB图像R = originalImage(:,:,1);G = originalImage(:,:,2);B = originalImage(:,:,3);rgbImage = cat(3,R,G,B);grayImage = rgb2gray(rgbImage);%显示图像figure,imshow(grayImage);title('Original Image');%计算图像的像素个数numOfPixels = size(grayImage,1) * size(grayImage,2);frequency = zeros(256,1);%用于统计各个灰度出现的次数probability = zeros(256,1);%计算出现的可能性for i=1:size(grayImage,1) for j=1:size(grayImage,2) value = grayImage(i,j); frequency(value+1) = frequency(value+1) + 1; probability(value+1) = frequency(value+1) / numOfPixels; endendcum = zeros(256,1);%记录各个像素值的累积分布probc = zeros(256,1);%记录各个像素值的累积分布的可能性output = zeros(256,1);%与那图像中各个灰度值的均衡化之后的值sum = 0;numOfBins = 255;for i=1:size(probability) sum = sum + frequency(i); cum(i) = sum; probc(i) = cum(i) / numOfPixels; output(i) = round(probc(i) * numOfBins);endHEImage = uint8(zeros(size(grayImage,1),size(grayImage,2)));%均衡化后的图像for i=1:size(grayImage,1) for j=1:size(grayImage,2) HEImage(i,j) = output(grayImage(i,j)+1); endendfigure,imshow(HEImage);title('Histogram Equalization');
结果:
- 直方图均衡化(matlab实现)
- 直方图均衡化matlab实现(续)
- 直方图均衡化的MATLAB的实现(2)
- 直方图均衡化的matlab实现
- 用MATLAB编程实现直方图均衡化
- 直方图均衡化—matlab实现
- 图像直方图均衡化MATLAB实现
- 直方图均衡化—matlab实现
- matlab直方图均衡化
- 【matlab】直方图均衡化
- 直方图均衡化matlab
- 直方图均衡化(matlab)
- matlab 直方图均衡化
- Matlab 直方图均衡化
- [matlab]直方图均衡化
- matlab中图像直方图及其均衡化(含直方图)的实现
- MATLAB 直方图,线性变换,直方图均衡化
- matlab中的直方图均衡化
- 青蛙又回到了井里
- 如何管理小型软件项目
- XML1
- HDU 1076 An Easy Task
- 在Linux下编写Daemon
- 直方图均衡化(matlab实现)
- ORACLE 日常诊断工具
- 解读Android LOG机制的实现:c/c++域使用LOG
- 退出程序时读取0xXXXXXXXXX时发生访问冲突
- XML介绍
- 试试这样想模块结构
- ajax 跨域请求返回200 但是不进success--1
- 嵌入式linux平台的NFS移植
- 使用(ImageMagick+tesseract-ocr)实现图像验证码识别实例