芈月传里提到的诗词(芈月传里的台词)
2015年度历史宫廷大作《芈月传》终于播完。
从观众的反馈来说,这部作品的好评度是远远比不上郑晓龙导演的上一部作品——《甄嬛传》的。
虽不及《甄嬛传》那么好,但也不至于低到……
网上也是一堆吐槽的帖子
从商业的角度来说,这部作品的收视率是让人无话可说……这部玛丽苏女王打怪升级上位的“奇葩剧“ (Controversial Show) 还是成功斩获了百亿网络点播量,观众手拉手可以绕地球N圈…比某奶茶要猛地多啦……
可谓是“不叫好很叫座”
难怪观众们都是嘴上说不要不要滴,手却很诚实的把遥控器调到了播放芈月传的频道了么?
比如说秦朝有……
还有……
但清朝是……
可能你们会觉得……
但是中国文化中有很多故事和常识,现代人都已经不知道了。这其实并不是一个好事。
回头我们向外国人介绍我们自己的文化时,我们自己都弄不清,怎么指望让别的国家的人理解我们呢?
如果是像下图这样翻译的话,肯定会闹笑话的……
➤➤➤那么问题来了:
我们作为掌握中英文的新中国的接班人!怎么样去翻译这些生僻的古文和古代用语呢?!
➤➤➤首先我们要根据读者对象确定翻译策略
如果是普通读者,他们只是把古代典籍当作普通的文学读物。读者们不会去关心把“大将军”译成“general”“general-in-chief”有什么区别。
如果预期读者是研究中国文化的学着,我们就必须用“general-in-chief”来保证准确性(大将军在先秦、西汉时是将军的最高称号)。
➤➤➤然后我们要选择最符合实际的方法:
▌对应法
The ideal is a rendering that reveals boththe actual function of the office and the literal sense of the Chinese title.
官职翻译最理想的境界就是在传达官职功能的同时把汉语的字面意义也表达出来。
➤采用英国官职系统的词语
英语中有很多和我国古代君主专制政体下的词汇相似,如国王、王后、大臣等。
如用“minister”来翻译“尚书”, “lord”来翻译“…公, 侯”,“乌程侯”就可译为“Wucheng Lord”。
➤不宜采用易引起误解的对应
虽然有些英文的官职和汉语的官职在一定程度上接近, 但还是有差别的。
例:且说董卓字仲颖, 陇西临洮人也, 官拜河东太守, 自来骄傲。
Governor of Hedong Dong Zhuo (styled Zhongying), a native of Lintao in Longxi in the far northwest, was a man to who marrogance came naturally.
该例中“太守”翻译成“governor”就可能引起误解。Governor 有“州长”的意思。太守虽然在权职上与州长有一定的相似性, 都是一个行政区的最高长官, 但性质还是不同。州长拥有很大的自主权, 而太守是封建皇权的分支, 受皇帝控制。用“governor”来对应, 传递了一个严重的错误信息:中国古代的地方统治权独立性很大。可以译为provincial prefect。
▌解释法
在对应法不能进行的时候可以采用解释法。解释法可以分为三类:
➤汉语拼音 解释
“汉语拼音 解释”的方法在文化因素的翻译中很常见, 如地名和中国阴阳五行等。一则可以让目的语读者知晓该词的字面读音和文化意义;二则其后的解释有助于读者对文本的理解。这种方法对文化传播是最有帮助的。
例:庭尉是当时掌典刑狱之官。
The Tingwei officer was in charge of interrogating and punishing erring officials.
这个例子采用的就是拼音法, 读者通过后面的解释可以了解“惩办贪官污吏的官员”在古汉语里称为“庭尉”。
从目前我国对外交流的目的来说, 这种方法比其他的都好, 可对于目的语读者而言, 这样的译文稍嫌罗嗦。但在没有更好方法的情况下, 这样处理还是可行的。
➤职能 官职泛称
所谓官职泛称是指如“officer , commander , minister , magistrate”等很多官职的通称。
是目前古代典籍翻译的最普遍的用法。《三国演义》Moss Roberts的译本中很多地方都体现了该方法。
这种方法的优点是能完全传达原文的意义, 但是对于原文的文化特色有所弱化。所以在目的语读者把译本当成普通的文学读物时, 可以采用这种方法。
➤直接解释职能法
有时很难或者没有必要把官职的名称翻译出来, 就可以直接阐释官职的职能。
例:年二十, 举孝廉, 为郎, 除洛阳北部尉。
At twenty, Cao received his district’s recommendation for filial devotion and personal integrity and this led to his initial appointment to the palace. Later, he was given command of security in the northern half of the district where the capital, Luoyang, was located.
该例源于《三国演义》, 是对曹操年轻时作为的描写。曹操在二十岁时就被推荐做官, 官名为郎,并担任了洛阳北部尉。郎是皇帝的护卫陪从, 兼有顾问差遣等侍从的职能;洛阳北部尉负责洛阳县治安。译文都没有把官职名称翻译出来, 只是介绍了职能的特征:“appointment to the palace”和“given command of security in the northern half of the district”。
这种翻译方式在意义传达上是合适的, 目的语读者能理解该官职的工作和特点, 但是在文化内涵的推广上没有起积极作用。
▌省译
省译是一种常见的翻译技巧, 在官职翻译中也很常见, 其前提是不影响意义的传达和文化的传播。当文化传播的要求不能满足时, 尽量满足意义传达的要求。
例:五鹿充宗在不到一年半的时间内, 由一个小小的县令入朝为官, 由议郎到大中大夫, 又由大中大夫一越而居相位……
In the space of less than a year and a half, Wulu Chongzong’s rise had been meteoric ——from a county magistrate, to a court official, and then to the toppost at the court ...
这个例子中原文有四个官职, 而译文只翻译了其中的一个, 其他三个要么省略要么简单介绍并不翻译。其罗列的官职只是为了说明五鹿充宗升官速度之快。当然和原文相比, 译文对中国古代文化的传播作用还是明显不足。所以要恰当运用, 不可滥用。
So, 根据以上方法,秦国后宫可以这样翻译:
皇后 Empress
夫人 Madam
美人 Beauty
良人 Lady
八子 Bazi
七子 Qizi
长使 Changshi
少使 Shaoshi
当然,这个翻译非权威,如有问题,欢迎理性讨论。对传统文化或翻译感兴趣的同学可以自行去查阅学习,这里就不一一赘述了。
芈月传现在是结束了,但是太子妃升职记来了!
感觉这个年过的是“腥风血雨“啊……
就不能让我们做一个安静的美男子/美女子么???
你们别忘了
☟
之后就可以跪安啦~
参考文献:
从阐释学角度看文化负载词的翻译——邱芸
简论中国古代官职名称翻译——吴芳
如何用LabVIEW做颜色识别?
C#调用NI的库函数实现颜色识别检测(在halcon环境下)
一直使用C#+halcon进行视觉算法的开发,但是遇到了一个非常普遍的需求,对物体进行颜色识别。在halcon中颜色识别主要分两种方式,一种为进行色域转化,由RGB转换为HSV后根据颜色表在H或者其他通道中对不同的颜色值进行区分,此种方式缺点是在进行建模时必须知道目标ROI的H通道值,且与其他ROI的值差别较大,不然非常容易误报。另一种方法即建立分类器,使用mlp或者gmm进行训练,然后将要识别的区域给分类器让其判断,这其中有一个缺点为,在建立分类器时必须知道当前有几种颜色,然后建立起对应输出的分类器,并且再有样本添加进入时也必须按同时将这几种颜色都加入进去(即使当前状态只有一种颜色出现差异需要再训练),同时,也不能再追加一种新的颜色。
在LabView的Vision模块中,有直接的颜色匹配模式,即将选定的ROI区域划分为16个向量再与检测的ROI作比较,识别较为准确。故本文介绍在C#环境下调用LV中的颜色识别函数,显示窗口依然使用halcon的HWindowControl(毕竟主要的开发算法还是在halcon下写的,并且个人感觉LV的图像显示窗口做的并不好,杂乱!)。
首先,调用LV需要先安装labview并且安装vision assistan模块,安装好后在其安装路径下有两个dll,分别为NationlInstryments.Vision.dll 和 NationlInstryments.Vision.Common.dll,同时引用halcondonet.dll(halcon的dll),找不到在哪的可以使用软件everything进行搜索。在自己的工程中引用这两个dll,同时引用namespace,添加halcon图像显示窗口,使用该文章中https://blog.csdn.net/qizijuesha/article/details/77400312的封装后的显示窗口 :
using NationalInstrumens.Vision
using NationInstruments.Vision.Analysis;
using HalconDotNet;
下面上代码:
private VisionImage myVisionImage = new VisionImage(); // VisionImage作为LV库函数中的图像输入
// 从本地读取图像
private void buttonReadImage_Click(object sender, EventArgs e)
{
ImagePreviewFileDialog imageDialog = new ImagePreviewFileDialog();
imageDialog.InitialDirectory = "D:\\\\";
imageDialog.Filter = "All Files(*.*)";
if (imageDialog.ShowDialog() == DialogResult.OK)
{
string imagePath = imageDialog.FileName;
LoadSelectedImage(imagePath); // 使用LV读取图像
}
}
private void LoadSelectedImage(string imagePath)
{
myVisionImage.ReadFile(imagePath);
myVisionImage.Type = ImageType.Rgb32; // 次句一定要加上,不然在进行识别时报错,默认读取进入后是U8单通道格式
}
在halcon窗口上进行roi的划定
private HObject GetModelDrawRegion(HObject drawImage, ref HTuple hv_Row1, ref HTuple hv_Column1, ref HTuple hv_Row2, ref HTuple hv_Column2)
{
HObject ho_ModelRegion, ho_TemplateImage, ho_RegionSelect, ho_RegionUnion, ho_RegionModel;
HObject ho_ModelContours, ho_TransContours = null;
HTuple hv_TempHomMat2D = new HTuple();
HTuple hv_HomMat = new HTuple();
// 初始化本地变量值
HOperatorSet.GenEmptyObj(out ho_ModelRegion);
HOperatorSet.GenEmptyObj(out ho_TemplateImage);
HOperatorSet.GenEmptyObj(out ho_ModelContours);
HOperatorSet.GenEmptyObj(out ho_TransContours);
HOperatorSet.GenEmptyObj(out ho_RegionSelect);
HOperatorSet.GenEmptyObj(out ho_RegionUnion);
HOperatorSet.GenEmptyObj(out ho_RegionModel);
try
{
HObject ho_temp_brush = new HObject();
hWindow_Final1.DrawModel = true; // 缩放功能禁用
HOperatorSet.SetSystem("border_shape_models", "false");
ho_ModelRegion.Dispose();
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow, 10, "mono", new HTuple("true"), new HTuple("false"));
HalconToolClass.disp_message(hWindow_Final1.hWindowControl.HalconWindow, "在窗口中将MARK1点位置框出,点击右键完成", "window", 20, 20, "red", "false");
hWindow_Final1.Focus();
HOperatorSet.SetColor(hWindow_Final1.hWindowControl.HalconWindow, "red");
HOperatorSet.DrawRectangle1(hWindow_Final1.hWindowControl.HalconWindow, out hv_Row1, out hv_Column1, out hv_Row2, out hv_Column2);
HOperatorSet.GenRectangle1(out ho_ModelRegion, hv_Row1, hv_Column1, hv_Row2, hv_Column2);
hWindow_Final1.DrawModel = false;
if (hv_Row1.D != 0)
{
brush_region.Dispose();
brush_region = ho_ModelRegion;
}
else
{
hWindow_Final1.HobjectToHimage(drawImage);
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow, 20, "mono", new HTuple("true"), new HTuple("false"));
HalconToolClass.disp_message(hWindow_Final1.hWindowControl.HalconWindow, "未画出有效区域", "window", 20, 20, "red", "false");
}
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow, 20, "mono", new HTuple("true"), new HTuple("false"));
hWindow_Final1.DispObj(ho_ModelRegion, "yellow");
ho_TemplateImage.Dispose();
HOperatorSet.ReduceDomain(drawImage, ho_ModelRegion, out ho_TemplateImage);
}
catch
{
MessageBox.Show("划定模板框出错!");
}
finally
{
ho_ModelRegion.Dispose();
}
return ho_TemplateImage;
}
划定好ROI后进行颜色的学习,并将学习完毕的颜色向量存入数据库
private void buttonRecColor_Click(object sender, EventArgs e)
{
HTuple hv_Row1 = null, hv_Column1 = null, hv_Row2 = null, hv_Column2 = null;
HObject ho_ModelRegion;
ho_ModelRegion = GetModelDrawRegion(halconImage, ref hv_Row1, ref hv_Column1, ref hv_Row2, ref hv_Column2);
double []lvRoi = ConvertHalconToLV(hv_Row1, hv_Column1, hv_Row2, hv_Column2); // 在halcon中矩形的存储为左上行列坐标,右下行列坐标;
// 而在LV中,矩形存储方式为中心行列坐标,weight和height长
// 查询插入语言
sqlCommand = "INSERT INTO roi_rec_inf(id, left_top_row, left_top_column, right_bottom_row, right_bottom_column) SELECT (SELECT MAX(id) FROM roi_rec_inf)+1, '" + hv_Row1 + "', '" + hv_Column1 + "', '" + hv_Row2 + "', '" + hv_Column2 + "';";
mySqlClass.UsualSqlCommand(sqlCommand);
RectangleContour rectangle = new RectangleContour(lvRoi[0], lvRoi[1], lvRoi[2], lvRoi[3]); // 矩形
Roi rectangleRoi = rectangle.ConvertToRoi();
// 该函数为调用的LV中学习颜色的函数,ROI使用halcon窗口中画出的ROI,若此时不存入数据库,也可直接使用colorInformation进行颜色识别
ColorInformation colorInformation = Algorithms.LearnColor(myVisionImage, rectangleRoi, ColorSensitivity.Low, (int)80);
sqlCommand = @"INSERT INTO color_match(
rec_id, color1, color2, color3, color4, color5, color6, color7, color8, color9, color10, color11, color12, color13, color14, color15, color16)
SELECT (SELECT MAX(id) from roi_rec_inf),
'" + colorInformation.Information[0] + "', '" + colorInformation.Information[1] + "', '" + colorInformation.Information[2] + "', '" + colorInformation.Information[3] + "', '" + colorInformation.Information[4] + "', '" + colorInformation.Information[5] + "', '" + colorInformation.Information[6] + "', '" + colorInformation.Information[7] + "', '" + colorInformation.Information[8] + "', '" + colorInformation.Information[9] + "', '" + colorInformation.Information[10] + "', '" + colorInformation.Information[11] + "', '" + colorInformation.Information[12] + "', '" + colorInformation.Information[13] + "', '" + colorInformation.Information[14] + "', '" + colorInformation.Information[15] + "'";
mySqlClass.UsualSqlCommand(sqlCommand); // 插入颜色数据
}
private double[] ConvertHalconToLV(HTuple hv_Row1, HTuple hv_Column1, HTuple hv_Row2, HTuple hv_Column2)
{
double width = 0, height = 0;
if (hv_Row2 > hv_Row1)
{
width = hv_Row2 - hv_Row1;
}
if (hv_Column2 > hv_Column1)
{
height = hv_Column2 - hv_Column1;
}
double[] lvRoi = { hv_Column1, hv_Row1, width, height };// 需要传出的左上横纵坐标及宽,长信息
return lvRoi;
}
现在进行图像颜色识别,给定要识别的ROI区域及对应的图像和之前保存的颜色向量,函数返回匹配分值
private void MatchColor(HObject imageMatch)
{
VisionImage myImage = new VisionImage();
myImage.Type = ImageType.Rgb32;
LoadSelectedImage("F:\\\\tempImage.jpeg", ref myImage);
double[] lvROI = ConvertHalconToLV(Convert.ToDouble(dtSelect.Rows[0]["left_top_row"].ToString()), Convert.ToDouble(dtSelect.Rows[0]["left_top_column"].ToString()), Convert.ToDouble(dtSelect.Rows[0]["right_bottom_row"].ToString()), Convert.ToDouble(dtSelect.Rows[0]["right_bottom_column"].ToString()));
Roi rectangleRoi = new Roi(new RectangleContour(lvROI[0], lvROI[1], lvROI[2], lvROI[3])); // 矩形
qlCommand = "SELECT color1, color2, color3, color4, color5, color6, color7, color8, color9, color10, color11, color12, color13, color14, color15, color16 FROM color_match WHERE rec_id = '" + Convert.ToInt32(dtSelect.Rows[0]["id"].ToString()) + "';";
DataTable dtColor = mySqlClass.SelectDataUsual(sqlCommand);
double []colorValue = DTConvertToDouble(dtColor);
ColorInformation myColorInformation = new ColorInformation(new Collection<double>(colorValue));
Collection<int> scores = Algorithms.MatchColor(myImage, myColorInformation, rectangleRoi);
if (scores[0] < 700)
{
DoNGSomething(Convert.ToInt32(dtSelect.Rows[0]["id"].ToString()));
richTextBox1.Text = "NG";
}
else
{
DoOKSomething(Convert.ToInt32(dtSelect.Rows[0]["id"].ToString()));
richTextBox1.Text = "OK";
}
}
总结:
先在halcon窗口上划定ROI区域,将此ROI转换为LV中Roi类型,然后调用ColorInformation = Algorithms.LearnColor(image,roi,low,threshold)方法,该函数返回16行向量值 ColorInformation即为该区域的颜色分布
给定ROI区域(同样在halcon中划定并进行转换),调用Algorithms.MatchColor(image, ColorInformation, roi)进行指定区域的颜色识别,该方法返回一个匹配分值
在给定image值时,一定要将其typeImage类型设定为RGB32
评论
- 评论加载中...