目录

  1. 设计目的…………………..………………….…………2
  2. 设计要求………………….………………………….….2
  3. 设计的内容………………..……………………….……2
  4. 课题分析…………………………………………….………..3
  5. 总体设计……………….…………………………….……….3
  6. 具体设计……………………………………………..…….…4
    1. 文件……………….………………………………….……….4

6.1.1、打开………..…………………………………….…………4

6.1.2、保存…………………………..………………….…………4

6.1.3、打印…………………………..………………….…………4

6.1.4、退出……………………..……………………………….…4

6.2、直方图统计…………………………..…………………………………4

6.2.1、R直方图………………………..………………….……………4

6.2.2、G直方图………………………..………………….……………4

6.2.3、B直方图…………………………..……………….……………4

6.3、图像增强处里…………………………………..……………………5

6.3.1、直方图均衡化…………………….…………….………………5

6.3.2、对比度展宽………………….…………….…………………6

6.3.3、动态范围调整…………………………….…………………6

6.3.4、空间域平滑算法…………………………….…………………6

6.3.4.1、均值滤波……………………………………………….7

6.3.4.2、中值滤波…………………………………………………7

6.3.4.3、边界保持滤波……………………………………………8

6.4、图像分割………………………………..…………..………………8

6.4.1、均匀性度量法……………………………………………………8

6.4.2、类间最大距离法…………………………………………….9

6.4.3、局部阈值法…………………………………………………..9

6.5、颜色空间转化……………………………………..………..………9

6..5.1、RGB转HSV……………………………………………………10

6.5.2、RGB转HIS…………………………………………………….10

6.6、其他图像处理功能……………………………………………………10

6.6.1、锐化…………………………………………………………….10

6.6.2、傅里叶………………………………………………………….10\\

  1. 程序调试及结果分析………………….……………………11
  2. 心得体会…………………………….………………………11
  3. 参考文献…………………………….………………………11
  4. 附录………………………….………………………………12

一、设计目的

1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

二、设计要求

  1. 要求独立完成设计项目,开发工具为MATLAB,具体自选。各组长有责任督促组员完成任务并提交报告;
  2. 时间为4月28日~6月28日为其两个月的业余时间。

三、设计的内容

学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。

整个系统要完成的基本功能大致如下:

  1. 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;
  2. 数字图像的统计信息功能:直方图的统计及绘制;
  3. 数字图像的增强处理功能:
  4. 直方图的均衡化
  5. 对比度展宽
  6. 动态范围调整
  7. 空间域平滑算法的各种算法(如均值滤波、中值滤波、边界保持的滤波方法等)

4、数字图像由RGB转换成HIS空间并分别显示其分量图。

5、数字图像分割功能:

可采用两种以上方法进行图像分割。

总体设计

由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示:

  1. 具体设计

    1. 文件

6.1.1、打开

为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件。

Uigetfile函数的调用格式为[name,path]=yigetfile(…), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“ name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.image。

6.1.2、保存

同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。

6.1.4、退出

退出比较简单,程序如下所示:

clc;

close all;

close(gcf);

6.1.3、打印

打印功能没能实现,将它设置为不可使用,可用如下代码实现

set(handles.print, 'Enable','off' ); %放在open_callback函数末尾

set(handles.print, 'Enable','off' );%放在two_OpeningFcn中

  1. 直方图统计

6.2.1、R直方图

由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示R直方图像,把三维图像降为二维,且是当最后一个参数为1时是R直方图:

x=imhist(handles.image(:,:,1)); %当然也可以选择(:,:,2) 或(:,:,3)

imshow(y);

处理前后图片效果如下:

6.2.2、G直方图

G直方图与R直方图的程序差不多只需将数值为1的R直方图变成2即可成为G直方图

x=imhist(handles.image(:,:,2));

6.2.3、B直方图

同理可得B直方图

x=imhist(handles.image(:,:,3));

RGB三种直方图统计图如下:

原图 R直方图

G直方图 B直方图

  1. 图像增强处理

6.3.1、直方图均衡化

在balance_Callback回退函数中实现直方图均衡化

每个回退函数中都要获取图片,上面的RGB直方图也一样需获取打开的图片。打开图片的为以下程序代码:

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

直方图均衡化是判断是否为灰度图。用函数isrgb了来判断,不是灰度则将其转化,否则就直接用函数:

histeq(handles.image)% handles.image是获取的图片

来直方图均衡化处理图片

图片前后效果如下:

6.3.2、 对比度展宽

对图像的对比度展宽刻可自己编写算法来处理,同样的,,处理结果如图:

6.3.3、动态范围调整

共图像处理功能未能实现,程序中已给出处理其图像的代码,但有错误,不能找出其错位,将其正确的处理,

原因是:nw=1./(b-a).*(h-a.*ones(sx,sy));

Error:Matrix dimensions must agree

也查过资料修改该语句,有的资料说是乘除和幂方要改成点乘点除,点幂方,这个是合理,但是改正后仍然有错,是在无能为力,

代码在后面将给出,可供参考。

6.3.4、空间域平滑算法

6.3.4.1、均值滤波

经常用到的噪声有两种,高斯噪声,椒盐噪声,可以通过以下两个函数来实现:

y=imnoise(handles.img,'gaussian',p1,p2);%高斯噪声

y=imnoise(x,'salt & pepper',p1); %椒盐噪声

均值滤波中可对高斯滤波,也可以对椒盐滤波,设计过程中采用其一种图片进行处理。但两种处理的效果就不同,对高斯噪声处理的效果更加明显

均值滤波是一种采取平均灰度值的方法进行滤波,用imnoise获得噪声的图片。这个函数可获得高斯噪声,亦可获得椒盐噪声。在采用函数conv2进行均值处理,处理前后的图片比较如下:

6.3.4.2、中值滤波

中值滤波同均值滤波的程序差不多,只是进行滤波的原理不同,则采用不同的函数进行代替,用以下函数可进行中值滤波处理:

I = imnoise(handles.image,'salt & pepper', 0.02);

imshow(I);

j=medfilt2(I);

前后图片效果如下:

6.3.4.3、边界保持滤波

原理不同,采用knn函数是处理边界保持滤波的,程序代码的形式跟前两种滤波差不多:

I = imnoise(handles.image,'salt & pepper', 0.02);

imshow(I);

j=knn2(I);

前后图片效果如下:

  1. 图像分割:

图象分割是按照某些特性(如灰度级,频谱,颜色,纹理等)将图象划分成一些区域,在这些区域内其特性是相同的或者说是均匀的,两个相邻区域彼此特性则是不同的,其间存在着边缘或边界

6.4.1、均匀性度量法

当图像被分为目标物和背景两个类时,属于同一类别的像素值分布方差最小,也即具有均匀性。

给定一初始阈值Th=Th0,将图像分为C1和C2两类

分别计算两类中的方差

分别计算两类在图像中的分布概率

选择最佳阈值 Th=Th*, 将图像分为C1和C2两类,满足

均匀性度量方法的处理结果:

6.4.2、类间最大距离法.

采用最佳阈值分割后,两类之间的差异最大,且差异采用两类中心与阈值间的距离差度量

给定一初始阈值Th=Th0,将图像分为C1和C2两类

分别计算两类的灰度均值

计算相对距离度量值 s

选择最佳阈值 Th=Th*, 将图像分为C1和C2两类

图片效果:

6.4.3、局部阈值法

不均匀照射,物体背景对比明显, 不能只使用一门限

灰度级校正。

图象分成小块,选择局部门限

局部阈值法的处理前后结果:

6.5、 颜色空间转化

6..5.1、RGB转HSV

色彩空间相互转化:

其中有很多种色彩空间,这里只介绍两种转换关系:

RGB转HSV,图像处理中有专门的函数将其进行转化,即rgb2hvs函数

转化图像前后对比如下:

6.5.2、RGB转HIS

首先获取图像的 RGB 3个通道

R=w(:,:,1);
G=w(:,:,2);
B=w(:,:,3);

观察HSI通道图像
因系统没有rgb2hsi函数,只有rgb2hsv函数,可自己编写程序实现算法

,用一个循环处理,分别得到HIS的色度,饱和度以及强度图,代码在后面实现

图形处理效果如下:

6.6、 其他图像处理功能

6.6.1、锐化

6.6.2、傅里叶

这两个是附加的图像处理功能,在次不做过多的说明,可向大家看看处理图像结果进行对比一下,看看效果,可在后面附上代码

锐化. 四种傅里叶变

参考文献

  1. 郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社
  2. 精通matlab6[1].5_(北航_张志涌).pdf

【3】MATLAB 编程 (第二版)

MATLAB Programming for Engineers Second Edition)

Stephen J. Chapman 著 邢树军 郑碧波 译

【4】相关的MATLAB图像处理函数

  1. 附录

function varargout = two(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @two_OpeningFcn, ...

'gui_OutputFcn', @two_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before erzhi is made visible.

function two_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

---------------------------------------------------------

%接下来是菜单的程序

---------------------------------------------------------

function file_Callback(hObject, eventdata, handles)

--------------------------------------------------------

%文件打开程序

function open_Callback(hObject, eventdata, handles)

[name,path]=uigetfile({'*.bmp'},'载入图像');

if isequal(name,0)|isequal(path,0)

errordlg('没有选中文件','出错');

return;

else

x=imread([path,name]);

axes(handles.axes1);

imshow(x);

handles.img=x;

handles.noise_img=x;

guidata(hObject,handles)

end

---------------------------------------------------

function save_Callback(hObject, eventdata, handles)

%文件保存

[filename,pathname] = uiputfile('*.bmp','图片保存为');

if isequal([filename,pathname],[0,0])

errordlg('没有保存','出错');

return;

else

file=strcat(pathname,filename);

(handles.axes2);

i=getimage(gca);

imwrite(i,file);

end

-----------------------------------------------------

function exit_Callback(hObject, eventdata, handles)

clc;

close all;

close(gcf);

---------------------------------------------------------

% 直方图

------------------------------------------------------

function zhf_Callback(hObject, eventdata, handles)

-------------------------------------------------

function red_Callback(hObject, eventdata, handles)

% R直方图

data (see GUIDATA)

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

x=imhist(handles.image(:,:,1));

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);

set(handles.axes2,'xtick',0:50:255); ------------------------------------------------------

function green_Callback(hObject, eventdata, handles)

% G直方图

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

x=imhist(handles.image(:,:,2));

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);

set(handles.axes2,'xtick',0:50:255);

------------------------------------------------------

function blue_Callback(hObject, eventdata, handles)

% B直方图

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

%if isrgb(handles.img)

x=imhist(handles.image(:,:,3));

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);

set(handles.axes2,'xtick',0:50:255);

-----------------------------------------------------

%图像增强处理

---------------------------------------------------------

function zhf_Callback(hObject, eventdata, handles)

-------------------------------------------------

function balance_Callback(hObject, eventdata, handles)

%直方图均衡化

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

if isrgb(handles.image)

a=histeq(handles.image(:,:,1));

b=histeq(handles.image(:,:,2));

c=histeq(handles.image(:,:,3));

k(:,:,1)=a;

k(:,:,2)=b;

k(:,:,3)=c;

imshow(k);

else

h=histeq(handles.image);

imshow(h);

end

function zq_Callback(hObject, eventdata, handles)

-----------------------------------------------------------------

function duibidu_Callback(hObject, eventdata, handles)

%对比度展宽

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

h=im2double(handles.image);

[sx,sy]=size(h);

nw=h.^0.3;

subplot(2,2,1);

imshow(h);

title('original');

subplot(2,2,2);

imshow(nw);

title('r=0.4');

subplot(2,2,3);

imshow(h.^0.5);

title('r=0.7');

subplot(2,2,4);

imshow(h.^2);

title('r=3');

--------------------------------------------------------------------

function dongtai_Callback(hObject, eventdata, handles)

%动态调整范围

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

h=im2double(handles.image);

a=0.01;

b=0.35;

[sx,sy]=size(h);

[w,n]=find(h(:)<=a);

h(n)=0;

[w1,n1]=find(h(:)>b);

h(n1)=1;

nw=1./(b-a).*(h-a.*ones(sx,sy));

subplot(1,2,1);

imshow(h);

subplot(1,2,2);

imshow(nw);

-----------------------------------------------------------------

%空间域平滑算法

function pinghua_Callback(hObject, eventdata, handles)

-----------------------------------------------------------------

function junzhi_Callback(hObject, eventdata, handles)

%均值滤波

h=[1 1 1;1 1 1;1 1 1];

h=h/9;

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

x=imnoise(handles.image,'gaussian',0,0.02);

imshow(x);

j=conv2(x,h);

figure,imshow(j,[]);

--------------------------------------------------------------------

function zhongzhi_Callback(hObject, eventdata, handles)

%中值滤波

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

% I=imnoise(I,'gaussian',0,0.02);

I = imnoise(handles.image,'salt & pepper', 0.02);%

j=medfilt2(I);

figure,imshow(j,[]);

--------------------------------------------------------------------

function bianjie_Callback(hObject, eventdata, handles)

% 边界保持滤波

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

% I=imnoise(I,'gaussian',0,0.02);

I = imnoise(handles.image,'salt & pepper', 0.02);

imshow(I);

j=knn2(I);

figure,imshow(j,[]);

-----------------------------------------------------------------

--------------------------------------------------------------------

function junyunxing_Callback(hObject, eventdata, handles)

%均与性度量法

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

v=double(handles.image);

[sx,sy]=size(v);

num=sx*sy;

t=[];

for th=6:254

[r1,c1]=find(v(:)>=th);

[r2,c2]=find(v(:)<th);

if(length(r1)~=0 & length(c1)~=0 )

L1=v(r1);

else

L1=[];

end

if(length(r2)~=0 & length(c2)~=0 )

L2=v(r2);

else

L2=[];

end

m1=mean(L1(:)); m2=mean(L2(:));

Var1=sum((L1(:)-m1).^2);Var2=sum((L2(:)-m2).^2);

Var1=var(L1(:));Var2=var(L2(:));

P1=length(L1(:))/num;

P2=length(L2(:))/num;

t=[t,P1*Var1+P2*Var2];

end

[c,l]=min(t);

B=v;

[r1,c1]=find(v(:)>=l+5);

[r2,c2]=find(v(:)<l+5);

B(r1)=255; B(r2)=0;

imshow(uint8(B));

% --------------------------------------------------------------------

function jubuyuzhi_Callback(hObject, eventdata, handles)

%局部阈值法

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

v=rgb2gray(handles.image);

imshow(v); R=zeros(size(v));

H = FSPECIAL('gaussian',9,2.4);

v = imfilter(v,H);

t=graythresh(v); t=t*255;

[c,l]=find( v(:)>t);

R(c)=1;

[x,y]=size(R); q=R;

for i=10:x-10

for j=10:y-10

if R(i,j)==0

t=[R(i-1,j-1),R(i-1,j),R(i-1,j+1),R(i,j-1),R(i,j+1),R(i+1,j-1),R(i+1,j),R(i+1,j+1)];

if sum(t)==0

q(i,j)=1;

end

end

end

end

figure, imshow(q,[]);

--------------------------------------------------------------------

function leijianzuidajuli_Callback(hObject, eventdata, handles)

%类间最大法

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

X=rgb2gray(handles.image);

[r,c]=size(X);

figure (1)

subplot(1,2,1)

imshow(X)

R=zeros(1,256);

for i=50:150

Xi0=X0<=i;

N0=sum(sum(Xi0));

Xm0=X0(Xi0);

u0=sum(Xm0)/N0;

Xi1=X0>i;

N1=sum(sum(Xi1));

Xm1=X0(Xi1);

u1=sum(Xm1)/N1;

R(i+1)=(u1-i)*(i-u0)/((u1-u0)^2);

end

Th=find(R==max(R(51:151)))-1

X2=zeros(r,c);

for i=1:r

for j=1:c

X2(i,j)=X0(i,j)>Th;

end

end

subplot(2,2,2)

imshow(X2)

-----------------------------------------------------------------

%颜色空间转化

--------------------------------------------------------------------

function hsv_Callback(hObject, eventdata, handles)

%RGB转HSV

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

hv=rgb2hsv(handles.image);

subplot(2,2,1);

imshow(hv);

title('RGBHSV');

%RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

H=hv(:,:,1);

S=hv(:,:,2);

V=hv(:,:,3);

subplot(2,2,2);

imshow(H) ;

title('§§');

subplot(2,2,3);

imshow(S);

title('§§');

subplot(2,2,4);

imshow(V);

title('§§');

--------------------------------------------------------------------

function HIS_Callback(hObject, eventdata, handles)

%RGB转HSI

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

W=im2double(handles.image);%获得double型的图形矩阵

[m,n,q]=size(W);

R=W(:,:,1);

G=W(:,:,2);

B=W(:,:,3);

% 改变通道来观察图像

H=zeros(m,n);

S=H;

for i1=1:m

for i2=1:n

numerator=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2));

denominator=sqrt((R(i1,i2)-G(i1,i2))^2+(R(i1,i2)-B(i1,i2))*(G(i1,i2)-B(i1,i2)));

theta=acos(numerator/denominator)*180/pi;

if(B(i1,i2)<=G(i1,i2))

H(i1,i2)=theta;

else

H(i1,i2)=360-theta;

end

min1=min(R(i1,i2),G(i1,i2));

min1=min(B(i1,i2),min1);

S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2))*min1;

end

end

I=(R+G+B)/3;

figure,subplot(1,3,1),imshow(H,[]),title('色度图H');

set(gcf,'outerposition',get(0,'screensize'));

set(gcf,'NumberTitle','off','Name','HSI通道图像');

subplot(1,2,2),imshow(S),title('饱和度图S');

subplot(1,2,3),imshow(I),title('强度图I');

% -----------------------------------------------------------------

%其他图像处理

---------------------------------------------------------------------------

function fly_Callback(hObject, eventdata, handles)

%傅里叶变化

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

[m,n]=size(handles.image);

d=zeros(m,n);

d(60:100,60:100)=1;

w=fft2(d);

w1=fftshift(w);

[sx,sy]=size(d);

subplot(2,2,1); imshow(d);

subplot(2,2,2); imshow(abs(w1));

for i=1:sx

t= fft(d(i,:));

len=length(t)/2;

F1(i,:)=[(t(len+1:end)),t(1:len)];

end

for i=1:sy

F2=fft(F1(:,i));

len=length(F2)/2;

F(:,i)=[(F2(len+1:end));F2(1:len)];

end

subplot(2,2,3);

imshow(abs(F1));

subplot(2,2,4);

imshow((abs(F)));

function ruihua_Callback(hObject, eventdata, handles)

%锐化

k=2;

h1=[-1 0 1;-k 0 k;-1 0 1];

h2=[1 k 1;0 0 0;-1 -k -1];

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

I=rgb2gray(handles.image);

subplot(121);imshow(I);

J1(:,:)=conv2(I(:,:),h1);

J2(:,:)=conv2(I(:,:),h2);

J=abs(J1)+abs(J2);

subplot(122);

imshow((J),[0 255]);

MATLAB数字图像小程序设计相关推荐

  1. 【Matlab系列】一维信号/数字图像小波阈值去噪(软阈值,硬阈值,固定阈值)【含Matlab源码】

    Date: 2022.4.23 文章目录 前言 0.代码获取方式 1.部分matlab代码 2.一维信号小波阈值去噪效果图 3.数字图像小波阈值去噪效果图 3.1.添加高斯噪声 3.2.添加随机噪声 ...

  2. 基于matlab的数字图像边缘检测算法研究,基于MATLAB数字图像边缘检测算法的研究与对比分析...

    ·161· 居 舍 研究探讨 2017年10月(中) 1 绪论 图像边缘中通常包含着重要的边界信息,这些边界信息便于分析和研究图像.另外,边缘检测可以大大降低图像处 理的工作量,将提高图像分析的效率. ...

  3. matlab游戏程序,matlab游戏小程序

    小程序有什么游戏是比较受欢迎的_计算机软件及应用_IT/计算机_专业资料.现在很... 总有一款PPT 适合您[最新出品\\精心整理\\倾情奉献\\敬请珍惜] 微信小程序介绍 WeChat Mini ...

  4. matlab小波分析毕业设计,基于matlab的小波去噪分析毕业论文

    基于matlab的小波去噪分析毕业论文 基于 matlab 的小波去噪分析在图像处理中的应用研究 摘 要 本文首先介绍了小波变换的发展状况以及其基本理论知识,包括连续小波变换和离 散小波变换:接着对基 ...

  5. 实战matlab之并行程序设计.pdf,实战Matlab之并行程序设计_IT教程网

    资源名称:实战Matlab之并行程序设计 内容简介: <实战Matlab之并行程序设计>通过阅读和学习,读者可以掌握基于多种平台(多核.多处理器.集群和GPU等),利用多项技术(Matla ...

  6. WeChat:微信小程序设计流程注册完善、设计开发、审核发布之详细攻略

    WeChat:微信小程序设计流程注册&完善.设计&开发.审核&发布之详细攻略 目录 微信小程序设计流程 1.注册 2.小程序信息完善 3.开发小程序 3.1.开发文档 3.2. ...

  7. delphi控件切图界面闪烁_小程序设计,不得不说的7个坑 (附资源:新版小程序 UI 控件,Sketch 版)...

    一年半的时间,我们亲眼见证了小程序从萌芽成长为参天大树,支撑起我们现今的生活方式,让我们在他的树荫下享受着舒适.很多公司自然不会错过这次机会,纷纷加入到小程序的行列. 这对设计和开发而言算是一次挑战, ...

  8. 小程序设计避免犯什么错_新设计师犯下的5种印刷错误以及如何避免

    小程序设计避免犯什么错 Over the last year and a half, I've had the opportunity to teach the basics of typograph ...

  9. matlab 程序 收缩,基于MATLAB的小波收缩去噪方法研究(程序)

    基于MATLAB的小波收缩去噪方法研究(程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15400字,程序,答辩PPT) 摘 要 信号在采集.传输和获取的过程中难免会受到各种噪声的干扰 ...

最新文章

  1. ERP已死,中台已凉,DDD称王!
  2. 与老黄的技术对聊总结
  3. map/reduce的概念
  4. C语言开发笔记(六)实参和形参
  5. WordPress后台添加侧边栏菜单
  6. SQLSERVER字符串截取------STUFF
  7. Android 关于后台杀死App之后改变服务器状态的一些尝试
  8. oracle11gr2架构图,Oracle 11g R2 体系结构
  9. 常用服务和开放端口对照表
  10. windows 清除IE浏览器缓存的脚本
  11. MVP+RecylerView显示数据
  12. 被动语态 动词的过去分词
  13. 判断闰年简单逻辑运算符
  14. 搜狗二季度财报解读:有扎实的现在,也有性感的未来
  15. 获取当前的url并移除不想要的字段
  16. 关于机器学习特征选择的方法总结
  17. 虎牙在全球 DNS 秒级生效上的实践
  18. 吴恩达深度学习课后作业course2第三周 超参数调试、Batch正则化和程序框架
  19. codeforces#710
  20. 关于用户 'SA' 登录失败

热门文章

  1. python在Excel文件之间复制工作表
  2. WPS文字如何将纸张大小由A4调整为A3默认纸张大小是A4
  3. Python可开一家AI公司的语音克隆源码方案
  4. Network and Distributed System Security (NDSS) Symposium 2017
  5. 支付宝蜻蜓VS微信青蛙,大佬为何抢分刷脸支付这杯羹
  6. CloudCompare功能介绍-Curvature 曲率
  7. Docker搭建Redis主从模式
  8. php生成字母头像,php 按照中文字母名字排序,并把相应的头像显示出来
  9. 你所关心的外贸获客软件功能都在这里了!
  10. #劲舞团# 熬点小米稀饭喝,有六年没有喝过了。确实是家长的味道。