传统图像处理算法(1):图像简介

一、图像简史

  • 图像是一种视觉语言
  • 图像类型
    (1)模拟图像:通过某种物理量的强弱来记录图像亮度信息
    (2)数字图像:二维图像用离散数字数值像素的表示

二、数字图像基础

  • 像素:包含位置和颜色信息的最小单元

  • 分辨率:每英寸的像素数

  • 直方图
    (1)亮度直方图
    (2)彩色直方图

  • 图像主体与背景

  • 边缘:亮度对比度大的位置

  • 颜色,色调
    (1)RGB
    (2)HSV

  • 对比度

  • 清晰度:边缘附近的敏感度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于传统图像处理算法的 Python 代码,实现灰度图像的分类: ``` python import os import cv2 import numpy as np # 定义图像路径和分类标签 image_dir = 'path/to/image/directory' categories = ['cat', 'dog'] # 定义图像大小和像素阈值 image_size = 50 threshold = 100 # 加载图像数据 def load_data(): data = [] for category in categories: path = os.path.join(image_dir, category) label = categories.index(category) for img in os.listdir(path): img_path = os.path.join(path, img) try: # 转换为灰度图并调整大小 gray_img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) resized_img = cv2.resize(gray_img, (image_size, image_size)) # 二值化处理 _, thresh_img = cv2.threshold(resized_img, threshold, 255, cv2.THRESH_BINARY) # 将图像数据和标签添加到列表中 data.append([np.array(thresh_img), label]) except Exception as e: pass return data # 定义特征提取函数 def extract_features(img): # 计算图像的平均灰度值 mean_gray = np.mean(img) # 计算图像的方差值 var_gray = np.var(img) # 计算图像的梯度值 grad_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) grad_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) grad_mag = np.sqrt(grad_x**2 + grad_y**2) mean_grad = np.mean(grad_mag) var_grad = np.var(grad_mag) # 将特征向量返回 return [mean_gray, var_gray, mean_grad, var_grad] # 加载图像数据并进行特征提取 data = load_data() np.random.shuffle(data) X = [] y = [] for features, label in data: X.append(extract_features(features)) y.append(label) # 转换为numpy数组并进行归一化处理 X = np.array(X) X = (X - np.mean(X, axis=0)) / np.std(X, axis=0) y = np.array(y) # 拆分为训练集和测试集 train_size = int(0.8 * len(X)) X_train = X[:train_size] y_train = y[:train_size] X_test = X[train_size:] y_test = y[train_size:] # 定义分类器并进行训练 from sklearn.svm import SVC clf = SVC() clf.fit(X_train, y_train) # 进行预测 def predict(image_path): img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) resized_img = cv2.resize(img, (image_size, image_size)) _, thresh_img = cv2.threshold(resized_img, threshold, 255, cv2.THRESH_BINARY) features = extract_features(thresh_img) X = np.array(features).reshape(1, -1) X = (X - np.mean(X_train, axis=0)) / np.std(X_train, axis=0) prediction = clf.predict(X) return categories[prediction[0]] # 测试预测函数 print(predict('path/to/test/image')) ``` 这段代码中,我们首先定义了图像路径和分类标签,然后通过 `load_data()` 函数加载图像数据,并将图像数据进行灰度化、大小调整、二值化等处理,最终将图像数据和标签添加到列表中。然后,我们定义了一个特征提取函数 `extract_features()`,该函数计算图像的平均灰度值、方差值、梯度值等特征,并将特征向量返回。接着,我们对图像数据进行特征提取,并将特征向量进行归一化处理。然后,我们将数据随机拆分为训练集和测试集,并使用支持向量机分类器进行训练。最后,我们定义了一个预测函数 `predict()`,将图像进行预处理并进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值