1. 数字图像处理及算术编码(或DCT压缩编码)仿真实现
这些都是很简单的功能,为什么不自己编程试试呢?
风之风信子会帮你解决这一次的问题,谁帮你引导以后的路呢?
%Date: 2011年9月26日20:25:53
%Function: 3*3均值滤波平滑
%Written by 风之风信子
clc;
clear;
clear all;
I=imread('peppers.png');
%这里改成你的路径,
%切记图像不能放在汉字文件夹。
%路径例子:d:\matlab\moon_light_shadow.jpg
J=rgb2gray(I);
%彩色变黑白
imshow(J);
h=(1/9)*[1 1 1;1 1 1;1 1 1];
I2=imfilter(J,h);
%滤波(就是求平均的过程)
figure,imshow(I2);
%%%%直方图均衡化 matlab实现:
clc;
clear all;
I = imread('d:\Image\hill_histogram.jpg');
I=rgb2gray(I);
J = histeq(I);
subplot(221);imshow(I);
subplot(222); imshow(J);
subplot(223); imhist(I,64)
subplot(224); imhist(J,64)
%%%%DCT编码 matlab实现:
R=imread('d:\Image\car.jpg'); %装入原始图像
I=rgb2gray(R); %转换成灰度图像
J=dct2(I); %
colormap(jet(256));
J(abs(J)<100)=0; %将DCT变换值小于10的元素设为0
K=idct2(J);
figure; subplot(121);imshow(I,[0,255]);
title(' original'); %显示原图像
subplot(122);imshow(K,[0,255]);
title('IDCT ');%显示反变
2. MATLAB--数字图像处理 Otsu算法(双阈值)
在数字图像处理中,Otsu算法是一种着名的双阈值分割技术。它的核心思想是通过优化灰度级像素的统计特性来找到最佳的两个阈值,从而实现图像的二值化。具体步骤如下:
首先,算法通过计算每个像素灰度值与其均值u的方差,构建一个关于灰度级的累计分布函数(CDF),并定义一个函数g,其中w0、w1和w2分别对应不同灰度级的概率权重,(u0-u)^2、(u1-u)^2和(w2-u)^2分别代表每个灰度级与均值的方差。目标是找到两个阈值u0和u1,使得g的值最大,这样可以确保分割后的图像具有最佳的类间方差和类内方差。
接着,通过求导并令其等于零,可以找到两个局部最优的阈值。这些阈值将图像像素划分为两个类别,通常一个类别代表前景,另一个代表背景。
一旦阈值确定,就可以使用它们将图像分割成两个部分。这个过程通常在主函数中调用,调用时传入计算出的阈值,图像数据和可能的额外参数。
总的来说,Otsu算法是一种简单而有效的图像二值化方法,它在不需要预先设定阈值的情况下,自动找到最佳的分割点,从而提高图像处理的精度。