opencv图像处理中的一些滤波器+利用滤波器提取条形码(解析二维码)+公交卡倾斜矫正+物体尺寸丈量

一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像中的细节信息也主要集中在其高频部分,因此,如何去掉高频干扰同时又保持细节信息是关键。为了去除噪声,有必要对图像进行平滑,可以采用低通滤波的方法去除高频干扰。图像平滑包括空域法和频域法两大类。在空域法中,图像平滑的常用方法是采用均值滤波或中值滤波。对于均值滤波,它是用一个有奇数点的滑动窗口在图像上滑动,将窗口中心点对应的图像像素点的灰度值用窗口内的各个点的灰度值的平均值代替,如果滑动窗口规定了取均值过程中窗口各个像素点所占的权重,也就是各个像素点的系数,这时候就称为加权均值滤波;对于中值滤波,对应的像素点的灰度值用窗口内的中间值代替。 

一,平滑均值滤波,奇数尺寸,参数和为1,大致的整体描述而模糊一幅图像,忽略细小的细节,缺点没有去除噪声,反而让图像模糊,代码,

"""
平滑滤波
"""
def average_filter():img=cv2.imread('./data/opencv_logo.png')kernel=np.ones(shape=(5,5),dtype=np.float32)/25dst=cv2.filter2D(src=img,ddepth=-1,kernel=kernel)plt.subplot(121)plt.imshow(img)plt.title('original')plt.axis('off')plt.subplot(122)plt.imshow(dst)plt.title('Average')plt.axis('off')plt.show()

打印结果:

二,平滑高斯滤波,模拟人眼关注中心区域,有效去除高斯噪声

"""
高斯滤波
"""
def image_gauss():img = cv2.imread('./data/img.png')gauss_img = cv2.GaussianBlur(img, (7, 7),0)plt.subplot(121)plt.imshow(img)plt.title('original')plt.axis('off')plt.subplot(122)plt.imshow(gauss_img)plt.title('gauss_img')plt.axis('off')plt.show()

打印结果:

三,中值滤波,卷积域内的像素值从小到大排序,取中间值作为卷积输出,有效去除椒盐噪声

"""
中值滤波
"""
def image_median():img = cv2.imread('./data/img1.png')median_img = cv2.medianBlur(img,5)plt.subplot(121)plt.imshow(img)plt.title('original')plt.axis('off')plt.subplot(122)plt.imshow(median_img)plt.title('medians_img')plt.axis('off')plt.show()

打印结果:

四,Sobel算子

def Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None)

Sobel算子依然是一种过滤器,只是其是带有方向的。

前四个是必须的参数:

  • 第一个参数是需要处理的图像;
  • 第二个参数是图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度;
  • dx和dy表示的是求导的阶数,0表示这个方向上没有求导,一般为0、1、2。 
img=cv2.imread('img.jpg')
print(img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#[[-1,0,1],
# [-2,0,2],
# [-1,0,1]]
solber_x=cv2.Sobel(gray,cv2.CV_64F,1,0,ksize=3)
solber_x=cv2.convertScaleAbs(solber_x)
cv2.imshow('solber_x',solber_x)
cv2.waitKey(0)#[[-1,-2,-1],
# [0,0,0],
# [1,2,1]]
solber_y=cv2.Sobel(gray,cv2.CV_64F,0,1,ksize=3)
solber_y=cv2.convertScaleAbs(solber_y)
cv2.imshow('solber_y',solber_y)
cv2.waitKey(0)
solber_xy=cv2.addWeighted(solber_x,1,solber_y,1,0)
cv2.imshow('solber_xy',solber_xy)
cv2.waitKey(0)

五,傅里叶变换用来分析各种滤波器的频率特性,图片中的边缘点和噪声可看成是高频分量,因为变化明显,没有很大变化的就看成低频分量

https://docs.opencv.org/master/de/dbc/tutorial_py_fourier_transform.html

"""
傅利叶变换
"""
def FFT():img = cv2.imread('./data/img3.png', 0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)magnitude_spectrum = 20 * np.log(np.abs(fshift))plt.subplot(121), plt.imshow(img, cmap='gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.show()

在中间部分更亮,表明低频分量多

用60×60窗口去掉低频分量

def FFT():img = cv2.imread('./data/img3.png', 0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)# magnitude_spectrum = 20 * np.log(np.abs(fshift))# plt.subplot(121), plt.imshow(img, cmap='gray')# plt.title('Input Image'), plt.xticks([]), plt.yticks([])# plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')# plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])# plt.show()rows, cols = img.shapecrow, ccol = int(rows / 2), int(cols / 2)fshift[crow - 30:crow + 30, ccol - 30:ccol + 30] = 0f_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.subplot(131), plt.imshow(img, cmap='gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(132), plt.imshow(img_back, cmap='gray')plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])plt.subplot(133), plt.imshow(img_back)plt.title('Result in JET'), plt.xticks([]), plt.yticks([])plt.show()

可见只保留了人的边缘信息,证明了中间亮的那些部分是低频分量。

六,Laplacian为啥是高通滤波器

def laplace_high_pass():# simple averaging filter without scaling parametermean_filter = np.ones((3,3))# creating a gaussian filterx = cv2.getGaussianKernel(5,10)gaussian = x*x.T# different edge detecting filters# scharr in x-directionscharr = np.array([[-3, 0, 3],[-10,0,10],[-3, 0, 3]])# sobel in x directionsobel_x= np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]])# sobel in y directionsobel_y= np.array([[-1,-2,-1],[0, 0, 0],[1, 2, 1]])# laplacianlaplacian=np.array([[0, 1, 0],[1,-4, 1],[0, 1, 0]])filters = [mean_filter, gaussian, laplacian, sobel_x, sobel_y, scharr]filter_name = ['mean_filter', 'gaussian','laplacian', 'sobel_x', \'sobel_y', 'scharr_x']fft_filters = [np.fft.fft2(x) for x in filters]fft_shift = [np.fft.fftshift(y) for y in fft_filters]mag_spectrum = [np.log(np.abs(z)+1) for z in fft_shift]for i in range(6):plt.subplot(2,3,i+1),plt.imshow(mag_spectrum[i],cmap = 'gray')plt.title(filter_name[i]), plt.xticks([]), plt.yticks([])plt.show()

打印结果:

中间有白色的部分代表是低通滤波器,中间有黑色的部分代表是高通滤波器。

七,图像锐化

图像的边缘信息在图像风险和人的视觉中都是非常重要的,物体的边缘是以图像局部特性不连续的形式出现的。前面介绍的图像滤波对于消除噪声是有益的,但往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得更加鲜明。图像锐化处理的目的就是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑处理后的图像变得模糊的根本原因是因为图像的像素受到了平均或积分,因此对其进行逆运算(如微分运算)就可以使图像变得清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器使图像清晰。

八.例子 提取条形码

1.1 利用梯度操作是如何检测出图片的条形码;

1.2 利用均值滤波作用于梯度图片,平滑图片中的高频噪声;

1.3 二值化;

1.4 利用函数cv2.getStructuringElement构造一个矩形核做闭运算,这个核的宽度大于高度,因此允许我们缩小条形码垂直条带之间的间隙;

1.5 腐蚀,膨胀去掉大部分独立斑点;

1.6 找出最大轮廓,提取。

import cv2
import matplotlib.pyplot as plt
import numpy as np
import imutils
path='./barcode.png'
image = cv2.imread(path)
image_h, image_w,_=image.shape
print('======opencv read data type========')
print(image.dtype)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# # 计算图片x和y方向的Scharr梯度大小
ddepth = cv2.CV_32F if imutils.is_cv2() else cv2.CV_32F
gradX = cv2.Sobel(gray, ddepth=ddepth , dx=1, dy=0, ksize=-1)
print('gradX.dtype:',gradX.dtype)# # #debug
# gradX = cv2.convertScaleAbs(gradX)
# print(gradX.dtype)
# cv2.imshow('gradX',gradX)
# cv2.waitKey(0)gradY = cv2.Sobel(gray, ddepth=ddepth , dx=0, dy=1, ksize=-1)
# # #debug
# gradY = cv2.convertScaleAbs(gradY)
# print(gradY.dtype)
# cv2.imshow('gradY',gradY)
# cv2.waitKey(0)# 用x方向的梯度减去y方向的梯度
gradient = cv2.subtract(gradX,gradY)
# cv2.imshow('gradient1',gradient)
# cv2.waitKey(0)#转回uint8
gradient = cv2.convertScaleAbs(gradient)
# print(gradient.shape)
# print(gradient.dtype)
# cv2.imshow('gradient2',gradient)
# cv2.waitKey(0)# blur and threshold the image
blurred = cv2.blur(gradient, (9, 9))
thresh= cv2.threshold(blurred, 225, 255, cv2.THRESH_BINARY)[1]# cv2.imshow('thresh:',thresh)
# cv2.waitKey(0)
# construct a closing kernel and apply it to the thresholded image
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (21, 7))
closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
# cv2.imshow('closed:',closed)
# cv2.waitKey(0)
# perform a series of erosions and dilations
closed = cv2.erode(closed, None, iterations = 4)
closed = cv2.dilate(closed, None, iterations = 4)
# cv2.imshow('close:',closed)
# cv2.waitKey(0)# find the contours in the thresholded image, then sort the contours
# by their area, keeping only the largest one
cnts = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
# cnts = cnts[0]
c = sorted(cnts, key=cv2.contourArea, reverse=True)
c = np.squeeze(c[0])
# plt.plot(c[:, 0], c[:, 1])
# plt.show()
mask = np.zeros((image_h, image_w, 3))
dummy_mask = cv2.drawContours(mask, [c], 0, (255, 255, 255), thickness=cv2.FILLED)
cv2.imshow('dummy_mask',dummy_mask)
cv2.waitKey(0)image_bar=(image*(np.array(dummy_mask/255).astype(np.uint8)))
cv2.imshow('image_bar',image_bar)
cv2.waitKey(0)

      

用下面这个是提取出轮廓的外接多边形然后框出来

rect=cv2.minAreaRect(c)#get center xy and w h
box = cv2.boxPoints(rect) # cv2.boxPoints(rect) for OpenCV 3.x 获取最小外接矩形的4个顶点坐标
box = np.int0(box)
print(box)
cv2.drawContours(image, [box], 0, (0, 255, 0), 3)cv2.imshow('image',image)
cv2.waitKey(0)

2.1 解析二维码

import pyzbar.pyzbar as pyzbarimg = cv2.imread('./2.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_h, gray_w = gray.shape
barcodes = pyzbar.decode(gray)
print('==barcodes:', barcodes)def parse_results(barcode):# for barcode in barcodes:# 提取二维码的位置(x, y, w, h) = barcode.rect# 字符串转换barcodeData = barcode.data.decode("utf-8")# barcodeType = barcode.typereturn x, y, x + w, y + h, barcodeDataif len(barcodes):print('==barcodes[0]:', barcodes[0])x1, y1, x2, y2, barcodeData = parse_results(barcodes[0])print('==barcodeData:', barcodeData)

 

 

九.倾斜矫正

#from imutils.perspective import four_point_transform
#import imutils
import cv2
import numpy as np
from matplotlib import pyplot as plt
import mathdef Get_Outline(input_dir):image = cv2.imread(input_dir)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)blurred = cv2.GaussianBlur(gray, (5, 5), 0)edged = cv2.Canny(blurred, 75, 200)return image, gray, edgeddef Get_cnt(edged):cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = cnts[0]  # if imutils.is_cv2() else cnts[1]docCnt = Noneif len(cnts) > 0:cnts = sorted(cnts, key=cv2.contourArea, reverse=True)for c in cnts:peri = cv2.arcLength(c, True)  # 轮廓按大小降序排序approx = cv2.approxPolyDP(c, 0.02 * peri, True)  # 获取近似的轮廓if len(approx) == 4:  # 近似轮廓有四个顶点docCnt = approxbreakreturn docCntdef calculate_distance(point1, point2):d_x = point1[0] - point2[0]d_y = point1[1] - point2[1]distance = math.sqrt(d_x ** 2 + d_y ** 2)return distanceif __name__ == "__main__":input_dir = "gongjiaoka.png"image, gray, edged = Get_Outline(input_dir)docCnt = Get_cnt(edged)# print(docCnt)print(docCnt.reshape(4, 2))# result_img = four_point_transform(image, docCnt.reshape(4,2)) # 对原始图像进行四点透视变换# 改变变换的模式 公交卡的比例是16:9pts1 = np.float32(docCnt.reshape(4, 2))# 加入一个判断,对不同宽高采用不同的系数p = docCnt.reshape(4, 2)# plt.plot(p[:,0],p[:,1])# plt.show()# 确定长短边if calculate_distance(p[0], p[1]) < calculate_distance(p[0], p[3]):pts2 = np.float32([[0, 0], [0, 180], [320, 180], [320, 0]])M = cv2.getPerspectiveTransform(pts1, pts2)#求仿射变换矩阵edged_rotate = cv2.warpPerspective(edged, M, (320, 180))image_rotate = cv2.warpPerspective(image, M, (320, 180))else:pts2 = np.float32([[0, 0], [0, 320], [180, 320], [180, 0]])#求仿射变换矩阵    M = cv2.getPerspectiveTransform(pts1, pts2)edged_rotate = cv2.warpPerspective(edged, M, (180, 320))image_rotate = cv2.warpPerspective(image, M, (180, 320))cv2.imwrite('image_rotate.png',image_rotate)# print(result_img.shape)# -------画点----------for point in docCnt.reshape(4, 2):cv2.circle(image, tuple(point), 3, (0, 0, 255), 2)# # --------------cv2.imshow("original", image)# cv2.imshow("gray", gray)cv2.imshow("edged", edged)cv2.imshow("edged_rotate", edged_rotate)cv2.imshow("result_img", image_rotate)cv2.waitKey(0)cv2.destroyAllWindows()

十.求物体尺寸

from scipy.spatial import distance as dist
from imutils import perspective
from imutils import contours
import numpy as np
import argparse
import imutils
import cv2def midpoint(ptA, ptB):return ((ptA[0] + ptB[0]) * 0.5, (ptA[1] + ptB[1]) * 0.5)path='./img/example_02.png'
#硬币长度0.955inch
WIDTH=0.955
# load the image, convert it to grayscale, and blur it slightly
image = cv2.imread(path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 0)# cv2.imwrite('gray.jpg',gray)edged = cv2.Canny(gray, 50, 100)
edged = cv2.dilate(edged, None, iterations=1)
edged = cv2.erode(edged, None, iterations=1)# find contours in the edge map
cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
# print(len(cnts))
# print(cnts[0].shape)
pixelsPerMetric = None
orig = image.copy()for c in cnts:if cv2.contourArea(c) < 100:continuebox = cv2.minAreaRect(c)box = cv2.cv.BoxPoints(box) if imutils.is_cv2() else cv2.boxPoints(box)box = np.array(box, dtype="int")print('box:',box)box = perspective.order_points(box)cv2.drawContours(orig, [box.astype("int")], -1, (0, 255, 0), 2)for (x, y) in box:cv2.circle(orig, (int(x), int(y)), 5, (0, 0, 255), -1)(tl, tr, br, bl) = box(tltrX, tltrY) = midpoint(tl, tr)(blbrX, blbrY) = midpoint(bl, br)(tlblX, tlblY) = midpoint(tl, bl)(trbrX, trbrY) = midpoint(tr, br)# draw the midpoints on the imagecv2.circle(orig, (int(tltrX), int(tltrY)), 5, (255, 0, 0), -1)cv2.circle(orig, (int(blbrX), int(blbrY)), 5, (255, 0, 0), -1)cv2.circle(orig, (int(tlblX), int(tlblY)), 5, (255, 0, 0), -1)cv2.circle(orig, (int(trbrX), int(trbrY)), 5, (255, 0, 0), -1)# draw lines between the midpointscv2.line(orig, (int(tltrX), int(tltrY)), (int(blbrX), int(blbrY)),(255, 0, 255), 2)cv2.line(orig, (int(tlblX), int(tlblY)), (int(trbrX), int(trbrY)),(255, 0, 255), 2)# compute the Euclidean distance between the midpointsdA = dist.euclidean((tltrX, tltrY), (blbrX, blbrY))dB = dist.euclidean((tlblX, tlblY), (trbrX, trbrY))# if the pixels per metric has not been initialized, then# compute it as the ratio of pixels to supplied metric# (in this case, inches)if pixelsPerMetric is None:pixelsPerMetric = dB / WIDTH# compute the size of the objectdimA = dA / pixelsPerMetricdimB = dB / pixelsPerMetric# draw the object sizes on the imagecv2.putText(orig, "{:.1f}in".format(dimA),(int(tltrX - 15), int(tltrY - 10)), cv2.FONT_HERSHEY_SIMPLEX,0.65, (255, 255, 255), 2)cv2.putText(orig, "{:.1f}in".format(dimB),(int(trbrX + 10), int(trbrY)), cv2.FONT_HERSHEY_SIMPLEX,0.65, (255, 255, 255), 2)
cv2.imwrite('orig.jpg', orig)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智联汽车:复盘国内巨头布局

来源&#xff1a;申万宏源摘要&#xff1a;从今年阿里9月云栖大会、华为10月全联接大会、百度11月世界大会、腾讯11月合作伙伴大会可以发现BATH均高调展示了各自在汽车科技领域的研发成果;而京东、滴滴两家公司近两年来关于汽车科技领域的动态亦在频频更新。▌车联网:车载OS竞争…

Tomcat基础教程(一)

Tomcat, 是Servlet和JSP容器&#xff0c;其是实现了JSP规范的servlet容器。它在servlet生命周期内包容&#xff0c;装载&#xff0c;运行&#xff0c;和停止servlet容器。 Servlet容器的三种工作模式&#xff1a; 1. 独立的Servlet容器 Servlet容器与基于JAVA技术的Web服务器集…

opencv--图像金字塔

一&#xff0c;高斯金字塔--图片经过高斯下采样 """ 高斯金字塔 """ def gauss_pyramid():img cv2.imread(./data/img4.png)lower_reso cv2.pyrDown(img)lower_reso2 cv2.pyrDown(lower_reso)plt.subplot(131), plt.imshow(img)plt.title(In…

中国移动:5G蜂窝IoT关键技术分析

来源&#xff1a;5G本文讨论了蜂窝物联网的技术现状&#xff0c;针对增强机器类通信和窄带物联网技术标准&#xff0c;提出了2种现网快速部署方案&#xff0c;并进一步指出了C-IoT面向5G的演进路径。该路径充分考虑了5G网络中网络功能虚拟化、软件定义网络、移动边缘计算和大数…

清华大学发布:人脸识别最全知识图谱

来源&#xff1a;智东西摘要&#xff1a;本期我们推荐来自清华大学副教授唐杰领导的学者大数据挖掘项目Aminer的研究报告&#xff0c;讲解人脸识别技术及其应用领域&#xff0c;介绍人脸识别领域的国内玩人才并预测该技术的发展趋势。自20世纪下半叶&#xff0c;计算机视觉技术…

图像变换dpi(tif->jpg),直方图均衡化,腐蚀膨胀,分水岭,模板匹配,直线检测

一.图像变换dpi 1.示例1 import numpy as np from PIL import Image import cv2 def test_dp():path./gt_1.tif# imgImage.open(path)# print(img.size)# print(img.info)imgcv2.imread(path)imgImage.fromarray(img)print(img.size)print(img.info)img.save(test.jpg, dpi(3…

CV中的经典网络模型

目标检测 目标检测&#xff0c;不仅要识别目标是什么&#xff08;分类&#xff09;&#xff0c;还要知道目标的具体位置&#xff08;可以当作回归来做&#xff09;。 RCNN Selective Search 算法获得候选框&#xff0c;Alexnet提取特征&#xff0c;SVM对每个候选框区域打分。…

技术阅读周刊第十一期

技术阅读周刊&#xff0c;每周更新。 历史更新 20231124&#xff1a;第七期20231201&#xff1a;第八期20231215&#xff1a;第十‍期 A Comprehensive guide to Spring Boot 3.2 with Java 21, Virtual Threads, Spring Security, PostgreSQL, Flyway, Caching, Micrometer, O…

数据智能是大数据的未来

来源&#xff1a;中国信息产业网 近日&#xff0c;两家大数据领域的代表性企业Cloudera和Hortonworks宣布了它们相对平等的合并&#xff0c;宣称新公司将创建世界领先的下一代数据平台并提供业界首个企业数据云&#xff0c;这令很多人感到意外&#xff0c;大数据的未来何去何从…

利用GAN原始框架生成手写数字

这一篇GAN文章只是让产生的结果尽量真实&#xff0c;还不能分类。 本次手写数字GAN的思想&#xff1a; 对于辨别器&#xff0c;利用真实的手写数字&#xff08;真样本&#xff0c;对应的标签为真标签&#xff09;和随机噪声经过生成器产生的样本&#xff08;假样本&#xff0…

DL也懂纹理吗——图像的纹理特征

工作中遇到一个问题&#xff1a;对于同一场景&#xff0c;训练好的DL模型能把大部分样本分类准确&#xff0c;而对于少量负样本&#xff0c;DL会错分到另外一个对立的类中。错分的样本可以认为是难分的样本&#xff0c;但是我们还想知道这两种样本到底是哪里的差异导致DL做出了…

排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)

一.时间复杂度分析 - **时间复杂度**&#xff1a;对排序数据的总的操作次数。反应当n变化时&#xff0c;操作次数呈现什么规律 - **空间复杂度**&#xff1a;算法在计算机内执行时所需要的存储空间的容量&#xff0c;它也是数据规模n的函数。 1.例题: 有一个字符串数组&…

肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热

来源&#xff1a;科学网最懂你大脑的&#xff0c;可能不是“肚子里的蛔虫”&#xff0c;而是肠子里的细菌——肠道菌群对神经系统、心理和行为方面的影响正成为一个新兴热点领域。在日前举办的美国神经科学学会年会上&#xff0c;一张海报上的大脑切片显微镜图像显示&#xff0…

SVM原理与实战

先看线性可分问题。对于线性可分&#xff0c;其实感知机就可以解决。但是感知机只是找到一个超平面将数据分开&#xff0c;而这样的超平面可能是平行的无限多个&#xff0c;我们需要在这其中找到最优的一个。怎么衡量一个超平面是不是最优的呢&#xff0c;直观上讲&#xff0c;…

2014-01-01

一:HyperlinkButton点击后打开新窗口的方法 1,直接在界面中写这段代码就可以了: <HyperlinkButton NavigateUri"http://www.cnblogs.com/wsdj-ITtech/" Content"Click Me" TargetName"_blank" FontSize"28" Height"50"…

李飞飞高徒:斯坦福如何打造基于视觉的智能医院?

作者&#xff1a;Albert Haque、Michelle Guo来源&#xff1a;机器之心自 2009 年担任斯坦福人工智能实验室和视觉实验室的负责人&#xff0c;李飞飞在推动计算机视觉方面研究的同时&#xff0c;还密切关注 AI 医疗的发展。昨日&#xff0c;李飞飞离任斯坦福 AI 实验室负责人一…

tensorflow知识点

一.bazel编译tensorflow注意版本号: 在/tensorflow/tensorflow/configure.py 查看bazel版本号 https://github.com/tensorflow/tensorflow https://github.com/bazelbuild/bazel/releases?after0.26.1 https://tensorflow.google.cn/ 二&#xff0c;基础知识点 1.打印出…

eclipse中如何导入jar包

如图&#xff0c;首先右键点击项目&#xff0c;选择最下面的properties&#xff0c; 然后进去之后点击java build path&#xff0c;右边会出来4个选项卡&#xff0c;选择libraries&#xff0c; 这时候最右边会有多个选项&#xff0c;第一个add jars是添加项目文件中的jar包&…

线性-LR-softmax傻傻分不清楚

softmax 对于分类网络&#xff0c;最后一层往往是全连接层&#xff0c;如果是N分类&#xff0c;那么最终的全连接层有N个结点。很显然&#xff0c;每个节点对应一个类&#xff0c;该节点的权重越大&#xff0c;说明网络越倾向于认为输入样本属于该类。这其实就是Softmax的思想…

一图看懂国外智能网联汽车传感器产业发展!

来源&#xff1a;赛迪智库编辑&#xff1a;煜 佳未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#…