文档章节

图像处理技术课第二次试验(2)——图像的规定化处理_0

天蚕宝衣
 天蚕宝衣
发布于 2017/03/23 11:23
字数 462
阅读 9
收藏 0

直方图匹配或叫做直方图规定化都可以,是把原图像的直方图按照给定的直方图加以映射,使新图像的直方图的分布类似于给定的函数。

  总共有以下几步:

  1.求给定的函数的累积直方图s。

  2.求原图像的累积直方图G。

  3.求s中每一个值在G中距离最小的位置index。

  4.求原图像每个像素通过index映射到的新像素的值。

代码如下:

复制代码

clear all;
close all;
clc;

r=127;                              
x=-r:r+1;
sigma=20;
y1=exp(-((x-80).^2)/(2*sigma^2));
y2=exp(-((x+80).^2)/(2*sigma^2));
y=y1+y2;                        %双峰高斯函数,任意函数都可以

%im=imread('bg.bmp');  %匹配一个图像的直方图
%y=imhist(im);
y=y/sum(y);         %归一化,使函数符合概率分布的sum(y)==1这样一个规律
plot(y);            %待匹配的直方图

G=[];               %函数的累积直方图
for i=1:256
   G=[G sum(y(1:i))]; 
end

img=imread('lena.jpg');
[m n]=size(img);
hist=imhist(img);       %待处理图像的直方图
p=hist/(m*n);           
figure;plot(p)          %原图直方图

s=[];                   %待处理图像的累积直方图
for i=1:256
    s=[s sum(p(1:i))];
end

for i=1:256
    tmp{i}=G-s(i);
    tmp{i}=abs(tmp{i});         %因为要找距离最近的点,所以取绝对值
    [a index(i)]=min(tmp{i});   %找到两个累积直方图距离最近的点
end

imgn=zeros(m,n);
for i=1:m
   for j=1:n
      imgn(i,j)=index(img(i,j)+1)-1;    %由原图的灰度通过索引映射到新的灰度
   end
end

imgn=uint8(imgn);
figure;imshow(imgn)
figure;plot(imhist(imgn))       %新图的直方图

复制代码

效果如下:

给定的直方图

原图

原图直方图

变换后的直方图

最后的结果

本文转载自:http://www.cnblogs.com/tiandsp/archive/2012/12/19/2825418.html

共有 人打赏支持
天蚕宝衣
粉丝 20
博文 239
码字总数 179054
作品 0
天津
【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑、高斯平滑、...

Eastmount
2015/06/08
0
0
[Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/82454335 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
09/06
0
0
我如何用57行代码复刻一个8600万美元的项目

摘要:利用现有的开源技术就可以将工作做得更好,外国一技术牛人利用现有的开源技术成功用57行代码完成了维多利亚警方耗资8600万美元的项目。 本文由jshhcdxs 在众成翻译平台上翻译。 当使用...

众成翻译
2017/12/21
0
0
Metal图像处理——直方图均衡化

前言 Metal入门教程总结 正文 核心思路 首先,我们用直方图来表示一张图像:横坐标代表的是颜色值,纵坐标代表的是该颜色值在图像中出现次数。 如图,对于某些图像,可能出现颜色值集中分布在...

落影loyinglin
08/31
0
0
[Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/82216380 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash重定向详解

Bash重定向详解 Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输...

小陶小陶
今天
3
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
14
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
4
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部