matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)

转自 http://www.cnblogs.com/tiandsp/archive/2012/01/07/2316006.html  感谢Dsp tian

clear
clc;
img = imread(‘124.jpg‘);     % Read image from graphics file
[m n t] = size(img);            % 获取图型大小  
max = 0;
min = 256;
avg = 0;
for i =1:1:m
    for j = 1:1:n
        if img(i,j)<min
            min = img(i,j);
        end
        if img(i,j) >max
            max = img(i,j);
        end
      avg = avg +double(img(i, j));
    end
end
avg = uint8(avg/(m*n));
m
n
t
max
min
avg

在Matlab中如何读出、写入图像文件以及对图像进行简单处理

Matlab图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。MATLAB直接公图像文件中读取的图像为RGB图像,它存储在三维数组中,这个三维数组有三个面,依次对应红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值,面中的元素对应于图像中的像素点。设所得矩阵为A三维矩阵(256,256,3),A(:,:,1)代表红颜色的2维矩阵,A(:,:,2)代表绿颜色的2维矩阵,A(:,:,3)代表蓝颜色的2维矩阵。

imread -图像读取指令

imshow - 图像显示指令

rgb2ind  - RGB格式图像变为索引格式

im2bw   -  索引格式变为二值图像格式

ind2gray - 索引格式变为灰度格式

时间: 2024-10-13 09:59:46

matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)的相关文章

MATLAB图像处理_统计最大/最小/平均灰度

需求: 求图像的最大灰度.最小灰度.以及平均灰度. 代码如下: % BY SCOTT % Count max gray and min gray clear all; clc; rgb = imread('test.jpg'); gray = rgb2gray(rgb); [m,n] = size(gray); max = 0; min = 255; sum = 0; avg = 0; for i=1:1:m for j=1:1:n if (gray(i,j) > max) max = gray

matlab练习程序(旋转、径向模糊)

还记得过去写过径向模糊,不过当时效果似乎不好. 这次效果还可以,程序中用的算法是: 1.求当前处理点和图像中心点之间的距离r与角度ang; 2.通过对r的修改得到径向模糊. 3.通过对ang的修改得到旋转模糊. 一看代码就能全部明白,不仔细解释了. 原图如下: 处理后效果: matlab代码如下: clear all;close all;clc img=imread('lena.jpg'); [h w]=size(img); imshow(img) imgn=zeros(h,w); for y=

(转)matlab练习程序(HOG方向梯度直方图)

matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测. 算法流程图如下(这篇论文上的): 下面我再结合自己的程序,表述一遍吧: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率. 3.

求取圆形区域内的平均灰度值

#include <cmath> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; const int kvalue = 15;//双边滤波邻域大小 const double PI = 3.14;//圆周率 int graylevel(Mat image, Mat dst, Point cen, int r)//求取圆形区域内的平均灰度值 { int graysum = 0, n = 0;

matlab练习程序(生成黑白网格)

提供了两种生成方法,一个是自己编程实现,比较灵活:另一个是调用系统的checkerboard函数,似乎只能生成8*8网格. 至于用途,也许可以用来下国际象棋. 自己函数生成: 系统函数生成: 代码如下: clear all;close all;clc h=256; w=256; n=8; img=zeros(h,w); flag=1; for y=1:h for x=1:w if flag>0 img(y,x)=255; end if mod(x,int8(w/n))==0 flag=-flag

HDU 4738——Caocao&#39;s Bridges——————【求割边/桥的最小权值】

Caocao's Bridges Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4738 Description Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't give up. Caocao's army st

(016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)

给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树. 由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; TreeNode* leftChild; TreeNode* rightChild; }; void newNode(TreeNode*& vNode, int vData) { vNode = new TreeNode; vNode->data = vData; vNode->leftChi

c语言:3*4的矩阵,编程序求出其中最大的那个元素的值,以及其所在的行号和列号。(打擂台算法)

有一个3*4的矩阵,要求编程序求出其中最大的那个元素的值,以及其所在的行号和列号.(打擂台算法) 解:程序: #include<stdio.h> int main() { int i, j, row = 0, colum = 0, max; int a[3][4] = { { 1,2,3,4 },{ 4,5,6,7 },{-1,3,-5,10} }; max = a[0][0]; printf("array a:\n"); for (i = 0; i <= 2; i+

44.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号

//1.建立二维数组 //2.运用循环,将内容输入到数组中 //3.求出最大元素,并输出行号和列号 #include<iostream> using namespace std; int main() { int a[3][4]; int Max=0;//赋值之前需要先置为0 cout<<"please input 12 numbers: "<<endl; for(int i=0;i<3;i++)//嵌套循环,用于向二维数组中输入内容 { fo

matlab中如何求某一个矩阵的标准差和均值

方法: 先reshape成行向量或者列向量 然后,利用mean函数,std函数. 构造测试数据,可以利用random函数,就好.利用这个函数,可以构造不同分布的随机数列(或 矩阵). 如: >> y =random('norm',2,0.3,3,4) y = 2.1391 2.2945 2.0769 2.1751 1.9334 1.6805 1.9315 1.8912 1.8775 1.8126 1.9733 1.7686 >> rows = reshape(y,3*4,1) ro