药材识别基于matlab GUI SVM色差色温判断药材炮制程度系统含Matlab源码 2241期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了药材识别基于matlab GUI SVM色差色温判断药材炮制程度系统含Matlab源码 2241期相关的知识,希望对你有一定的参考价值。

⛄一、SVM色差色温判断药材炮制程度系统简介

本课题来源于"十二五"国家科技支撑计划项目(2012BAI29B11).颜色是中药质量标准中性状评价极为重要的内容,但传统的中药颜色检测大多依靠人的感官评估,人对颜色的辨别是一个非常复杂的过程,受到光学,视觉生理,视觉心理等诸多因素影响,不同人对同一种颜色可能给出不同的感官评价,即使同一个人在不同时间,不同环境下也可能给同一种颜色以不同的感官评价.本课题引入机器视觉技术和SVM算法,自制机器视觉系统,建立一种快速,灵敏和定量的颜色评价方法来实现中药的颜色评价,并进行相应的方法学研究.

⛄二、部分源代码

function varargout = untitled01(varargin)
% UNTITLED01 MATLAB code for untitled01.fig
% UNTITLED01, by itself, creates a new UNTITLED01 or raises the existing
% singleton*.
%
% H = UNTITLED01 returns the handle to a new UNTITLED01 or the handle to
% the existing singleton*.
%
% UNTITLED01(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in UNTITLED01.M with the given input arguments.
%
% UNTITLED01(‘Property’,‘Value’,…) creates a new UNTITLED01 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before untitled01_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled01_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help untitled01

% Last Modified by GUIDE v2.5 23-Jul-2021 17:01:46

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @untitled01_OpeningFcn, …
‘gui_OutputFcn’, @untitled01_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin1)
gui_State.gui_Callback = str2func(varargin1);
end

if nargout
[varargout1:nargout] = gui_mainfcn(gui_State, varargin:);
else
gui_mainfcn(gui_State, varargin:);
end
% End initialization code - DO NOT EDIT

% — Executes just before untitled01 is made visible.
function untitled01_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to untitled01 (see VARARGIN)

% Choose default command line output for untitled01
handles.output = hObject;
handles.imgfilename=[];
handles.imgdate=[];
handles.imgoutput=[];
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes untitled01 wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = untitled01_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout1 = handles.output;

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
warning off;
try
[filename, pathname] = uigetfile(‘.jpg;.tif;.png;.gif’,‘All Image Files’;…
.’,‘All Files’ );
ima = imread([ pathname,filename]);
axes(handles.axes1);
a=imshow(ima);

    [filename, pathname] = uigetfile('*.jpg;*.tif;*.png;*.gif','All Image Files';...
        '*.*','All Files' );
    ima2 = imread([ pathname,filename]);  
    axes(handles.axes2);
    b=imshow(ima2);

figure;
subplot(2,2,1),imshow(ima),title(‘原图’); %显示原图
[rows, cols, colors] = size(ima); %size返回向量
pic_gray = zeros(rows, cols); %2维零向量
pic_gray = uint8(pic_gray); %无符号一字节

for i = 1:rows
for j = 1:cols
I(i, j) = ima(i, j, 1)*0.30 + ima(i, j, 2)*0.59 + ima(i, j, 3)*0.11;
end
end
subplot(2,2,2),imshow(I),title(‘平均值灰度化’);

[~,threshold] = edge(I,‘sobel’);
fudgeFactor = 0.7;
BWs = edge(I,‘sobel’,threshold * fudgeFactor);
%subplot(2,2,3),imshow(BWs),title(‘二元梯度掩膜’);%显示生成的二元梯度掩膜
%% 膨胀图像
se90 = strel(‘line’,3,90);
se0 = strel(‘line’,3,0);
BWsdil = imdilate(BWs,[se90 se0]);
%subplot(2,2,4),imshow(BWsdil),title(‘膨胀梯度掩膜’)
%% 填补内部空隙
BWdfill = imfill(BWsdil,‘holes’);
%figure;
%subplot(2,2,1),imshow(BWdfill),title(‘填充后的图像’);
%% 删除边界上的连通对象
BWnobord = imclearborder(BWdfill,4);
%subplot(2,2,2),imshow(BWnobord),title(‘删除边界连通对象’);
%% 平滑处理对象
seD = strel(‘diamond’,1);
BWfinal = imerode(BWnobord,seD);
BWfinal = imerode(BWfinal,seD);
subplot(2,2,3),imshow(BWfinal)
title(‘平滑后的图像’);
%% 求RGB均值
S = sum(sum(BWfinal == 1));%分母
target = find(BWfinal == 0);%确定目标区域
R = ima(:,:,1);
G = ima(:,:,2);
B = ima(:,:,3);

R(target) = 0;
G(target) = 0;
B(target) = 0;
SR = sum(sum®);
SG = sum(sum(G));
SB = sum(sum(B));

AR = SR/S;
AG = SG/S;
AB = SB/S;

%% 第二部分
%
figure;
subplot(2,2,1),imshow(ima2),title(‘原图2’); %显示原图
[rows2, cols2, colors2] = size(ima2);
pic_gray2 = zeros(rows2, cols2);
pic_gray2 = uint8(pic_gray2);

for i2 = 1:rows2
for j2 = 1:cols2
I2(i2, j2) = ima2(i2, j2, 1)*0.30 + ima2(i2, j2, 2)*0.59 + ima2(i2, j2, 3)*0.11;
end
end

⛄三、运行结果




⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]张兴国,刘晓磊,李靖,王环东.BP神经网络下的限速交通标志实时检测识别[J].西安电子科技大学学报. 2018,45(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于药材识别基于matlab GUI SVM色差色温判断药材炮制程度系统含Matlab源码 2241期的主要内容,如果未能解决你的问题,请参考以下文章

手写数字识别基于matlab GUI SVM手写数字识别含Matlab源码 676期

手势识别基于matlab GUI SIFT+SVM算法手势识别含Matlab源码 1789期

情感识别基于matlab GUI SVM语音情感识别(带面板)含Matlab源码 876期

病虫害识别基于matlab GUI SVM病虫害识别系统含Matlab源码 2429期

破损识别基于matlab GUI机器视觉+SVM玉米种子破损识别含Matlab源码 1606期

人脸表情识别基于matlab GUI LBP+SVM脸部动态特征人脸表情识别含Matlab源码 1369期